http_log_util_unittest.cc revision 116680a4aac90f2aa7413d9095a592090648e557
123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "net/http/http_log_util.h"
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace net {
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST(HttpLogUtilTest, ElideHeaderValueForNetLog) {
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Only elide for appropriate log level.
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Cookie", "name=value"));
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("name=value", ElideHeaderValueForNetLog(
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_ALL_BUT_BYTES, "Cookie", "name=value"));
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Headers are compared case insensitively.
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "cOoKiE", "name=value"));
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // These headers should be completely elided.
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Set-Cookie", "name=value"));
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Set-Cookie2", "name=value"));
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Authorization", "Basic 1234"));
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Proxy-Authorization", "Basic 1234"));
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Unknown headers should pass through.
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("value", ElideHeaderValueForNetLog(
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Boring", "value"));
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Basic and Digest auth challenges are public.
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Basic realm=test", ElideHeaderValueForNetLog(
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "WWW-Authenticate", "Basic realm=test"));
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Digest realm=test", ElideHeaderValueForNetLog(
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "WWW-Authenticate", "Digest realm=test"));
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Basic realm=test", ElideHeaderValueForNetLog(
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA,
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Proxy-Authenticate", "Basic realm=test"));
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Digest realm=test", ElideHeaderValueForNetLog(
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA,
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Proxy-Authenticate", "Digest realm=test"));
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Multi-round mechanisms partially elided.
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("NTLM [4 bytes were stripped]", ElideHeaderValueForNetLog(
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "WWW-Authenticate", "NTLM 1234"));
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("NTLM [4 bytes were stripped]", ElideHeaderValueForNetLog(
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "Proxy-Authenticate", "NTLM 1234"));
5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Leave whitespace intact.
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("NTLM  [4 bytes were stripped] ", ElideHeaderValueForNetLog(
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NetLog::LOG_STRIP_PRIVATE_DATA, "WWW-Authenticate", "NTLM  1234 "));
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Extra elisions for SPDY_PROXY_AUTH_ORIGIN.
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(SPDY_PROXY_AUTH_ORIGIN)
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_EQ("ps=123, [7 bytes were stripped], c=foo, v=bar",
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            ElideHeaderValueForNetLog(
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                NetLog::LOG_STRIP_PRIVATE_DATA,
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                "Chrome-Proxy", "ps=123, sid=456, c=foo, v=bar"));
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_EQ("[7 bytes were stripped], ps=123, c=foo, v=bar",
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            ElideHeaderValueForNetLog(
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                NetLog::LOG_STRIP_PRIVATE_DATA,
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                "Chrome-Proxy", "sid=456, ps=123, c=foo, v=bar"));
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_EQ("ps=123, c=foo, v=bar, [7 bytes were stripped]",
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            ElideHeaderValueForNetLog(
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                NetLog::LOG_STRIP_PRIVATE_DATA,
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                "Chrome-Proxy", "ps=123, c=foo, v=bar, sid=456"));
7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif
7223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namspace net
75