http_log_util_unittest.cc revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
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(
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "Cookie", "name=value"));
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("name=value", ElideHeaderValueForNetLog(
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::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(
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::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(
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "Set-Cookie", "name=value"));
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "Set-Cookie2", "name=value"));
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "Authorization", "Basic 1234"));
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if !defined(SPDY_PROXY_AUTH_ORIGIN)
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[10 bytes were stripped]", ElideHeaderValueForNetLog(
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA,
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Proxy-Authorization", "Basic 1234"));
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Unknown headers should pass through.
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("value", ElideHeaderValueForNetLog(
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "Boring", "value"));
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Basic and Digest auth challenges are public.
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Basic realm=test", ElideHeaderValueForNetLog(
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA,
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "WWW-Authenticate", "Basic realm=test"));
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Digest realm=test", ElideHeaderValueForNetLog(
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA,
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "WWW-Authenticate", "Digest realm=test"));
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if !defined(SPDY_PROXY_AUTH_ORIGIN)
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Basic realm=test", ElideHeaderValueForNetLog(
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA,
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Proxy-Authenticate", "Basic realm=test"));
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("Digest realm=test", ElideHeaderValueForNetLog(
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA,
5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Proxy-Authenticate", "Digest realm=test"));
5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Multi-round mechanisms partially elided.
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("NTLM [4 bytes were stripped]", ElideHeaderValueForNetLog(
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "WWW-Authenticate", "NTLM 1234"));
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if !defined(SPDY_PROXY_AUTH_ORIGIN)
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("NTLM [4 bytes were stripped]", ElideHeaderValueForNetLog(
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "Proxy-Authenticate", "NTLM 1234"));
6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif
6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Leave whitespace intact.
6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("NTLM  [4 bytes were stripped] ", ElideHeaderValueForNetLog(
6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_STRIP_PRIVATE_DATA, "WWW-Authenticate", "NTLM  1234 "));
6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Extra elisions for SPDY_PROXY_AUTH_ORIGIN.
6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(SPDY_PROXY_AUTH_ORIGIN)
6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[elided]", ElideHeaderValueForNetLog(
6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_ALL_BUT_BYTES,
7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Proxy-Authenticate", "Basic realm=test"));
7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  EXPECT_EQ("[elided]", ElideHeaderValueForNetLog(
7223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      net::NetLog::LOG_ALL_BUT_BYTES, "Proxy-Authorization", "Basic 1234"));
7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
7523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
7623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namspace net
77