Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / serviceworkers / FetchResponseDataTest.cpp
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.
4
5 #include "config.h"
6 #include "modules/serviceworkers/FetchResponseData.h"
7
8 #include "modules/serviceworkers/FetchHeaderList.h"
9 #include "platform/blob/BlobData.h"
10 #include "public/platform/WebServiceWorkerResponse.h"
11
12 #include <gtest/gtest.h>
13
14 namespace blink {
15
16 class FetchResponseDataTest : public ::testing::Test {
17 public:
18     FetchResponseData* createInternalResponse()
19     {
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;
27     }
28
29     void CheckHeaders(const WebServiceWorkerResponse& webResponse)
30     {
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());
34     }
35 };
36
37 TEST_F(FetchResponseDataTest, ToWebServiceWorkerDefaultType)
38 {
39     WebServiceWorkerResponse webResponse;
40     FetchResponseData* internalResponse = createInternalResponse();
41
42     internalResponse->populateWebServiceWorkerResponse(webResponse);
43     EXPECT_EQ(WebServiceWorkerResponseTypeDefault, webResponse.responseType());
44     CheckHeaders(webResponse);
45 }
46
47 TEST_F(FetchResponseDataTest, ToWebServiceWorkerBasicType)
48 {
49     WebServiceWorkerResponse webResponse;
50     FetchResponseData* internalResponse = createInternalResponse();
51     FetchResponseData* basicResponseData = internalResponse->createBasicFilteredResponse();
52
53     basicResponseData->populateWebServiceWorkerResponse(webResponse);
54     EXPECT_EQ(WebServiceWorkerResponseTypeBasic, webResponse.responseType());
55     CheckHeaders(webResponse);
56 }
57
58 TEST_F(FetchResponseDataTest, ToWebServiceWorkerCORSType)
59 {
60     WebServiceWorkerResponse webResponse;
61     FetchResponseData* internalResponse = createInternalResponse();
62     FetchResponseData* corsResponseData = internalResponse->createCORSFilteredResponse();
63
64     corsResponseData->populateWebServiceWorkerResponse(webResponse);
65     EXPECT_EQ(WebServiceWorkerResponseTypeCORS, webResponse.responseType());
66     CheckHeaders(webResponse);
67 }
68
69 TEST_F(FetchResponseDataTest, ToWebServiceWorkerOpaqueType)
70 {
71     WebServiceWorkerResponse webResponse;
72     FetchResponseData* internalResponse = createInternalResponse();
73     FetchResponseData* opaqueResponseData = internalResponse->createOpaqueFilteredResponse();
74
75     opaqueResponseData->populateWebServiceWorkerResponse(webResponse);
76     EXPECT_EQ(WebServiceWorkerResponseTypeOpaque, webResponse.responseType());
77     CheckHeaders(webResponse);
78 }
79
80 } // namespace WebCore