Chromium Code Reviews| Index: net/flip/flip_network_transaction_unittest.cc |
| =================================================================== |
| --- net/flip/flip_network_transaction_unittest.cc (revision 30221) |
| +++ net/flip/flip_network_transaction_unittest.cc (working copy) |
| @@ -88,25 +88,25 @@ |
| protected: |
| void KeepAliveConnectionResendRequestTest(const MockRead& read_failure); |
| - struct SimpleGetHelperResult { |
| + struct TransactionHelperResult { |
| int rv; |
| std::string status_line; |
| std::string response_data; |
| }; |
| - SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[]) { |
| - SimpleGetHelperResult out; |
| + TransactionHelperResult TransactionHelper(const HttpRequestInfo& request, |
| + MockRead reads[], |
| + MockWrite writes[]) { |
| + TransactionHelperResult out; |
| + // We disable SSL for this test. |
| + FlipSession::SetSSLMode(false); |
| + |
| SessionDependencies session_deps; |
| scoped_ptr<FlipNetworkTransaction> trans( |
| new FlipNetworkTransaction(CreateSession(&session_deps))); |
| - HttpRequestInfo request; |
| - request.method = "GET"; |
| - request.url = GURL("http://www.google.com/"); |
| - request.load_flags = 0; |
| - |
| - StaticMockSocket data(data_reads, NULL); |
| + StaticMockSocket data(reads, writes); |
| session_deps.socket_factory.AddMockSocket(&data); |
| TestCompletionCallback callback; |
| @@ -144,7 +144,20 @@ |
| scoped_ptr<HttpTransaction> trans(new FlipNetworkTransaction(session)); |
| } |
| -TEST_F(FlipNetworkTransactionTest, Connect) { |
| +TEST_F(FlipNetworkTransactionTest, Get) { |
| + static const unsigned char syn[] = { |
| + 0x80, 0x01, 0x00, 0x01, // header |
| + 0x01, 0x00, 0x00, 0x30, // FIN, len |
| + 0x00, 0x00, 0x00, 0x01, // stream id |
| + 0xc0, 0x00, 0x00, 0x03, // 4 headers |
| + 0x00, 0x06, 'm', 'e', 't', 'h', 'o', 'd', // "hello" |
| + 0x00, 0x03, 'G', 'E', 'T', // "bye" |
| + 0x00, 0x03, 'u', 'r', 'l', // "url" |
| + 0x00, 0x01, '/', // "/" |
| + 0x00, 0x07, 'v', 'e', 'r', 's', 'i', 'o', 'n', // "status" |
| + 0x00, 0x08, 'H', 'T', 'T', 'P', '/', '1', '.', '1', // "200" |
| + }; |
| + |
| static const unsigned char syn_reply[] = { |
| 0x80, 0x01, 0x00, 0x02, // header |
| 0x00, 0x00, 0x00, 0x45, |
| @@ -171,17 +184,103 @@ |
| 0x00, 0x00, 0x00, 0x00, |
| }; |
| + MockWrite writes[] = { |
| + MockWrite(true, reinterpret_cast<const char*>(syn), sizeof(syn)), |
| + }; |
| + |
| + MockRead reads[] = { |
| + MockRead(true, reinterpret_cast<const char*>(syn_reply), sizeof(syn_reply)), |
| + MockWrite(true, reinterpret_cast<const char*>(body_frame), |
| + sizeof(body_frame)), |
| + MockWrite(true, reinterpret_cast<const char*>(fin_frame), |
| + sizeof(fin_frame)), |
| + MockRead(true, 0, 0) // EOF |
| + }; |
| + |
| + HttpRequestInfo request; |
| + request.method = "GET"; |
| + request.url = GURL("http://www.google.com/"); |
| + request.load_flags = 0; |
| + TransactionHelperResult out = TransactionHelper(request, reads, writes); |
| + EXPECT_EQ(OK, out.rv); |
| + EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| + EXPECT_EQ("hello!", out.response_data); |
| +} |
| + |
| +// Test that a simple POST works. |
| +TEST_F(FlipNetworkTransactionTest, Post) { |
| + static const char upload[] = { "hello world" }; |
| + |
| + // Setup the request |
| + HttpRequestInfo request; |
| + request.method = "POST"; |
| + request.url = GURL("http://www.google.com/"); |
| + request.upload_data = new UploadData(); |
| + request.upload_data->AppendBytes(upload, sizeof(upload)); |
| + |
| + // TODO(mbelshe): Hook up the write validation. |
| + |
| + //static const unsigned char syn[] = { |
| + // 0x80, 0x01, 0x00, 0x01, // header |
| + // 0x00, 0x00, 0x00, 0x30, // FIN, len |
| + // 0x00, 0x00, 0x00, 0x01, // stream id |
| + // 0xc0, 0x00, 0x00, 0x03, // 4 headers |
| + // 0x00, 0x06, 'm', 'e', 't', 'h', 'o', 'd', // "hello" |
| + // 0x00, 0x03, 'G', 'E', 'T', // "bye" |
| + // 0x00, 0x03, 'u', 'r', 'l', // "url" |
| + // 0x00, 0x01, '/', // "/" |
| + // 0x00, 0x07, 'v', 'e', 'r', 's', 'i', 'o', 'n', // "status" |
| + // 0x00, 0x08, 'H', 'T', 'T', 'P', '/', '1', '.', '1', // "200" |
| + //}; |
| + |
| + //static const unsigned char upload_frame[] = { |
| + // 0x00, 0x00, 0x00, 0x01, // header |
| + // 0x01, 0x00, 0x00, 0x06, // FIN flag |
| + // 'h', 'e', 'l', 'l', 'o', '!', // "hello" |
| + //}; |
| + |
| + // The response |
| + static const unsigned char syn_reply[] = { |
| + 0x80, 0x01, 0x00, 0x02, // header |
| + 0x00, 0x00, 0x00, 0x45, |
| + 0x00, 0x00, 0x00, 0x01, |
| + 0x00, 0x00, 0x00, 0x04, // 4 headers |
| + 0x00, 0x05, 'h', 'e', 'l', 'l', 'o', // "hello" |
| + 0x00, 0x03, 'b', 'y', 'e', // "bye" |
| + 0x00, 0x06, 's', 't', 'a', 't', 'u', 's', // "status" |
| + 0x00, 0x03, '2', '0', '0', // "200" |
| + 0x00, 0x03, 'u', 'r', 'l', // "url" |
| + 0x00, 0x0a, '/', 'i', 'n', 'd', 'e', 'x', '.', 'p', 'h', 'p', // "HTTP/1.1" |
| + 0x00, 0x07, 'v', 'e', 'r', 's', 'i', 'o', 'n', // "version" |
| + 0x00, 0x08, 'H', 'T', 'T', 'P', '/', '1', '.', '1', // "HTTP/1.1" |
| + }; |
| + static const unsigned char body_frame[] = { |
| + 0x00, 0x00, 0x00, 0x01, // header |
| + 0x00, 0x00, 0x00, 0x06, |
| + 'h', 'e', 'l', 'l', 'o', '!', // "hello" |
| + }; |
| + static const unsigned char fin_frame[] = { |
| + 0x80, 0x01, 0x00, 0x03, // header |
| + 0x00, 0x00, 0x00, 0x08, |
| + 0x00, 0x00, 0x00, 0x01, |
| + 0x00, 0x00, 0x00, 0x00, |
| + }; |
| + |
| + //MockWrite writes[] = { |
| + // MockWrite(true, reinterpret_cast<const char*>(syn), sizeof(syn)), |
| + // MockWrite(true, reinterpret_cast<const char*>(upload_frame), |
| + // sizeof(upload_frame)), |
| + //}; |
| + |
| MockRead data_reads[] = { |
| MockRead(true, reinterpret_cast<const char*>(syn_reply), sizeof(syn_reply)), |
| MockRead(true, reinterpret_cast<const char*>(body_frame), |
| sizeof(body_frame)), |
| MockRead(true, reinterpret_cast<const char*>(fin_frame), sizeof(fin_frame)), |
| - MockRead(true, 0, 0), // EOF |
| + MockRead(true, 0, 0) // EOF |
| }; |
| - // We disable SSL for this test. |
| - FlipSession::SetSSLMode(false); |
| - SimpleGetHelperResult out = SimpleGetHelper(data_reads); |
| + TransactionHelperResult out = TransactionHelper(request, data_reads, NULL); |
| EXPECT_EQ(OK, out.rv); |
| EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| EXPECT_EQ("hello!", out.response_data); |
| @@ -205,14 +304,17 @@ |
| MockRead(true, reinterpret_cast<const char*>(body_frame), |
| sizeof(body_frame)), |
| MockRead(true, reinterpret_cast<const char*>(fin_frame), sizeof(fin_frame)), |
| - MockRead(true, 0, 0), // EOF |
| + MockRead(true, 0, 0) // EOF |
| }; |
| - // We disable SSL for this test. |
| - FlipSession::SetSSLMode(false); |
| - SimpleGetHelperResult out = SimpleGetHelper(data_reads); |
| + HttpRequestInfo request; |
| + request.method = "GET"; |
| + request.url = GURL("http://www.google.com/"); |
| + request.load_flags = 0; |
| + TransactionHelperResult out = TransactionHelper(request, data_reads, NULL); |
| EXPECT_EQ(ERR_SYN_REPLY_NOT_RECEIVED, out.rv); |
| } |
| + |
|
wtc
2009/10/28 01:12:05
Please delete this blank line, too.
|
| } // namespace net |