blob: aff91a9fd4aefb4abcb7a4b684099940cbbb9774 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "modules/serviceworkers/FetchResponseData.h"
#include "modules/serviceworkers/FetchHeaderList.h"
#include "platform/blob/BlobData.h"
#include "public/platform/WebServiceWorkerResponse.h"
#include <gtest/gtest.h>
namespace blink {
class FetchResponseDataTest : public ::testing::Test {
public:
FetchResponseData* createInternalResponse()
{
FetchResponseData* internalResponse = FetchResponseData::create();
internalResponse->setStatus(200);
internalResponse->setURL(KURL(ParsedURLString, "http://www.example.com"));
internalResponse->headerList()->append("set-cookie", "foo");
internalResponse->headerList()->append("bar", "bar");
internalResponse->headerList()->append("cache-control", "no-cache");
return internalResponse;
}
void CheckHeaders(const WebServiceWorkerResponse& webResponse)
{
EXPECT_STREQ("foo", webResponse.getHeader("set-cookie").utf8().c_str());
EXPECT_STREQ("bar", webResponse.getHeader("bar").utf8().c_str());
EXPECT_STREQ("no-cache", webResponse.getHeader("cache-control").utf8().c_str());
}
};
TEST_F(FetchResponseDataTest, ToWebServiceWorkerDefaultType)
{
WebServiceWorkerResponse webResponse;
FetchResponseData* internalResponse = createInternalResponse();
internalResponse->populateWebServiceWorkerResponse(webResponse);
EXPECT_EQ(WebServiceWorkerResponseTypeDefault, webResponse.responseType());
CheckHeaders(webResponse);
}
TEST_F(FetchResponseDataTest, ToWebServiceWorkerBasicType)
{
WebServiceWorkerResponse webResponse;
FetchResponseData* internalResponse = createInternalResponse();
FetchResponseData* basicResponseData = internalResponse->createBasicFilteredResponse();
basicResponseData->populateWebServiceWorkerResponse(webResponse);
EXPECT_EQ(WebServiceWorkerResponseTypeBasic, webResponse.responseType());
CheckHeaders(webResponse);
}
TEST_F(FetchResponseDataTest, ToWebServiceWorkerCORSType)
{
WebServiceWorkerResponse webResponse;
FetchResponseData* internalResponse = createInternalResponse();
FetchResponseData* corsResponseData = internalResponse->createCORSFilteredResponse();
corsResponseData->populateWebServiceWorkerResponse(webResponse);
EXPECT_EQ(WebServiceWorkerResponseTypeCORS, webResponse.responseType());
CheckHeaders(webResponse);
}
TEST_F(FetchResponseDataTest, ToWebServiceWorkerOpaqueType)
{
WebServiceWorkerResponse webResponse;
FetchResponseData* internalResponse = createInternalResponse();
FetchResponseData* opaqueResponseData = internalResponse->createOpaqueFilteredResponse();
opaqueResponseData->populateWebServiceWorkerResponse(webResponse);
EXPECT_EQ(WebServiceWorkerResponseTypeOpaque, webResponse.responseType());
CheckHeaders(webResponse);
}
} // namespace WebCore