- add sources.
[platform/framework/web/crosswalk.git] / src / net / url_request / url_request_job_unittest.cc
1 // Copyright (c) 2012 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 "net/url_request/url_request_job.h"
6
7 #include "net/base/request_priority.h"
8 #include "net/http/http_transaction_unittest.h"
9 #include "net/url_request/url_request_test_util.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace net {
13
14 namespace {
15
16 // This is a header that signals the end of the data.
17 const char kGzipGata[] = "\x1f\x08b\x08\0\0\0\0\0\0\3\3\0\0\0\0\0\0\0\0";
18
19 void GZipServer(const HttpRequestInfo* request,
20                 std::string* response_status,
21                 std::string* response_headers,
22                 std::string* response_data) {
23   response_data->assign(kGzipGata, sizeof(kGzipGata));
24 }
25
26 const MockTransaction kGZip_Transaction = {
27     "http://www.google.com/gzyp",
28     "GET",
29     base::Time(),
30     "",
31     LOAD_NORMAL,
32     "HTTP/1.1 200 OK",
33     "Cache-Control: max-age=10000\n"
34     "Content-Encoding: gzip\n"
35     "Content-Length: 30\n",  // Intentionally wrong.
36     base::Time(),
37     "",
38     TEST_MODE_NORMAL,
39     &GZipServer,
40     0,
41     OK
42 };
43
44 const MockTransaction kRedirect_Transaction = {
45     "http://www.google.com/redirect",
46     "GET",
47     base::Time(),
48     "",
49     LOAD_NORMAL,
50     "HTTP/1.1 302 Found",
51     "Cache-Control: max-age=10000\n"
52     "Location: http://www.google.com/destination\n"
53     "Content-Length: 5\n",
54     base::Time(),
55     "hello",
56     TEST_MODE_NORMAL,
57     NULL,
58     0,
59     OK
60 };
61
62 }  // namespace
63
64 TEST(URLRequestJob, TransactionNotifiedWhenDone) {
65   MockNetworkLayer network_layer;
66   TestURLRequestContext context;
67   context.set_http_transaction_factory(&network_layer);
68
69   TestDelegate d;
70   TestURLRequest req(
71       GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, &context);
72   AddMockTransaction(&kGZip_Transaction);
73
74   req.set_method("GET");
75   req.Start();
76
77   base::MessageLoop::current()->Run();
78
79   EXPECT_TRUE(network_layer.done_reading_called());
80
81   RemoveMockTransaction(&kGZip_Transaction);
82 }
83
84 TEST(URLRequestJob, SyncTransactionNotifiedWhenDone) {
85   MockNetworkLayer network_layer;
86   TestURLRequestContext context;
87   context.set_http_transaction_factory(&network_layer);
88
89   TestDelegate d;
90   TestURLRequest req(
91       GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, &context);
92   MockTransaction transaction(kGZip_Transaction);
93   transaction.test_mode = TEST_MODE_SYNC_ALL;
94   AddMockTransaction(&transaction);
95
96   req.set_method("GET");
97   req.Start();
98
99   base::MessageLoop::current()->Run();
100
101   EXPECT_TRUE(network_layer.done_reading_called());
102
103   RemoveMockTransaction(&transaction);
104 }
105
106 TEST(URLRequestJob, RedirectTransactionNotifiedWhenDone) {
107   MockNetworkLayer network_layer;
108   TestURLRequestContext context;
109   context.set_http_transaction_factory(&network_layer);
110
111   TestDelegate d;
112   TestURLRequest req(
113       GURL(kRedirect_Transaction.url), DEFAULT_PRIORITY, &d, &context);
114   AddMockTransaction(&kRedirect_Transaction);
115
116   req.set_method("GET");
117   req.Start();
118
119   base::MessageLoop::current()->Run();
120
121   EXPECT_TRUE(network_layer.done_reading_called());
122
123   RemoveMockTransaction(&kRedirect_Transaction);
124 }
125
126 }  // namespace net