Chromium Code Reviews| Index: Source/core/frame/SubresourceIntegrityTest.cpp |
| diff --git a/Source/core/frame/SubresourceIntegrityTest.cpp b/Source/core/frame/SubresourceIntegrityTest.cpp |
| index 560a37f5b76b8031a96c674f59c0863af545b0f0..a39271509d8e1b1a01abb22cdaa88c66f63a6750 100644 |
| --- a/Source/core/frame/SubresourceIntegrityTest.cpp |
| +++ b/Source/core/frame/SubresourceIntegrityTest.cpp |
| @@ -7,6 +7,8 @@ |
| #include "core/HTMLNames.h" |
| #include "core/dom/Document.h" |
| +#include "core/fetch/Resource.h" |
| +#include "core/fetch/ResourcePtr.h" |
| #include "core/html/HTMLScriptElement.h" |
| #include "platform/Crypto.h" |
| #include "platform/weborigin/KURL.h" |
| @@ -136,16 +138,28 @@ protected: |
| EXPECT_FALSE(SubresourceIntegrity::parseIntegrityAttribute(integrityAttribute, digest, algorithm, type, *document)); |
| } |
| - void expectIntegrity(const char* integrity, const char* script, const KURL& url, const String& mimeType = String()) |
| + void expectIntegrity(const char* integrity, const char* script, const KURL& url, const KURL& requestorUrl, const String& mimeType = String()) |
| { |
| scriptElement->setAttribute(HTMLNames::integrityAttr, integrity); |
| - EXPECT_TRUE(SubresourceIntegrity::CheckSubresourceIntegrity(*scriptElement, script, url, mimeType)); |
| + EXPECT_TRUE(SubresourceIntegrity::CheckSubresourceIntegrity(*scriptElement, script, url, mimeType, *createTestResource(url, requestorUrl).get())); |
| } |
| - void expectIntegrityFailure(const char* integrity, const char* script, const KURL& url, const String& mimeType = String()) |
| + void expectIntegrityFailure(const char* integrity, const char* script, const KURL& url, const KURL& requestorUrl, const String& mimeType = String()) |
| { |
| scriptElement->setAttribute(HTMLNames::integrityAttr, integrity); |
| - EXPECT_FALSE(SubresourceIntegrity::CheckSubresourceIntegrity(*scriptElement, script, url, mimeType)); |
| + EXPECT_FALSE(SubresourceIntegrity::CheckSubresourceIntegrity(*scriptElement, script, url, mimeType, *createTestResource(url, requestorUrl).get())); |
| + } |
| + |
| + ResourcePtr<Resource> createTestResource(const KURL& url, const KURL& allowOriginUrl) |
| + { |
| + OwnPtr<ResourceResponse> response = adoptPtr(new ResourceResponse); |
| + response->setURL(url); |
| + response->setHTTPStatusCode(200); |
| + response->setHTTPHeaderField("access-control-allow-origin", SecurityOrigin::create(allowOriginUrl)->toAtomicString()); |
|
Mike West
2015/03/06 03:19:37
It would be nice if this bit was parameterized; ri
jww
2015/03/06 08:24:21
Done.
|
| + response->setHTTPHeaderField("access-control-allow-credentials", "true"); |
| + ResourcePtr<Resource> resource = new Resource(ResourceRequest(response->url()), Resource::Raw); |
| + resource->setResponse(*response); |
| + return resource; |
| } |
| KURL secureURL; |
| @@ -273,15 +287,15 @@ TEST_F(SubresourceIntegrityTest, CheckSubresourceIntegrityInSecureOrigin) |
| document->updateSecurityOrigin(secureOrigin->isolatedCopy()); |
| // Verify basic sha256, sha384, and sha512 integrity checks. |
| - expectIntegrity(kSha256Integrity, kBasicScript, secureURL); |
| - expectIntegrity(kSha384Integrity, kBasicScript, secureURL); |
| - expectIntegrity(kSha512Integrity, kBasicScript, secureURL); |
| + expectIntegrity(kSha256Integrity, kBasicScript, secureURL, secureURL); |
| + expectIntegrity(kSha384Integrity, kBasicScript, secureURL, secureURL); |
| + expectIntegrity(kSha512Integrity, kBasicScript, secureURL, secureURL); |
| // The hash label must match the hash value. |
| - expectIntegrityFailure(kSha384IntegrityLabeledAs256, kBasicScript, secureURL); |
| + expectIntegrityFailure(kSha384IntegrityLabeledAs256, kBasicScript, secureURL, secureURL); |
| // Unsupported hash functions should fail. |
| - expectIntegrityFailure(kUnsupportedHashFunctionIntegrity, kBasicScript, secureURL); |
| + expectIntegrityFailure(kUnsupportedHashFunctionIntegrity, kBasicScript, secureURL, secureURL); |
| } |
| TEST_F(SubresourceIntegrityTest, CheckSubresourceIntegrityInInsecureOrigin) |
| @@ -289,11 +303,11 @@ TEST_F(SubresourceIntegrityTest, CheckSubresourceIntegrityInInsecureOrigin) |
| // The same checks as CheckSubresourceIntegrityInSecureOrigin should pass here. |
| document->updateSecurityOrigin(insecureOrigin->isolatedCopy()); |
| - expectIntegrity(kSha256Integrity, kBasicScript, secureURL); |
| - expectIntegrity(kSha384Integrity, kBasicScript, secureURL); |
| - expectIntegrity(kSha512Integrity, kBasicScript, secureURL); |
| - expectIntegrityFailure(kSha384IntegrityLabeledAs256, kBasicScript, secureURL); |
| - expectIntegrityFailure(kUnsupportedHashFunctionIntegrity, kBasicScript, secureURL); |
| + expectIntegrity(kSha256Integrity, kBasicScript, secureURL, insecureURL); |
| + expectIntegrity(kSha384Integrity, kBasicScript, secureURL, insecureURL); |
| + expectIntegrity(kSha512Integrity, kBasicScript, secureURL, insecureURL); |
| + expectIntegrityFailure(kSha384IntegrityLabeledAs256, kBasicScript, secureURL, insecureURL); |
| + expectIntegrityFailure(kUnsupportedHashFunctionIntegrity, kBasicScript, secureURL, insecureURL); |
| } |
| } // namespace blink |