1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "modules/serviceworkers/FetchResponseData.h"
8 #include "modules/serviceworkers/FetchHeaderList.h"
9 #include "platform/blob/BlobData.h"
10 #include "public/platform/WebServiceWorkerResponse.h"
12 #include <gtest/gtest.h>
16 class FetchResponseDataTest : public ::testing::Test {
18 FetchResponseData* createInternalResponse()
20 FetchResponseData* internalResponse = FetchResponseData::create();
21 internalResponse->setStatus(200);
22 internalResponse->setURL(KURL(ParsedURLString, "http://www.example.com"));
23 internalResponse->headerList()->append("set-cookie", "foo");
24 internalResponse->headerList()->append("bar", "bar");
25 internalResponse->headerList()->append("cache-control", "no-cache");
26 return internalResponse;
29 void CheckHeaders(const WebServiceWorkerResponse& webResponse)
31 EXPECT_STREQ("foo", webResponse.getHeader("set-cookie").utf8().c_str());
32 EXPECT_STREQ("bar", webResponse.getHeader("bar").utf8().c_str());
33 EXPECT_STREQ("no-cache", webResponse.getHeader("cache-control").utf8().c_str());
37 TEST_F(FetchResponseDataTest, ToWebServiceWorkerDefaultType)
39 WebServiceWorkerResponse webResponse;
40 FetchResponseData* internalResponse = createInternalResponse();
42 internalResponse->populateWebServiceWorkerResponse(webResponse);
43 EXPECT_EQ(WebServiceWorkerResponseTypeDefault, webResponse.responseType());
44 CheckHeaders(webResponse);
47 TEST_F(FetchResponseDataTest, ToWebServiceWorkerBasicType)
49 WebServiceWorkerResponse webResponse;
50 FetchResponseData* internalResponse = createInternalResponse();
51 FetchResponseData* basicResponseData = internalResponse->createBasicFilteredResponse();
53 basicResponseData->populateWebServiceWorkerResponse(webResponse);
54 EXPECT_EQ(WebServiceWorkerResponseTypeBasic, webResponse.responseType());
55 CheckHeaders(webResponse);
58 TEST_F(FetchResponseDataTest, ToWebServiceWorkerCORSType)
60 WebServiceWorkerResponse webResponse;
61 FetchResponseData* internalResponse = createInternalResponse();
62 FetchResponseData* corsResponseData = internalResponse->createCORSFilteredResponse();
64 corsResponseData->populateWebServiceWorkerResponse(webResponse);
65 EXPECT_EQ(WebServiceWorkerResponseTypeCORS, webResponse.responseType());
66 CheckHeaders(webResponse);
69 TEST_F(FetchResponseDataTest, ToWebServiceWorkerOpaqueType)
71 WebServiceWorkerResponse webResponse;
72 FetchResponseData* internalResponse = createInternalResponse();
73 FetchResponseData* opaqueResponseData = internalResponse->createOpaqueFilteredResponse();
75 opaqueResponseData->populateWebServiceWorkerResponse(webResponse);
76 EXPECT_EQ(WebServiceWorkerResponseTypeOpaque, webResponse.responseType());
77 CheckHeaders(webResponse);
80 } // namespace WebCore