| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_validator.h" | 5 #include "content/common/origin_trials/trial_token_validator.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 const url::Origin appropriate_origin_; | 178 const url::Origin appropriate_origin_; |
| 179 const url::Origin inappropriate_origin_; | 179 const url::Origin inappropriate_origin_; |
| 180 const url::Origin insecure_origin_; | 180 const url::Origin insecure_origin_; |
| 181 | 181 |
| 182 scoped_refptr<net::HttpResponseHeaders> response_headers_; | 182 scoped_refptr<net::HttpResponseHeaders> response_headers_; |
| 183 | 183 |
| 184 private: | 184 private: |
| 185 TestContentClient test_content_client_; | 185 TestContentClient test_content_client_; |
| 186 }; | 186 }; |
| 187 | 187 |
| 188 TEST_F(TrialTokenValidatorTest, ValidateValidToken) { | 188 // Flaky on Android swarming bots: crbug.com/672294 |
| 189 #if defined(OS_ANDROID) |
| 190 #define MAYBE_ValidateValidToken DISABLED_ValidateValidToken |
| 191 #else |
| 192 #define MAYBE_ValidateValidToken ValidateValidToken |
| 193 #endif |
| 194 TEST_F(TrialTokenValidatorTest, MAYBE_ValidateValidToken) { |
| 189 std::string feature; | 195 std::string feature; |
| 190 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, | 196 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, |
| 191 TrialTokenValidator::ValidateToken(kSampleToken, | 197 TrialTokenValidator::ValidateToken(kSampleToken, |
| 192 appropriate_origin_, &feature)); | 198 appropriate_origin_, &feature)); |
| 193 EXPECT_EQ(kAppropriateFeatureName, feature); | 199 EXPECT_EQ(kAppropriateFeatureName, feature); |
| 194 } | 200 } |
| 195 | 201 |
| 196 TEST_F(TrialTokenValidatorTest, ValidateInappropriateOrigin) { | 202 TEST_F(TrialTokenValidatorTest, ValidateInappropriateOrigin) { |
| 197 std::string feature; | 203 std::string feature; |
| 198 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, | 204 EXPECT_EQ(blink::WebOriginTrialTokenStatus::WrongOrigin, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 225 } | 231 } |
| 226 | 232 |
| 227 TEST_F(TrialTokenValidatorTest, ValidateValidTokenWithIncorrectKey) { | 233 TEST_F(TrialTokenValidatorTest, ValidateValidTokenWithIncorrectKey) { |
| 228 std::string feature; | 234 std::string feature; |
| 229 SetPublicKey(kTestPublicKey2); | 235 SetPublicKey(kTestPublicKey2); |
| 230 EXPECT_EQ(blink::WebOriginTrialTokenStatus::InvalidSignature, | 236 EXPECT_EQ(blink::WebOriginTrialTokenStatus::InvalidSignature, |
| 231 TrialTokenValidator::ValidateToken(kSampleToken, | 237 TrialTokenValidator::ValidateToken(kSampleToken, |
| 232 appropriate_origin_, &feature)); | 238 appropriate_origin_, &feature)); |
| 233 } | 239 } |
| 234 | 240 |
| 235 TEST_F(TrialTokenValidatorTest, ValidatorRespectsDisabledFeatures) { | 241 // Flaky on Android swarming bots: crbug.com/672294 |
| 242 #if defined(OS_ANDROID) |
| 243 #define MAYBE_ValidatorRespectsDisabledFeatures DISABLED_ValidatorRespectsDisabl
edFeatures |
| 244 #else |
| 245 #define MAYBE_ValidatorRespectsDisabledFeatures ValidatorRespectsDisabledFeature
s |
| 246 #endif |
| 247 TEST_F(TrialTokenValidatorTest, MAYBE_ValidatorRespectsDisabledFeatures) { |
| 236 std::string feature; | 248 std::string feature; |
| 237 // Disable an irrelevant feature; token should still validate | 249 // Disable an irrelevant feature; token should still validate |
| 238 DisableFeature(kInappropriateFeatureName); | 250 DisableFeature(kInappropriateFeatureName); |
| 239 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, | 251 EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, |
| 240 TrialTokenValidator::ValidateToken(kSampleToken, | 252 TrialTokenValidator::ValidateToken(kSampleToken, |
| 241 appropriate_origin_, &feature)); | 253 appropriate_origin_, &feature)); |
| 242 EXPECT_EQ(kAppropriateFeatureName, feature); | 254 EXPECT_EQ(kAppropriateFeatureName, feature); |
| 243 // Disable the token's feature; it should no longer be valid | 255 // Disable the token's feature; it should no longer be valid |
| 244 DisableFeature(kAppropriateFeatureName); | 256 DisableFeature(kAppropriateFeatureName); |
| 245 EXPECT_EQ(blink::WebOriginTrialTokenStatus::FeatureDisabled, | 257 EXPECT_EQ(blink::WebOriginTrialTokenStatus::FeatureDisabled, |
| 246 TrialTokenValidator::ValidateToken(kSampleToken, | 258 TrialTokenValidator::ValidateToken(kSampleToken, |
| 247 appropriate_origin_, &feature)); | 259 appropriate_origin_, &feature)); |
| 248 } | 260 } |
| 249 | 261 |
| 250 TEST_F(TrialTokenValidatorTest, ValidateRequestInsecure) { | 262 TEST_F(TrialTokenValidatorTest, ValidateRequestInsecure) { |
| 251 response_headers_->AddHeader(std::string("Origin-Trial: ") + | 263 response_headers_->AddHeader(std::string("Origin-Trial: ") + |
| 252 kInsecureOriginToken); | 264 kInsecureOriginToken); |
| 253 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( | 265 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( |
| 254 GURL(kInsecureOrigin), response_headers_.get(), kAppropriateFeatureName)); | 266 GURL(kInsecureOrigin), response_headers_.get(), kAppropriateFeatureName)); |
| 255 } | 267 } |
| 256 | 268 |
| 257 TEST_F(TrialTokenValidatorTest, ValidateRequestValidToken) { | 269 // Flaky on Android swarming bots: crbug.com/672294 |
| 270 #if defined(OS_ANDROID) |
| 271 #define MAYBE_ValidateRequestValidToken DISABLED_ValidateRequestValidToken |
| 272 #else |
| 273 #define MAYBE_ValidateRequestValidToken ValidateRequestValidToken |
| 274 #endif |
| 275 TEST_F(TrialTokenValidatorTest, MAYBE_ValidateRequestValidToken) { |
| 258 response_headers_->AddHeader(std::string("Origin-Trial: ") + kSampleToken); | 276 response_headers_->AddHeader(std::string("Origin-Trial: ") + kSampleToken); |
| 259 EXPECT_TRUE(TrialTokenValidator::RequestEnablesFeature( | 277 EXPECT_TRUE(TrialTokenValidator::RequestEnablesFeature( |
| 260 GURL(kAppropriateOrigin), response_headers_.get(), | 278 GURL(kAppropriateOrigin), response_headers_.get(), |
| 261 kAppropriateFeatureName)); | 279 kAppropriateFeatureName)); |
| 262 } | 280 } |
| 263 | 281 |
| 264 TEST_F(TrialTokenValidatorTest, ValidateRequestNoTokens) { | 282 TEST_F(TrialTokenValidatorTest, ValidateRequestNoTokens) { |
| 265 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( | 283 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( |
| 266 GURL(kAppropriateOrigin), response_headers_.get(), | 284 GURL(kAppropriateOrigin), response_headers_.get(), |
| 267 kAppropriateFeatureName)); | 285 kAppropriateFeatureName)); |
| 268 } | 286 } |
| 269 | 287 |
| 270 TEST_F(TrialTokenValidatorTest, ValidateRequestMultipleHeaders) { | 288 // Flaky on Android swarming bots: crbug.com/672294 |
| 289 #if defined(OS_ANDROID) |
| 290 #define MAYBE_ValidateRequestMultipleHeaders DISABLED_ValidateRequestMultipleHea
ders |
| 291 #else |
| 292 #define MAYBE_ValidateRequestMultipleHeaders ValidateRequestMultipleHeaders |
| 293 #endif |
| 294 TEST_F(TrialTokenValidatorTest, MAYBE_ValidateRequestMultipleHeaders) { |
| 271 response_headers_->AddHeader(std::string("Origin-Trial: ") + kSampleToken); | 295 response_headers_->AddHeader(std::string("Origin-Trial: ") + kSampleToken); |
| 272 response_headers_->AddHeader(std::string("Origin-Trial: ") + kExpiredToken); | 296 response_headers_->AddHeader(std::string("Origin-Trial: ") + kExpiredToken); |
| 273 EXPECT_TRUE(TrialTokenValidator::RequestEnablesFeature( | 297 EXPECT_TRUE(TrialTokenValidator::RequestEnablesFeature( |
| 274 GURL(kAppropriateOrigin), response_headers_.get(), | 298 GURL(kAppropriateOrigin), response_headers_.get(), |
| 275 kAppropriateFeatureName)); | 299 kAppropriateFeatureName)); |
| 276 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( | 300 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( |
| 277 GURL(kAppropriateOrigin), response_headers_.get(), | 301 GURL(kAppropriateOrigin), response_headers_.get(), |
| 278 kInappropriateFeatureName)); | 302 kInappropriateFeatureName)); |
| 279 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( | 303 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( |
| 280 GURL(kInappropriateOrigin), response_headers_.get(), | 304 GURL(kInappropriateOrigin), response_headers_.get(), |
| 281 kAppropriateFeatureName)); | 305 kAppropriateFeatureName)); |
| 282 } | 306 } |
| 283 | 307 |
| 284 TEST_F(TrialTokenValidatorTest, ValidateRequestMultipleHeaderValues) { | 308 // Flaky on Android swarming bots: crbug.com/672294 |
| 309 #if defined(OS_ANDROID) |
| 310 #define MAYBE_ValidateRequestMultipleHeaderValues DISABLED_ValidateRequestMultip
leHeaderValues |
| 311 #else |
| 312 #define MAYBE_ValidateRequestMultipleHeaderValues ValidateRequestMultipleHeaderV
alues |
| 313 #endif |
| 314 TEST_F(TrialTokenValidatorTest, MAYBE_ValidateRequestMultipleHeaderValues) { |
| 285 response_headers_->AddHeader(std::string("Origin-Trial: ") + kExpiredToken + | 315 response_headers_->AddHeader(std::string("Origin-Trial: ") + kExpiredToken + |
| 286 ", " + kSampleToken); | 316 ", " + kSampleToken); |
| 287 EXPECT_TRUE(TrialTokenValidator::RequestEnablesFeature( | 317 EXPECT_TRUE(TrialTokenValidator::RequestEnablesFeature( |
| 288 GURL(kAppropriateOrigin), response_headers_.get(), | 318 GURL(kAppropriateOrigin), response_headers_.get(), |
| 289 kAppropriateFeatureName)); | 319 kAppropriateFeatureName)); |
| 290 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( | 320 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( |
| 291 GURL(kAppropriateOrigin), response_headers_.get(), | 321 GURL(kAppropriateOrigin), response_headers_.get(), |
| 292 kInappropriateFeatureName)); | 322 kInappropriateFeatureName)); |
| 293 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( | 323 EXPECT_FALSE(TrialTokenValidator::RequestEnablesFeature( |
| 294 GURL(kInappropriateOrigin), response_headers_.get(), | 324 GURL(kInappropriateOrigin), response_headers_.get(), |
| 295 kAppropriateFeatureName)); | 325 kAppropriateFeatureName)); |
| 296 } | 326 } |
| 297 | 327 |
| 298 } // namespace content | 328 } // namespace content |
| OLD | NEW |