diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-03-26 17:12:52 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-03-26 17:20:27 +0900 |
| commit | d64089632e82a2548752c7a6baaa68365a795a74 (patch) | |
| tree | 57fc7b85a8c1290975d58fa4761b04a7695bf7e3 /test/HttpServerTest.cc | |
| parent | c81b1321122e8509b55c94c0cbca0d8d6d319f0c (diff) | |
| parent | a7cd943a06b1a5ff4515b57060b84037f8d01f9f (diff) | |
Merge branch 'master' into random-webseeding
Diffstat (limited to 'test/HttpServerTest.cc')
| -rw-r--r-- | test/HttpServerTest.cc | 108 |
1 files changed, 56 insertions, 52 deletions
diff --git a/test/HttpServerTest.cc b/test/HttpServerTest.cc index 74861671..7f457b7f 100644 --- a/test/HttpServerTest.cc +++ b/test/HttpServerTest.cc @@ -7,11 +7,11 @@ namespace aria2 { -class HttpServerTest : public CppUnit::TestFixture -{ +class HttpServerTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(HttpServerTest); CPPUNIT_TEST(testHttpBasicAuth); CPPUNIT_TEST_SUITE_END(); + public: void testHttpBasicAuth(); }; @@ -19,23 +19,25 @@ public: CPPUNIT_TEST_SUITE_REGISTRATION(HttpServerTest); namespace { - std::unique_ptr<HttpServer> performHttpRequest(SocketCore& server, std::string request) - { - std::pair<std::string, uint16_t> addr; - server.getAddrInfo(addr); +std::unique_ptr<HttpServer> performHttpRequest(SocketCore& server, + std::string request) +{ + auto endpoint = server.getAddrInfo(); - SocketCore client; - client.establishConnection("localhost", addr.second); - while (!client.isWritable(0)) {} + SocketCore client; + client.establishConnection("localhost", endpoint.port); + while (!client.isWritable(0)) { + } - auto inbound = server.acceptConnection(); - inbound->setBlockingMode(); - auto rv = make_unique<HttpServer>(inbound); + auto inbound = server.acceptConnection(); + inbound->setBlockingMode(); + auto rv = make_unique<HttpServer>(inbound); - client.writeData(request); - while (!rv->receiveRequest()) {} - return rv; + client.writeData(request); + while (!rv->receiveRequest()) { } + return rv; +} } // namespace void HttpServerTest::testHttpBasicAuth() @@ -70,18 +72,18 @@ void HttpServerTest::testHttpBasicAuth() { // Client provided credentials should be ignored when there is no auth. - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNz\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNz\r\n\r\n"); req->setUsernamePassword("", "pass"); CPPUNIT_ASSERT(req->authenticate()); } { // Correct client provided credentials should match. - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNz\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNz\r\n\r\n"); req->setUsernamePassword("user", "pass"); CPPUNIT_ASSERT(req->authenticate()); } @@ -90,46 +92,48 @@ void HttpServerTest::testHttpBasicAuth() // Correct client provided credentials should match (2). // Embedded nulls auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcgBudWxsOnBhc3MAbnVsbA==\r\n\r\n"); - req->setUsernamePassword(std::string("user\0null", 9), std::string("pass\0null", 9)); + server, "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: " + "Basic dXNlcgBudWxsOnBhc3MAbnVsbA==\r\n\r\n"); + req->setUsernamePassword(std::string("user\0null", 9), + std::string("pass\0null", 9)); CPPUNIT_ASSERT(req->authenticate()); } { // Correct client provided credentials should match (3). // Embedded, leading nulls - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic AHVzZXI6AHBhc3M=\r\n\r\n"); - req->setUsernamePassword(std::string("\0user", 5), std::string("\0pass", 5)); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "AHVzZXI6AHBhc3M=\r\n\r\n"); + req->setUsernamePassword(std::string("\0user", 5), + std::string("\0pass", 5)); CPPUNIT_ASSERT(req->authenticate()); } { // Correct client provided credentials should match (3). // Whitespace - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic IHVzZXIJOgpwYXNzDQ==\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "IHVzZXIJOgpwYXNzDQ==\r\n\r\n"); req->setUsernamePassword(" user\t", "\npass\r"); CPPUNIT_ASSERT(req->authenticate()); } { // Wrong client provided credentials should NOT match. - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNz\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNz\r\n\r\n"); req->setUsernamePassword("user", "pass2"); CPPUNIT_ASSERT(!req->authenticate()); } { // Wrong client provided credentials should NOT match (2). - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNz\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNz\r\n\r\n"); req->setUsernamePassword("user2", "pass"); CPPUNIT_ASSERT(!req->authenticate()); } @@ -137,9 +141,9 @@ void HttpServerTest::testHttpBasicAuth() { // Wrong client provided credentials should NOT match (3). // Embedded null in pass config. - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNz\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNz\r\n\r\n"); req->setUsernamePassword("user", std::string("pass\0three", 10)); CPPUNIT_ASSERT(!req->authenticate()); } @@ -147,9 +151,9 @@ void HttpServerTest::testHttpBasicAuth() { // Wrong client provided credentials should NOT match (4). // Embedded null in user config. - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNz\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNz\r\n\r\n"); req->setUsernamePassword(std::string("user\0four", 9), "pass"); CPPUNIT_ASSERT(!req->authenticate()); } @@ -157,9 +161,9 @@ void HttpServerTest::testHttpBasicAuth() { // Wrong client provided credentials should NOT match (5). // Embedded null in http auth. - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic dXNlcjpwYXNzAHRocmVl\r\n\r\n"); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "dXNlcjpwYXNzAHRocmVl\r\n\r\n"); req->setUsernamePassword("user", "pass"); CPPUNIT_ASSERT(!req->authenticate()); } @@ -168,18 +172,18 @@ void HttpServerTest::testHttpBasicAuth() // Wrong client provided credentials should NOT match (6). // Embedded null in http auth. // Embedded, leading nulls - auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\nAuthorization: Basic AHVzZXI6AHBhc3M=\r\n\r\n"); - req->setUsernamePassword(std::string("\0user5", 6), std::string("\0pass", 5)); + auto req = performHttpRequest(server, "GET / HTTP/1.1\r\nUser-Agent: " + "aria2-test\r\nAuthorization: Basic " + "AHVzZXI6AHBhc3M=\r\n\r\n"); + req->setUsernamePassword(std::string("\0user5", 6), + std::string("\0pass", 5)); CPPUNIT_ASSERT(!req->authenticate()); } { // When there is a user and password, the client must actually provide auth. auto req = performHttpRequest( - server, - "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\n\r\n"); + server, "GET / HTTP/1.1\r\nUser-Agent: aria2-test\r\n\r\n"); req->setUsernamePassword("user", "pass"); CPPUNIT_ASSERT(!req->authenticate()); } |
