// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/spdy/spdy_credential_state.h" #include "net/base/host_port_pair.h" #include "testing/platform_test.h" namespace net { class SpdyCredentialStateTest : public PlatformTest { public: SpdyCredentialStateTest() : state_(4), origin1_("https://1.com"), origin2_("https://2.com"), origin3_("https://3.com"), origin4_("https://4.com"), origin5_("https://5.com"), origin6_("https://6.com"), origin11_("https://11.com"), host1_("https://www.1.com:443") { } protected: SpdyCredentialState state_; const GURL origin1_; const GURL origin2_; const GURL origin3_; const GURL origin4_; const GURL origin5_; const GURL origin6_; const GURL origin11_; const GURL host1_; DISALLOW_COPY_AND_ASSIGN(SpdyCredentialStateTest); }; TEST_F(SpdyCredentialStateTest, HasCredentialReturnsFalseWhenEmpty) { EXPECT_FALSE(state_.HasCredential(origin1_)); EXPECT_FALSE(state_.HasCredential(origin2_)); EXPECT_FALSE(state_.HasCredential(origin3_)); } TEST_F(SpdyCredentialStateTest, HasCredentialReturnsTrueWhenAdded) { state_.SetHasCredential(origin1_); EXPECT_TRUE(state_.HasCredential(origin1_)); EXPECT_TRUE(state_.HasCredential(host1_)); EXPECT_FALSE(state_.HasCredential(origin11_)); EXPECT_FALSE(state_.HasCredential(origin2_)); EXPECT_FALSE(state_.HasCredential(origin3_)); } TEST_F(SpdyCredentialStateTest, SetCredentialAddsToEndOfList) { EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); EXPECT_EQ(3u, (state_.SetHasCredential(origin3_))); } TEST_F(SpdyCredentialStateTest, SetReturnsPositionIfAlreadyInList) { EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); } TEST_F(SpdyCredentialStateTest, SetReplacesOldestElementWhenFull) { EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); EXPECT_EQ(3u, (state_.SetHasCredential(origin3_))); EXPECT_EQ(4u, (state_.SetHasCredential(origin4_))); EXPECT_EQ(1u, (state_.SetHasCredential(origin5_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin6_))); EXPECT_EQ(3u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(4u, (state_.SetHasCredential(origin2_))); } TEST_F(SpdyCredentialStateTest, ResizeAddsEmptySpaceAtEnd) { EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); EXPECT_EQ(3u, (state_.SetHasCredential(origin3_))); EXPECT_EQ(4u, (state_.SetHasCredential(origin4_))); state_.Resize(6); EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); EXPECT_EQ(3u, (state_.SetHasCredential(origin3_))); EXPECT_EQ(4u, (state_.SetHasCredential(origin4_))); EXPECT_EQ(5u, (state_.SetHasCredential(origin5_))); EXPECT_EQ(6u, (state_.SetHasCredential(origin6_))); } TEST_F(SpdyCredentialStateTest, ResizeTrunatesFromEnd) { EXPECT_EQ(1u, (state_.SetHasCredential(origin1_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin2_))); EXPECT_EQ(3u, (state_.SetHasCredential(origin3_))); EXPECT_EQ(4u, (state_.SetHasCredential(origin4_))); state_.Resize(2); EXPECT_TRUE(state_.HasCredential(origin1_)); EXPECT_TRUE(state_.HasCredential(origin2_)); EXPECT_FALSE(state_.HasCredential(origin3_)); EXPECT_FALSE(state_.HasCredential(origin4_)); EXPECT_EQ(1u, (state_.SetHasCredential(origin5_))); EXPECT_EQ(2u, (state_.SetHasCredential(origin6_))); } } // namespace net