Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: net/url_request/url_request_ftp_job_unittest.cc

Issue 11931024: Removed static factories for data, ftp, file, and about jobs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address phajdan.jr's comments Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/url_request/url_request_ftp_job.cc ('k') | net/url_request/url_request_http_job.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/url_request/url_request_ftp_job.h" 5 #include "net/url_request/url_request_ftp_job.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "googleurl/src/gurl.h" 10 #include "googleurl/src/gurl.h"
11 #include "net/ftp/ftp_auth_cache.h"
11 #include "net/http/http_transaction_unittest.h" 12 #include "net/http/http_transaction_unittest.h"
12 #include "net/proxy/proxy_config_service.h" 13 #include "net/proxy/proxy_config_service.h"
13 #include "net/socket/socket_test_util.h" 14 #include "net/socket/socket_test_util.h"
15 #include "net/url_request/ftp_protocol_handler.h"
14 #include "net/url_request/url_request.h" 16 #include "net/url_request/url_request.h"
15 #include "net/url_request/url_request_context.h" 17 #include "net/url_request/url_request_context.h"
18 #include "net/url_request/url_request_job_factory_impl.h"
16 #include "net/url_request/url_request_status.h" 19 #include "net/url_request/url_request_status.h"
17 #include "net/url_request/url_request_test_util.h" 20 #include "net/url_request/url_request_test_util.h"
18 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
19 22
20 namespace net { 23 namespace net {
21 24
25 class FtpTestURLRequestContext : public TestURLRequestContext {
26 public:
27 FtpTestURLRequestContext(ClientSocketFactory* socket_factory,
28 ProxyService* proxy_service,
29 NetworkDelegate* network_delegate,
30 FtpTransactionFactory* ftp_transaction_factory)
31 : TestURLRequestContext(true),
32 ftp_protocol_handler_(new FtpProtocolHandler(ftp_transaction_factory)) {
33 set_client_socket_factory(socket_factory);
34 context_storage_.set_proxy_service(proxy_service);
35 set_network_delegate(network_delegate);
36 URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl;
37 job_factory->SetProtocolHandler("ftp", ftp_protocol_handler_);
38 context_storage_.set_job_factory(job_factory);
39 Init();
40 }
41
42 FtpAuthCache* GetFtpAuthCache() {
43 return ftp_protocol_handler_->ftp_auth_cache_.get();
44 }
45
46 private:
47 FtpProtocolHandler* ftp_protocol_handler_;
48 };
49
22 namespace { 50 namespace {
23 51
24 class SimpleProxyConfigService : public ProxyConfigService { 52 class SimpleProxyConfigService : public ProxyConfigService {
25 public: 53 public:
26 SimpleProxyConfigService() { 54 SimpleProxyConfigService() {
27 // Any FTP requests that ever go through HTTP paths are proxied requests. 55 // Any FTP requests that ever go through HTTP paths are proxied requests.
28 config_.proxy_rules().ParseFromString("ftp=localhost"); 56 config_.proxy_rules().ParseFromString("ftp=localhost");
29 } 57 }
30 58
31 virtual void AddObserver(Observer* observer) OVERRIDE { 59 virtual void AddObserver(Observer* observer) OVERRIDE {
(...skipping 19 matching lines...) Expand all
51 79
52 private: 80 private:
53 ProxyConfig config_; 81 ProxyConfig config_;
54 Observer* observer_; 82 Observer* observer_;
55 }; 83 };
56 84
57 // Inherit from URLRequestFtpJob to expose the priority and some 85 // Inherit from URLRequestFtpJob to expose the priority and some
58 // other hidden functions. 86 // other hidden functions.
59 class TestURLRequestFtpJob : public URLRequestFtpJob { 87 class TestURLRequestFtpJob : public URLRequestFtpJob {
60 public: 88 public:
61 explicit TestURLRequestFtpJob(URLRequest* request) 89 TestURLRequestFtpJob(URLRequest* request,
62 : URLRequestFtpJob(request, NULL, 90 FtpTransactionFactory* ftp_factory,
63 request->context()->ftp_transaction_factory(), 91 FtpAuthCache* ftp_auth_cache)
64 request->context()->ftp_auth_cache()) {} 92 : URLRequestFtpJob(request, NULL, ftp_factory, ftp_auth_cache) {}
65 93
66 using URLRequestFtpJob::SetPriority; 94 using URLRequestFtpJob::SetPriority;
67 using URLRequestFtpJob::Start; 95 using URLRequestFtpJob::Start;
68 using URLRequestFtpJob::Kill; 96 using URLRequestFtpJob::Kill;
69 using URLRequestFtpJob::priority; 97 using URLRequestFtpJob::priority;
70 98
71 protected: 99 protected:
72 virtual ~TestURLRequestFtpJob() {} 100 virtual ~TestURLRequestFtpJob() {}
73 }; 101 };
74 102
103 class MockFtpTransactionFactory : public FtpTransactionFactory {
104 public:
105 FtpTransaction* CreateTransaction() {
mmenke1 2013/04/29 21:17:23 virtual OVERRIDE
106 return NULL;
107 }
108
109 void Suspend(bool suspend) {}
mmenke1 2013/04/29 21:17:23 virtual OVERRIDE
110 };
111
75 // Fixture for priority-related tests. Priority matters when there is 112 // Fixture for priority-related tests. Priority matters when there is
76 // an HTTP proxy. 113 // an HTTP proxy.
77 class URLRequestFtpJobPriorityTest : public testing::Test { 114 class URLRequestFtpJobPriorityTest : public testing::Test {
78 protected: 115 protected:
79 URLRequestFtpJobPriorityTest() 116 URLRequestFtpJobPriorityTest()
80 : proxy_service_(new SimpleProxyConfigService, NULL, NULL), 117 : proxy_service_(new SimpleProxyConfigService, NULL, NULL),
81 req_(GURL("ftp://ftp.example.com"), &delegate_, &context_, NULL) { 118 req_(GURL("ftp://ftp.example.com"), &delegate_, &context_, NULL) {
82 context_.set_proxy_service(&proxy_service_); 119 context_.set_proxy_service(&proxy_service_);
83 context_.set_http_transaction_factory(&network_layer_); 120 context_.set_http_transaction_factory(&network_layer_);
84 } 121 }
85 122
86 ProxyService proxy_service_; 123 ProxyService proxy_service_;
87 MockNetworkLayer network_layer_; 124 MockNetworkLayer network_layer_;
125 MockFtpTransactionFactory ftp_factory_;
126 FtpAuthCache ftp_auth_cache_;
88 TestURLRequestContext context_; 127 TestURLRequestContext context_;
89 TestDelegate delegate_; 128 TestDelegate delegate_;
90 TestURLRequest req_; 129 TestURLRequest req_;
91 }; 130 };
92 131
93 // Make sure that SetPriority actually sets the URLRequestFtpJob's 132 // Make sure that SetPriority actually sets the URLRequestFtpJob's
94 // priority, both before and after start. 133 // priority, both before and after start.
95 TEST_F(URLRequestFtpJobPriorityTest, SetPriorityBasic) { 134 TEST_F(URLRequestFtpJobPriorityTest, SetPriorityBasic) {
96 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(&req_)); 135 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(
136 &req_, &ftp_factory_, &ftp_auth_cache_));
97 EXPECT_EQ(DEFAULT_PRIORITY, job->priority()); 137 EXPECT_EQ(DEFAULT_PRIORITY, job->priority());
98 138
99 job->SetPriority(LOWEST); 139 job->SetPriority(LOWEST);
100 EXPECT_EQ(LOWEST, job->priority()); 140 EXPECT_EQ(LOWEST, job->priority());
101 141
102 job->SetPriority(LOW); 142 job->SetPriority(LOW);
103 EXPECT_EQ(LOW, job->priority()); 143 EXPECT_EQ(LOW, job->priority());
104 144
105 job->Start(); 145 job->Start();
106 EXPECT_EQ(LOW, job->priority()); 146 EXPECT_EQ(LOW, job->priority());
107 147
108 job->SetPriority(MEDIUM); 148 job->SetPriority(MEDIUM);
109 EXPECT_EQ(MEDIUM, job->priority()); 149 EXPECT_EQ(MEDIUM, job->priority());
110 } 150 }
111 151
112 // Make sure that URLRequestFtpJob passes on its priority to its 152 // Make sure that URLRequestFtpJob passes on its priority to its
113 // transaction on start. 153 // transaction on start.
114 TEST_F(URLRequestFtpJobPriorityTest, SetTransactionPriorityOnStart) { 154 TEST_F(URLRequestFtpJobPriorityTest, SetTransactionPriorityOnStart) {
115 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(&req_)); 155 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(
156 &req_, &ftp_factory_, &ftp_auth_cache_));
116 job->SetPriority(LOW); 157 job->SetPriority(LOW);
117 158
118 EXPECT_FALSE(network_layer_.last_transaction()); 159 EXPECT_FALSE(network_layer_.last_transaction());
119 160
120 job->Start(); 161 job->Start();
121 162
122 ASSERT_TRUE(network_layer_.last_transaction()); 163 ASSERT_TRUE(network_layer_.last_transaction());
123 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority()); 164 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority());
124 } 165 }
125 166
126 // Make sure that URLRequestFtpJob passes on its priority updates to 167 // Make sure that URLRequestFtpJob passes on its priority updates to
127 // its transaction. 168 // its transaction.
128 TEST_F(URLRequestFtpJobPriorityTest, SetTransactionPriority) { 169 TEST_F(URLRequestFtpJobPriorityTest, SetTransactionPriority) {
129 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(&req_)); 170 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(
171 &req_, &ftp_factory_, &ftp_auth_cache_));
130 job->SetPriority(LOW); 172 job->SetPriority(LOW);
131 job->Start(); 173 job->Start();
132 ASSERT_TRUE(network_layer_.last_transaction()); 174 ASSERT_TRUE(network_layer_.last_transaction());
133 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority()); 175 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority());
134 176
135 job->SetPriority(HIGHEST); 177 job->SetPriority(HIGHEST);
136 EXPECT_EQ(HIGHEST, network_layer_.last_transaction()->priority()); 178 EXPECT_EQ(HIGHEST, network_layer_.last_transaction()->priority());
137 } 179 }
138 180
139 // Make sure that URLRequestFtpJob passes on its priority updates to 181 // Make sure that URLRequestFtpJob passes on its priority updates to
140 // newly-created transactions after the first one. 182 // newly-created transactions after the first one.
141 TEST_F(URLRequestFtpJobPriorityTest, SetSubsequentTransactionPriority) { 183 TEST_F(URLRequestFtpJobPriorityTest, SetSubsequentTransactionPriority) {
142 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(&req_)); 184 scoped_refptr<TestURLRequestFtpJob> job(new TestURLRequestFtpJob(
185 &req_, &ftp_factory_, &ftp_auth_cache_));
143 job->Start(); 186 job->Start();
144 187
145 job->SetPriority(LOW); 188 job->SetPriority(LOW);
146 ASSERT_TRUE(network_layer_.last_transaction()); 189 ASSERT_TRUE(network_layer_.last_transaction());
147 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority()); 190 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority());
148 191
149 job->Kill(); 192 job->Kill();
150 network_layer_.ClearLastTransaction(); 193 network_layer_.ClearLastTransaction();
151 194
152 // Creates a second transaction. 195 // Creates a second transaction.
153 job->Start(); 196 job->Start();
154 ASSERT_TRUE(network_layer_.last_transaction()); 197 ASSERT_TRUE(network_layer_.last_transaction());
155 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority()); 198 EXPECT_EQ(LOW, network_layer_.last_transaction()->priority());
156 } 199 }
157 200
158 class FtpTestURLRequestContext : public TestURLRequestContext {
159 public:
160 FtpTestURLRequestContext(ClientSocketFactory* socket_factory,
161 ProxyService* proxy_service,
162 NetworkDelegate* network_delegate)
163 : TestURLRequestContext(true) {
164 set_client_socket_factory(socket_factory);
165 context_storage_.set_proxy_service(proxy_service);
166 set_network_delegate(network_delegate);
167 Init();
168 }
169 };
170
171 class URLRequestFtpJobTest : public testing::Test { 201 class URLRequestFtpJobTest : public testing::Test {
172 public: 202 public:
173 URLRequestFtpJobTest() 203 URLRequestFtpJobTest()
174 : proxy_service_(new ProxyService( 204 : proxy_service_(new ProxyService(
175 new SimpleProxyConfigService, NULL, NULL)), 205 new SimpleProxyConfigService, NULL, NULL)),
176 request_context_(&socket_factory_, 206 request_context_(&socket_factory_,
177 proxy_service_, 207 proxy_service_,
178 &network_delegate_) { 208 &network_delegate_,
209 &ftp_transaction_factory_) {
179 } 210 }
180 211
181 virtual ~URLRequestFtpJobTest() { 212 virtual ~URLRequestFtpJobTest() {
182 // Clean up any remaining tasks that mess up unrelated tests. 213 // Clean up any remaining tasks that mess up unrelated tests.
183 base::RunLoop run_loop; 214 base::RunLoop run_loop;
184 run_loop.RunUntilIdle(); 215 run_loop.RunUntilIdle();
185 } 216 }
186 217
187 void AddSocket(MockRead* reads, size_t reads_size, 218 void AddSocket(MockRead* reads, size_t reads_size,
188 MockWrite* writes, size_t writes_size) { 219 MockWrite* writes, size_t writes_size) {
189 DeterministicSocketData* socket_data = new DeterministicSocketData( 220 DeterministicSocketData* socket_data = new DeterministicSocketData(
190 reads, reads_size, writes, writes_size); 221 reads, reads_size, writes, writes_size);
191 socket_data->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 222 socket_data->set_connect_data(MockConnect(SYNCHRONOUS, OK));
192 socket_data->StopAfter(reads_size + writes_size - 1); 223 socket_data->StopAfter(reads_size + writes_size - 1);
193 socket_factory_.AddSocketDataProvider(socket_data); 224 socket_factory_.AddSocketDataProvider(socket_data);
194 225
195 socket_data_.push_back(socket_data); 226 socket_data_.push_back(socket_data);
196 } 227 }
197 228
198 URLRequestContext* request_context() { return &request_context_; } 229 FtpTestURLRequestContext* request_context() { return &request_context_; }
199 TestNetworkDelegate* network_delegate() { return &network_delegate_; } 230 TestNetworkDelegate* network_delegate() { return &network_delegate_; }
200 DeterministicSocketData* socket_data(size_t index) { 231 DeterministicSocketData* socket_data(size_t index) {
201 return socket_data_[index]; 232 return socket_data_[index];
202 } 233 }
203 234
204 private: 235 private:
205 ScopedVector<DeterministicSocketData> socket_data_; 236 ScopedVector<DeterministicSocketData> socket_data_;
206 DeterministicMockClientSocketFactory socket_factory_; 237 DeterministicMockClientSocketFactory socket_factory_;
207 TestNetworkDelegate network_delegate_; 238 TestNetworkDelegate network_delegate_;
239 MockFtpTransactionFactory ftp_transaction_factory_;
208 240
209 // Owned by |request_context_|: 241 // Owned by |request_context_|:
210 ProxyService* proxy_service_; 242 ProxyService* proxy_service_;
211 243
212 FtpTestURLRequestContext request_context_; 244 FtpTestURLRequestContext request_context_;
213 }; 245 };
214 246
215 TEST_F(URLRequestFtpJobTest, FtpProxyRequest) { 247 TEST_F(URLRequestFtpJobTest, FtpProxyRequest) {
216 MockWrite writes[] = { 248 MockWrite writes[] = {
217 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 249 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 MockRead(ASYNC, 11, "HTTP/1.1 200 OK\r\n"), 464 MockRead(ASYNC, 11, "HTTP/1.1 200 OK\r\n"),
433 MockRead(ASYNC, 12, "Content-Length: 10\r\n\r\n"), 465 MockRead(ASYNC, 12, "Content-Length: 10\r\n\r\n"),
434 MockRead(ASYNC, 13, "test2.html"), 466 MockRead(ASYNC, 13, "test2.html"),
435 }; 467 };
436 468
437 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 469 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
438 470
439 GURL url("ftp://ftp.example.com"); 471 GURL url("ftp://ftp.example.com");
440 472
441 // Make sure cached FTP credentials are not used for proxy authentication. 473 // Make sure cached FTP credentials are not used for proxy authentication.
442 request_context()->ftp_auth_cache()->Add( 474 request_context()->GetFtpAuthCache()->Add(
443 url.GetOrigin(), 475 url.GetOrigin(),
444 AuthCredentials(ASCIIToUTF16("userdonotuse"), 476 AuthCredentials(ASCIIToUTF16("userdonotuse"),
445 ASCIIToUTF16("passworddonotuse"))); 477 ASCIIToUTF16("passworddonotuse")));
446 478
447 TestDelegate request_delegate; 479 TestDelegate request_delegate;
448 request_delegate.set_credentials( 480 request_delegate.set_credentials(
449 AuthCredentials(ASCIIToUTF16("proxyuser"), ASCIIToUTF16("proxypass"))); 481 AuthCredentials(ASCIIToUTF16("proxyuser"), ASCIIToUTF16("proxypass")));
450 URLRequest url_request(url, 482 URLRequest url_request(url,
451 &request_delegate, 483 &request_delegate,
452 request_context(), 484 request_context(),
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 EXPECT_TRUE(url_request2.status().is_success()); 679 EXPECT_TRUE(url_request2.status().is_success());
648 EXPECT_EQ(2, network_delegate()->completed_requests()); 680 EXPECT_EQ(2, network_delegate()->completed_requests());
649 EXPECT_EQ(0, network_delegate()->error_count()); 681 EXPECT_EQ(0, network_delegate()->error_count());
650 EXPECT_FALSE(request_delegate2.auth_required_called()); 682 EXPECT_FALSE(request_delegate2.auth_required_called());
651 EXPECT_EQ("test2.html", request_delegate2.data_received()); 683 EXPECT_EQ("test2.html", request_delegate2.data_received());
652 } 684 }
653 685
654 } // namespace 686 } // namespace
655 687
656 } // namespace net 688 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_ftp_job.cc ('k') | net/url_request/url_request_http_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698