Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(745)

Side by Side Diff: content/renderer/origin_trials/trial_token_unittest.cc

Issue 1752463002: Cleanup TrialToken in preparation of moving it to content/common. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/origin_trials/trial_token.h" 5 #include "content/renderer/origin_trials/trial_token.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string_piece.h" 9 #include "base/strings/string_piece.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 "1|Signature|abcdef|FeatureName|1458766277", 106 "1|Signature|abcdef|FeatureName|1458766277",
107 "1|Signature|data:text/plain,abcdef|FeatureName|1458766277", 107 "1|Signature|data:text/plain,abcdef|FeatureName|1458766277",
108 "1|Signature|javascript:alert(1)|FeatureName|1458766277"}; 108 "1|Signature|javascript:alert(1)|FeatureName|1458766277"};
109 const size_t kNumInvalidTokens = arraysize(kInvalidTokens); 109 const size_t kNumInvalidTokens = arraysize(kInvalidTokens);
110 110
111 } // namespace 111 } // namespace
112 112
113 class TrialTokenTest : public testing::Test { 113 class TrialTokenTest : public testing::Test {
114 public: 114 public:
115 TrialTokenTest() 115 TrialTokenTest()
116 : correct_public_key_( 116 : expected_origin_(GURL(kExpectedOrigin)),
117 invalid_origin_(GURL(kInvalidOrigin)),
118 insecure_origin_(GURL(kInsecureOrigin)),
119 correct_public_key_(
117 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey), 120 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey),
118 arraysize(kTestPublicKey))), 121 arraysize(kTestPublicKey))),
119 incorrect_public_key_( 122 incorrect_public_key_(
120 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey2), 123 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey2),
121 arraysize(kTestPublicKey2))) {} 124 arraysize(kTestPublicKey2))) {}
122 125
123 protected: 126 protected:
124 bool ValidateOrigin(TrialToken* token, const char* origin) { 127 bool ValidateOrigin(TrialToken* token, const url::Origin origin) {
125 return token->ValidateOrigin(origin); 128 return token->ValidateOrigin(origin);
126 } 129 }
127 130
128 bool ValidateFeatureName(TrialToken* token, const char* feature_name) { 131 bool ValidateFeatureName(TrialToken* token, const char* feature_name) {
129 return token->ValidateFeatureName(feature_name); 132 return token->ValidateFeatureName(feature_name);
130 } 133 }
131 134
132 bool ValidateDate(TrialToken* token, const base::Time& now) { 135 bool ValidateDate(TrialToken* token, const base::Time& now) {
133 return token->ValidateDate(now); 136 return token->ValidateDate(now);
134 } 137 }
135 138
136 bool ValidateSignature(TrialToken* token, 139 bool ValidateSignature(TrialToken* token,
137 const base::StringPiece& public_key) { 140 const base::StringPiece& public_key) {
138 return token->ValidateSignature(public_key); 141 return token->ValidateSignature(public_key);
139 } 142 }
140 143
141 const base::StringPiece& correct_public_key() { return correct_public_key_; } 144 base::StringPiece correct_public_key() { return correct_public_key_; }
142 const base::StringPiece& incorrect_public_key() { 145 base::StringPiece incorrect_public_key() { return incorrect_public_key_; }
143 return incorrect_public_key_; 146
144 } 147 const url::Origin expected_origin_;
148 const url::Origin invalid_origin_;
149 const url::Origin insecure_origin_;
145 150
146 private: 151 private:
147 base::StringPiece correct_public_key_; 152 base::StringPiece correct_public_key_;
148 base::StringPiece incorrect_public_key_; 153 base::StringPiece incorrect_public_key_;
149 }; 154 };
150 155
151 TEST_F(TrialTokenTest, ParseEmptyString) { 156 TEST_F(TrialTokenTest, ParseEmptyString) {
152 scoped_ptr<TrialToken> empty_token = TrialToken::Parse(""); 157 scoped_ptr<TrialToken> empty_token = TrialToken::Parse("");
153 EXPECT_FALSE(empty_token); 158 EXPECT_FALSE(empty_token);
154 } 159 }
155 160
156 TEST_F(TrialTokenTest, ParseInvalidStrings) { 161 TEST_F(TrialTokenTest, ParseInvalidStrings) {
157 for (size_t i = 0; i < kNumInvalidTokens; ++i) { 162 for (size_t i = 0; i < kNumInvalidTokens; ++i) {
158 scoped_ptr<TrialToken> empty_token = TrialToken::Parse(kInvalidTokens[i]); 163 scoped_ptr<TrialToken> empty_token = TrialToken::Parse(kInvalidTokens[i]);
159 EXPECT_FALSE(empty_token) << "Invalid trial token should not parse: " 164 EXPECT_FALSE(empty_token) << "Invalid trial token should not parse: "
160 << kInvalidTokens[i]; 165 << kInvalidTokens[i];
161 } 166 }
162 } 167 }
163 168
164 TEST_F(TrialTokenTest, ParseValidToken) { 169 TEST_F(TrialTokenTest, ParseValidToken) {
165 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken); 170 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken);
166 ASSERT_TRUE(token); 171 ASSERT_TRUE(token);
167 EXPECT_EQ(kExpectedVersion, token->version()); 172 EXPECT_EQ(kExpectedVersion, token->version());
168 EXPECT_EQ(kExpectedFeatureName, token->feature_name()); 173 EXPECT_EQ(kExpectedFeatureName, token->feature_name());
169 EXPECT_EQ(kExpectedSignature, token->signature()); 174 EXPECT_EQ(kExpectedSignature, token->signature());
170 EXPECT_EQ(kExpectedData, token->data()); 175 EXPECT_EQ(kExpectedData, token->data());
171 EXPECT_EQ(GURL(kExpectedOrigin), token->origin()); 176 EXPECT_EQ(expected_origin_, token->origin());
172 EXPECT_EQ(kExpectedExpiry, token->expiry_timestamp()); 177 EXPECT_EQ(base::Time::FromDoubleT(kExpectedExpiry), token->expiry_time());
173 } 178 }
174 179
175 TEST_F(TrialTokenTest, ValidateValidToken) { 180 TEST_F(TrialTokenTest, ValidateValidToken) {
176 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken); 181 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken);
177 ASSERT_TRUE(token); 182 ASSERT_TRUE(token);
178 EXPECT_TRUE(ValidateOrigin(token.get(), kExpectedOrigin)); 183 EXPECT_TRUE(ValidateOrigin(token.get(), expected_origin_));
179 EXPECT_FALSE(ValidateOrigin(token.get(), kInvalidOrigin)); 184 EXPECT_FALSE(ValidateOrigin(token.get(), invalid_origin_));
180 EXPECT_FALSE(ValidateOrigin(token.get(), kInsecureOrigin)); 185 EXPECT_FALSE(ValidateOrigin(token.get(), insecure_origin_));
181 EXPECT_TRUE(ValidateFeatureName(token.get(), kExpectedFeatureName)); 186 EXPECT_TRUE(ValidateFeatureName(token.get(), kExpectedFeatureName));
182 EXPECT_FALSE(ValidateFeatureName(token.get(), kInvalidFeatureName)); 187 EXPECT_FALSE(ValidateFeatureName(token.get(), kInvalidFeatureName));
183 EXPECT_FALSE(ValidateFeatureName( 188 EXPECT_FALSE(ValidateFeatureName(
184 token.get(), base::ToUpperASCII(kExpectedFeatureName).c_str())); 189 token.get(), base::ToUpperASCII(kExpectedFeatureName).c_str()));
185 EXPECT_FALSE(ValidateFeatureName( 190 EXPECT_FALSE(ValidateFeatureName(
186 token.get(), base::ToLowerASCII(kExpectedFeatureName).c_str())); 191 token.get(), base::ToLowerASCII(kExpectedFeatureName).c_str()));
187 EXPECT_TRUE( 192 EXPECT_TRUE(
188 ValidateDate(token.get(), base::Time::FromDoubleT(kValidTimestamp))); 193 ValidateDate(token.get(), base::Time::FromDoubleT(kValidTimestamp)));
189 EXPECT_FALSE( 194 EXPECT_FALSE(
190 ValidateDate(token.get(), base::Time::FromDoubleT(kInvalidTimestamp))); 195 ValidateDate(token.get(), base::Time::FromDoubleT(kInvalidTimestamp)));
191 } 196 }
192 197
193 TEST_F(TrialTokenTest, TokenIsAppropriateForOriginAndFeature) { 198 TEST_F(TrialTokenTest, TokenIsAppropriateForOriginAndFeature) {
194 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken); 199 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken);
195 ASSERT_TRUE(token); 200 ASSERT_TRUE(token);
196 EXPECT_TRUE(token->IsAppropriate(kExpectedOrigin, kExpectedFeatureName)); 201 EXPECT_TRUE(token->IsAppropriate(expected_origin_, kExpectedFeatureName));
197 EXPECT_FALSE(token->IsAppropriate(kExpectedOrigin, 202 EXPECT_FALSE(token->IsAppropriate(expected_origin_,
198 base::ToUpperASCII(kExpectedFeatureName))); 203 base::ToUpperASCII(kExpectedFeatureName)));
199 EXPECT_FALSE(token->IsAppropriate(kExpectedOrigin, 204 EXPECT_FALSE(token->IsAppropriate(expected_origin_,
200 base::ToLowerASCII(kExpectedFeatureName))); 205 base::ToLowerASCII(kExpectedFeatureName)));
201 EXPECT_FALSE(token->IsAppropriate(kInvalidOrigin, kExpectedFeatureName)); 206 EXPECT_FALSE(token->IsAppropriate(invalid_origin_, kExpectedFeatureName));
202 EXPECT_FALSE(token->IsAppropriate(kInsecureOrigin, kExpectedFeatureName)); 207 EXPECT_FALSE(token->IsAppropriate(insecure_origin_, kExpectedFeatureName));
203 EXPECT_FALSE(token->IsAppropriate(kExpectedOrigin, kInvalidFeatureName)); 208 EXPECT_FALSE(token->IsAppropriate(expected_origin_, kInvalidFeatureName));
204 } 209 }
205 210
206 TEST_F(TrialTokenTest, ValidateValidSignature) { 211 TEST_F(TrialTokenTest, ValidateValidSignature) {
207 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken); 212 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken);
208 ASSERT_TRUE(token); 213 ASSERT_TRUE(token);
209 EXPECT_TRUE(ValidateSignature(token.get(), correct_public_key())); 214 EXPECT_TRUE(ValidateSignature(token.get(), correct_public_key()));
210 } 215 }
211 216
212 TEST_F(TrialTokenTest, ValidateInvalidSignature) { 217 TEST_F(TrialTokenTest, ValidateInvalidSignature) {
213 scoped_ptr<TrialToken> token = TrialToken::Parse(kInvalidSignatureToken); 218 scoped_ptr<TrialToken> token = TrialToken::Parse(kInvalidSignatureToken);
(...skipping 14 matching lines...) Expand all
228 EXPECT_FALSE(token->IsValid(base::Time::FromDoubleT(kValidTimestamp), 233 EXPECT_FALSE(token->IsValid(base::Time::FromDoubleT(kValidTimestamp),
229 incorrect_public_key())); 234 incorrect_public_key()));
230 } 235 }
231 236
232 TEST_F(TrialTokenTest, ValidateWhenNotExpired) { 237 TEST_F(TrialTokenTest, ValidateWhenNotExpired) {
233 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken); 238 scoped_ptr<TrialToken> token = TrialToken::Parse(kSampleToken);
234 ASSERT_TRUE(token); 239 ASSERT_TRUE(token);
235 } 240 }
236 241
237 } // namespace content 242 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698