OLD | NEW |
---|---|
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/common/origin_trials/trial_token.h" | 5 #include "content/common/origin_trials/trial_token.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/strings/string_piece.h" | 10 #include "base/strings/string_piece.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
60 // Generate this token with the command (in tools/origin_trials): | 60 // Generate this token with the command (in tools/origin_trials): |
61 // generate_token.py valid.example.com Frobulate --expire-timestamp=1458766277 | 61 // generate_token.py valid.example.com Frobulate --expire-timestamp=1458766277 |
62 const char* kSampleToken = | 62 const char* kSampleToken = |
63 "Ap+Q/Qm0ELadZql+dlEGSwnAVsFZKgCEtUZg8idQC3uekkIeSZIY1tftoYdrwhqj" | 63 "Ap+Q/Qm0ELadZql+dlEGSwnAVsFZKgCEtUZg8idQC3uekkIeSZIY1tftoYdrwhqj" |
64 "7FO5L22sNvkZZnacLvmfNwsAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" | 64 "7FO5L22sNvkZZnacLvmfNwsAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" |
65 "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" | 65 "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" |
66 "IjogMTQ1ODc2NjI3N30="; | 66 "IjogMTQ1ODc2NjI3N30="; |
67 | 67 |
68 const char* kExpectedFeatureName = "Frobulate"; | 68 const char* kExpectedFeatureName = "Frobulate"; |
69 const char* kExpectedOrigin = "https://valid.example.com"; | 69 const char* kExpectedOrigin = "https://valid.example.com"; |
70 const char* kExpectedWildcardOrigin = "https://example.com"; | |
71 const char* kExpectedMultipleSubdomainOrigin = | |
72 "https://part1.part2.part3.example.com"; | |
70 const uint64_t kExpectedExpiry = 1458766277; | 73 const uint64_t kExpectedExpiry = 1458766277; |
71 | 74 |
72 // The token should not be valid for this origin, or for this feature. | 75 // The token should not be valid for this origin, or for this feature. |
73 const char* kInvalidOrigin = "https://invalid.example.com"; | 76 const char* kInvalidOrigin = "https://invalid.example.com"; |
74 const char* kInsecureOrigin = "http://valid.example.com"; | 77 const char* kInsecureOrigin = "http://valid.example.com"; |
78 const char* kIncorrectPortOrigin = "https://valid.example.com:444"; | |
79 const char* kIncorrectDomainOrigin = "https://valid.example2.com"; | |
iclelland
2016/10/12 04:18:16
Can you add one more bad domain for wildcard testi
| |
75 const char* kInvalidFeatureName = "Grokalyze"; | 80 const char* kInvalidFeatureName = "Grokalyze"; |
76 | 81 |
77 // The token should be valid if the current time is kValidTimestamp or earlier. | 82 // The token should be valid if the current time is kValidTimestamp or earlier. |
78 double kValidTimestamp = 1458766276.0; | 83 double kValidTimestamp = 1458766276.0; |
79 | 84 |
80 // The token should be invalid if the current time is kInvalidTimestamp or | 85 // The token should be invalid if the current time is kInvalidTimestamp or |
81 // later. | 86 // later. |
82 double kInvalidTimestamp = 1458766278.0; | 87 double kInvalidTimestamp = 1458766278.0; |
83 | 88 |
84 // Well-formed trial token with an invalid signature. | 89 // Well-formed trial token with an invalid signature. |
(...skipping 20 matching lines...) Expand all Loading... | |
105 const char kIncorrectVersionToken[] = | 110 const char kIncorrectVersionToken[] = |
106 "KlH8wVLT5o59uDvlJESorMDjzgWnvG1hmIn/GiT9Ng3f45ratVeiXCNTeaJheOaG" | 111 "KlH8wVLT5o59uDvlJESorMDjzgWnvG1hmIn/GiT9Ng3f45ratVeiXCNTeaJheOaG" |
107 "A6kX4ir4Amv8aHVC+OJHZQkAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" | 112 "A6kX4ir4Amv8aHVC+OJHZQkAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" |
108 "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" | 113 "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" |
109 "IjogMTQ1ODc2NjI3N30="; | 114 "IjogMTQ1ODc2NjI3N30="; |
110 | 115 |
111 const char kSampleTokenJSON[] = | 116 const char kSampleTokenJSON[] = |
112 "{\"origin\": \"https://valid.example.com:443\", \"feature\": " | 117 "{\"origin\": \"https://valid.example.com:443\", \"feature\": " |
113 "\"Frobulate\", \"expiry\": 1458766277}"; | 118 "\"Frobulate\", \"expiry\": 1458766277}"; |
114 | 119 |
120 const char kSampleNonWildcardTokenJSON[] = | |
121 "{\"origin\": \"https://valid.example.com:443\", \"isWildcard\": false, " | |
122 "\"feature\": \"Frobulate\", \"expiry\": 1458766277}"; | |
123 | |
124 const char kSampleWildcardTokenJSON[] = | |
125 "{\"origin\": \"https://example.com:443\", \"isWildcard\": true, " | |
126 "\"feature\": \"Frobulate\", \"expiry\": 1458766277}"; | |
127 | |
115 // Various ill-formed trial tokens. These should all fail to parse. | 128 // Various ill-formed trial tokens. These should all fail to parse. |
116 const char* kInvalidTokens[] = { | 129 const char* kInvalidTokens[] = { |
117 // Invalid - Not JSON at all | 130 // Invalid - Not JSON at all |
118 "abcde", | 131 "abcde", |
119 // Invalid JSON | 132 // Invalid JSON |
120 "{", | 133 "{", |
121 // Not an object | 134 // Not an object |
122 "\"abcde\"", | 135 "\"abcde\"", |
123 "123.4", | 136 "123.4", |
124 "[0, 1, 2]", | 137 "[0, 1, 2]", |
125 // Missing keys | 138 // Missing keys |
126 "{}", | 139 "{}", |
127 "{\"something\": 1}", | 140 "{\"something\": 1}", |
128 "{\"origin\": \"https://a.a\"}", | 141 "{\"origin\": \"https://a.a\"}", |
129 "{\"origin\": \"https://a.a\", \"feature\": \"a\"}" | 142 "{\"origin\": \"https://a.a\", \"feature\": \"a\"}", |
iclelland
2016/10/12 04:18:16
Good catch
| |
130 "{\"origin\": \"https://a.a\", \"expiry\": 1458766277}", | 143 "{\"origin\": \"https://a.a\", \"expiry\": 1458766277}", |
131 "{\"feature\": \"FeatureName\", \"expiry\": 1458766277}", | 144 "{\"feature\": \"FeatureName\", \"expiry\": 1458766277}", |
132 // Incorrect types | 145 // Incorrect types |
133 "{\"origin\": 1, \"feature\": \"a\", \"expiry\": 1458766277}", | 146 "{\"origin\": 1, \"feature\": \"a\", \"expiry\": 1458766277}", |
134 "{\"origin\": \"https://a.a\", \"feature\": 1, \"expiry\": 1458766277}", | 147 "{\"origin\": \"https://a.a\", \"feature\": 1, \"expiry\": 1458766277}", |
135 "{\"origin\": \"https://a.a\", \"feature\": \"a\", \"expiry\": \"1\"}", | 148 "{\"origin\": \"https://a.a\", \"feature\": \"a\", \"expiry\": \"1\"}", |
149 "{\"origin\": \"https://a.a\", \"isWildcard\": \"true\", \"feature\": " | |
150 "\"a\", \"expiry\": 1458766277}", | |
151 "{\"origin\": \"https://a.a\", \"isWildcard\": 1, \"feature\": \"a\", " | |
152 "\"expiry\": 1458766277}", | |
136 // Negative expiry timestamp | 153 // Negative expiry timestamp |
137 "{\"origin\": \"https://a.a\", \"feature\": \"a\", \"expiry\": -1}", | 154 "{\"origin\": \"https://a.a\", \"feature\": \"a\", \"expiry\": -1}", |
138 // Origin not a proper origin URL | 155 // Origin not a proper origin URL |
139 "{\"origin\": \"abcdef\", \"feature\": \"a\", \"expiry\": 1458766277}", | 156 "{\"origin\": \"abcdef\", \"feature\": \"a\", \"expiry\": 1458766277}", |
140 "{\"origin\": \"data:text/plain,abcdef\", \"feature\": \"a\", \"expiry\": " | 157 "{\"origin\": \"data:text/plain,abcdef\", \"feature\": \"a\", \"expiry\": " |
141 "1458766277}", | 158 "1458766277}", |
142 "{\"origin\": \"javascript:alert(1)\", \"feature\": \"a\", \"expiry\": " | 159 "{\"origin\": \"javascript:alert(1)\", \"feature\": \"a\", \"expiry\": " |
143 "1458766277}"}; | 160 "1458766277}", |
161 }; | |
144 | 162 |
145 } // namespace | 163 } // namespace |
146 | 164 |
147 class TrialTokenTest : public testing::TestWithParam<const char*> { | 165 class TrialTokenTest : public testing::TestWithParam<const char*> { |
148 public: | 166 public: |
149 TrialTokenTest() | 167 TrialTokenTest() |
150 : expected_origin_(GURL(kExpectedOrigin)), | 168 : expected_origin_(GURL(kExpectedOrigin)), |
169 expected_wildcard_origin_(GURL(kExpectedWildcardOrigin)), | |
170 expected_multiple_subdomain_origin_( | |
171 GURL(kExpectedMultipleSubdomainOrigin)), | |
151 invalid_origin_(GURL(kInvalidOrigin)), | 172 invalid_origin_(GURL(kInvalidOrigin)), |
152 insecure_origin_(GURL(kInsecureOrigin)), | 173 insecure_origin_(GURL(kInsecureOrigin)), |
174 incorrect_port_origin_(GURL(kIncorrectPortOrigin)), | |
175 incorrect_domain_origin_(GURL(kIncorrectDomainOrigin)), | |
153 expected_expiry_(base::Time::FromDoubleT(kExpectedExpiry)), | 176 expected_expiry_(base::Time::FromDoubleT(kExpectedExpiry)), |
154 valid_timestamp_(base::Time::FromDoubleT(kValidTimestamp)), | 177 valid_timestamp_(base::Time::FromDoubleT(kValidTimestamp)), |
155 invalid_timestamp_(base::Time::FromDoubleT(kInvalidTimestamp)), | 178 invalid_timestamp_(base::Time::FromDoubleT(kInvalidTimestamp)), |
156 correct_public_key_( | 179 correct_public_key_( |
157 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey), | 180 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey), |
158 arraysize(kTestPublicKey))), | 181 arraysize(kTestPublicKey))), |
159 incorrect_public_key_( | 182 incorrect_public_key_( |
160 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey2), | 183 base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey2), |
161 arraysize(kTestPublicKey2))) {} | 184 arraysize(kTestPublicKey2))) {} |
162 | 185 |
(...skipping 24 matching lines...) Expand all Loading... | |
187 } | 210 } |
188 | 211 |
189 bool ValidateDate(TrialToken* token, const base::Time& now) { | 212 bool ValidateDate(TrialToken* token, const base::Time& now) { |
190 return token->ValidateDate(now); | 213 return token->ValidateDate(now); |
191 } | 214 } |
192 | 215 |
193 base::StringPiece correct_public_key() { return correct_public_key_; } | 216 base::StringPiece correct_public_key() { return correct_public_key_; } |
194 base::StringPiece incorrect_public_key() { return incorrect_public_key_; } | 217 base::StringPiece incorrect_public_key() { return incorrect_public_key_; } |
195 | 218 |
196 const url::Origin expected_origin_; | 219 const url::Origin expected_origin_; |
220 const url::Origin expected_wildcard_origin_; | |
221 const url::Origin expected_multiple_subdomain_origin_; | |
197 const url::Origin invalid_origin_; | 222 const url::Origin invalid_origin_; |
198 const url::Origin insecure_origin_; | 223 const url::Origin insecure_origin_; |
224 const url::Origin incorrect_port_origin_; | |
225 const url::Origin incorrect_domain_origin_; | |
199 | 226 |
200 const base::Time expected_expiry_; | 227 const base::Time expected_expiry_; |
201 const base::Time valid_timestamp_; | 228 const base::Time valid_timestamp_; |
202 const base::Time invalid_timestamp_; | 229 const base::Time invalid_timestamp_; |
203 | 230 |
204 private: | 231 private: |
205 base::StringPiece correct_public_key_; | 232 base::StringPiece correct_public_key_; |
206 base::StringPiece incorrect_public_key_; | 233 base::StringPiece incorrect_public_key_; |
207 }; | 234 }; |
208 | 235 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
267 std::unique_ptr<TrialToken> empty_token = Parse(GetParam()); | 294 std::unique_ptr<TrialToken> empty_token = Parse(GetParam()); |
268 EXPECT_FALSE(empty_token) << "Invalid trial token should not parse."; | 295 EXPECT_FALSE(empty_token) << "Invalid trial token should not parse."; |
269 } | 296 } |
270 | 297 |
271 INSTANTIATE_TEST_CASE_P(, TrialTokenTest, ::testing::ValuesIn(kInvalidTokens)); | 298 INSTANTIATE_TEST_CASE_P(, TrialTokenTest, ::testing::ValuesIn(kInvalidTokens)); |
272 | 299 |
273 TEST_F(TrialTokenTest, ParseValidToken) { | 300 TEST_F(TrialTokenTest, ParseValidToken) { |
274 std::unique_ptr<TrialToken> token = Parse(kSampleTokenJSON); | 301 std::unique_ptr<TrialToken> token = Parse(kSampleTokenJSON); |
275 ASSERT_TRUE(token); | 302 ASSERT_TRUE(token); |
276 EXPECT_EQ(kExpectedFeatureName, token->feature_name()); | 303 EXPECT_EQ(kExpectedFeatureName, token->feature_name()); |
304 EXPECT_FALSE(token->is_wildcard_origin()); | |
277 EXPECT_EQ(expected_origin_, token->origin()); | 305 EXPECT_EQ(expected_origin_, token->origin()); |
278 EXPECT_EQ(expected_expiry_, token->expiry_time()); | 306 EXPECT_EQ(expected_expiry_, token->expiry_time()); |
279 } | 307 } |
280 | 308 |
309 TEST_F(TrialTokenTest, ParseValidNonWildcardToken) { | |
310 std::unique_ptr<TrialToken> token = Parse(kSampleNonWildcardTokenJSON); | |
311 ASSERT_TRUE(token); | |
312 EXPECT_EQ(kExpectedFeatureName, token->feature_name()); | |
313 EXPECT_FALSE(token->is_wildcard_origin()); | |
314 EXPECT_EQ(expected_origin_, token->origin()); | |
315 EXPECT_EQ(expected_expiry_, token->expiry_time()); | |
316 } | |
317 | |
318 TEST_F(TrialTokenTest, ParseValidWildcardToken) { | |
319 std::unique_ptr<TrialToken> token = Parse(kSampleWildcardTokenJSON); | |
320 ASSERT_TRUE(token); | |
321 EXPECT_EQ(kExpectedFeatureName, token->feature_name()); | |
322 EXPECT_TRUE(token->is_wildcard_origin()); | |
323 EXPECT_EQ(kExpectedWildcardOrigin, token->origin().Serialize()); | |
324 EXPECT_EQ(expected_wildcard_origin_, token->origin()); | |
325 EXPECT_EQ(expected_expiry_, token->expiry_time()); | |
326 } | |
327 | |
281 TEST_F(TrialTokenTest, ValidateValidToken) { | 328 TEST_F(TrialTokenTest, ValidateValidToken) { |
282 std::unique_ptr<TrialToken> token = Parse(kSampleTokenJSON); | 329 std::unique_ptr<TrialToken> token = Parse(kSampleTokenJSON); |
283 ASSERT_TRUE(token); | 330 ASSERT_TRUE(token); |
284 EXPECT_TRUE(ValidateOrigin(token.get(), expected_origin_)); | 331 EXPECT_TRUE(ValidateOrigin(token.get(), expected_origin_)); |
285 EXPECT_FALSE(ValidateOrigin(token.get(), invalid_origin_)); | 332 EXPECT_FALSE(ValidateOrigin(token.get(), invalid_origin_)); |
286 EXPECT_FALSE(ValidateOrigin(token.get(), insecure_origin_)); | 333 EXPECT_FALSE(ValidateOrigin(token.get(), insecure_origin_)); |
334 EXPECT_FALSE(ValidateOrigin(token.get(), incorrect_port_origin_)); | |
335 EXPECT_FALSE(ValidateOrigin(token.get(), incorrect_domain_origin_)); | |
287 EXPECT_TRUE(ValidateFeatureName(token.get(), kExpectedFeatureName)); | 336 EXPECT_TRUE(ValidateFeatureName(token.get(), kExpectedFeatureName)); |
288 EXPECT_FALSE(ValidateFeatureName(token.get(), kInvalidFeatureName)); | 337 EXPECT_FALSE(ValidateFeatureName(token.get(), kInvalidFeatureName)); |
289 EXPECT_FALSE(ValidateFeatureName( | 338 EXPECT_FALSE(ValidateFeatureName( |
290 token.get(), base::ToUpperASCII(kExpectedFeatureName).c_str())); | 339 token.get(), base::ToUpperASCII(kExpectedFeatureName).c_str())); |
291 EXPECT_FALSE(ValidateFeatureName( | 340 EXPECT_FALSE(ValidateFeatureName( |
292 token.get(), base::ToLowerASCII(kExpectedFeatureName).c_str())); | 341 token.get(), base::ToLowerASCII(kExpectedFeatureName).c_str())); |
293 EXPECT_TRUE(ValidateDate(token.get(), valid_timestamp_)); | 342 EXPECT_TRUE(ValidateDate(token.get(), valid_timestamp_)); |
294 EXPECT_FALSE(ValidateDate(token.get(), invalid_timestamp_)); | 343 EXPECT_FALSE(ValidateDate(token.get(), invalid_timestamp_)); |
295 } | 344 } |
296 | 345 |
346 TEST_F(TrialTokenTest, ValidateValidWildcardToken) { | |
347 std::unique_ptr<TrialToken> token = Parse(kSampleWildcardTokenJSON); | |
348 ASSERT_TRUE(token); | |
349 EXPECT_TRUE(ValidateOrigin(token.get(), expected_origin_)); | |
350 EXPECT_TRUE(ValidateOrigin(token.get(), expected_wildcard_origin_)); | |
351 EXPECT_TRUE(ValidateOrigin(token.get(), expected_multiple_subdomain_origin_)); | |
352 EXPECT_FALSE(ValidateOrigin(token.get(), insecure_origin_)); | |
353 EXPECT_FALSE(ValidateOrigin(token.get(), incorrect_port_origin_)); | |
354 EXPECT_FALSE(ValidateOrigin(token.get(), incorrect_domain_origin_)); | |
355 } | |
356 | |
297 TEST_F(TrialTokenTest, TokenIsValid) { | 357 TEST_F(TrialTokenTest, TokenIsValid) { |
298 std::unique_ptr<TrialToken> token = Parse(kSampleTokenJSON); | 358 std::unique_ptr<TrialToken> token = Parse(kSampleTokenJSON); |
299 ASSERT_TRUE(token); | 359 ASSERT_TRUE(token); |
300 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, | 360 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, |
301 token->IsValid(expected_origin_, valid_timestamp_)); | 361 token->IsValid(expected_origin_, valid_timestamp_)); |
302 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | 362 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, |
303 token->IsValid(invalid_origin_, valid_timestamp_)); | 363 token->IsValid(invalid_origin_, valid_timestamp_)); |
304 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | 364 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, |
305 token->IsValid(insecure_origin_, valid_timestamp_)); | 365 token->IsValid(insecure_origin_, valid_timestamp_)); |
366 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | |
367 token->IsValid(incorrect_port_origin_, valid_timestamp_)); | |
306 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Expired, | 368 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Expired, |
307 token->IsValid(expected_origin_, invalid_timestamp_)); | 369 token->IsValid(expected_origin_, invalid_timestamp_)); |
308 } | 370 } |
371 | |
372 TEST_F(TrialTokenTest, WildcardTokenIsValid) { | |
373 std::unique_ptr<TrialToken> token = Parse(kSampleWildcardTokenJSON); | |
374 ASSERT_TRUE(token); | |
375 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, | |
376 token->IsValid(expected_origin_, valid_timestamp_)); | |
377 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, | |
378 token->IsValid(expected_wildcard_origin_, valid_timestamp_)); | |
379 EXPECT_EQ( | |
380 blink::WebOriginTrialTokenStatus::Success, | |
381 token->IsValid(expected_multiple_subdomain_origin_, valid_timestamp_)); | |
382 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | |
383 token->IsValid(incorrect_domain_origin_, valid_timestamp_)); | |
384 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | |
385 token->IsValid(insecure_origin_, valid_timestamp_)); | |
386 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | |
387 token->IsValid(incorrect_port_origin_, valid_timestamp_)); | |
388 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Expired, | |
389 token->IsValid(expected_origin_, invalid_timestamp_)); | |
390 } | |
309 | 391 |
310 // Test overall extraction, to ensure output status matches returned token | 392 // Test overall extraction, to ensure output status matches returned token |
311 TEST_F(TrialTokenTest, ExtractValidToken) { | 393 TEST_F(TrialTokenTest, ExtractValidToken) { |
312 blink::WebOriginTrialTokenStatus status; | 394 blink::WebOriginTrialTokenStatus status; |
313 std::unique_ptr<TrialToken> token = | 395 std::unique_ptr<TrialToken> token = |
314 TrialToken::From(kSampleToken, correct_public_key(), &status); | 396 TrialToken::From(kSampleToken, correct_public_key(), &status); |
315 EXPECT_TRUE(token); | 397 EXPECT_TRUE(token); |
316 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, status); | 398 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, status); |
317 } | 399 } |
318 | 400 |
319 TEST_F(TrialTokenTest, ExtractInvalidSignature) { | 401 TEST_F(TrialTokenTest, ExtractInvalidSignature) { |
320 blink::WebOriginTrialTokenStatus status; | 402 blink::WebOriginTrialTokenStatus status; |
321 std::unique_ptr<TrialToken> token = | 403 std::unique_ptr<TrialToken> token = |
322 TrialToken::From(kSampleToken, incorrect_public_key(), &status); | 404 TrialToken::From(kSampleToken, incorrect_public_key(), &status); |
323 EXPECT_FALSE(token); | 405 EXPECT_FALSE(token); |
324 EXPECT_EQ(blink::WebOriginTrialTokenStatus::InvalidSignature, status); | 406 EXPECT_EQ(blink::WebOriginTrialTokenStatus::InvalidSignature, status); |
325 } | 407 } |
326 | 408 |
327 TEST_F(TrialTokenTest, ExtractMalformedToken) { | 409 TEST_F(TrialTokenTest, ExtractMalformedToken) { |
328 blink::WebOriginTrialTokenStatus status; | 410 blink::WebOriginTrialTokenStatus status; |
329 std::unique_ptr<TrialToken> token = | 411 std::unique_ptr<TrialToken> token = |
330 TrialToken::From(kIncorrectLengthToken, correct_public_key(), &status); | 412 TrialToken::From(kIncorrectLengthToken, correct_public_key(), &status); |
331 EXPECT_FALSE(token); | 413 EXPECT_FALSE(token); |
332 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Malformed, status); | 414 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Malformed, status); |
333 } | 415 } |
334 | 416 |
335 } // namespace content | 417 } // namespace content |
OLD | NEW |