mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Improve test coverage for HTTP service
This commit is contained in:
parent
646eeb05e9
commit
79314f7d4a
2 changed files with 84 additions and 15 deletions
|
@ -296,9 +296,13 @@ SrsHttpMessage::SrsHttpMessage(ISrsReader* reader, SrsFastStream* buffer) : ISrs
|
||||||
|
|
||||||
jsonp = false;
|
jsonp = false;
|
||||||
|
|
||||||
_method = 0;
|
// As 0 is DELETE, so we use GET as default.
|
||||||
_status = 0;
|
_method = SRS_CONSTS_HTTP_GET;
|
||||||
|
// 200 is ok.
|
||||||
|
_status = SRS_CONSTS_HTTP_OK;
|
||||||
|
// -1 means infinity chunked mode.
|
||||||
_content_length = -1;
|
_content_length = -1;
|
||||||
|
// From HTTP/1.1, default to keep alive.
|
||||||
_keep_alive = true;
|
_keep_alive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,18 +342,21 @@ srs_error_t SrsHttpMessage::set_url(string url, bool allow_jsonp)
|
||||||
|
|
||||||
_url = url;
|
_url = url;
|
||||||
|
|
||||||
|
// parse uri from schema/server:port/path?query
|
||||||
|
std::string uri = _url;
|
||||||
|
|
||||||
|
if (!srs_string_contains(uri, "://")) {
|
||||||
// use server public ip when host not specified.
|
// use server public ip when host not specified.
|
||||||
// to make telnet happy.
|
// to make telnet happy.
|
||||||
std::string host = _header.get("Host");
|
std::string host = _header.get("Host");
|
||||||
if (host.empty()) {
|
if (host.empty()) {
|
||||||
host= srs_get_public_internet_address();
|
host= srs_get_public_internet_address();
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse uri from schema/server:port/path?query
|
|
||||||
std::string uri = _url;
|
|
||||||
if (!host.empty()) {
|
if (!host.empty()) {
|
||||||
uri = "http://" + host + _url;
|
uri = "http://" + host + _url;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((err = _uri->initialize(uri)) != srs_success) {
|
if ((err = _uri->initialize(uri)) != srs_success) {
|
||||||
return srs_error_wrap(err, "init uri %s", uri.c_str());
|
return srs_error_wrap(err, "init uri %s", uri.c_str());
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,20 @@ using namespace std;
|
||||||
#include <srs_service_st.hpp>
|
#include <srs_service_st.hpp>
|
||||||
#include <srs_service_utility.hpp>
|
#include <srs_service_utility.hpp>
|
||||||
|
|
||||||
// Disable coroutine test for OSX.
|
|
||||||
#if !defined(SRS_OSX)
|
|
||||||
|
|
||||||
#include <srs_service_st.hpp>
|
#include <srs_service_st.hpp>
|
||||||
|
#include <srs_service_http_conn.hpp>
|
||||||
|
|
||||||
|
class MockSrsConnection : public ISrsConnection
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MockSrsConnection() {
|
||||||
|
}
|
||||||
|
virtual ~MockSrsConnection() {
|
||||||
|
}
|
||||||
|
virtual std::string remote_ip() {
|
||||||
|
return "127.0.0.1";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
VOID TEST(ServiceTimeTest, TimeUnit)
|
VOID TEST(ServiceTimeTest, TimeUnit)
|
||||||
{
|
{
|
||||||
|
@ -376,6 +386,7 @@ VOID TEST(TCPServerTest, StringIsHex)
|
||||||
VOID TEST(TCPServerTest, WritevIOVC)
|
VOID TEST(TCPServerTest, WritevIOVC)
|
||||||
{
|
{
|
||||||
srs_error_t err;
|
srs_error_t err;
|
||||||
|
|
||||||
if (true) {
|
if (true) {
|
||||||
MockTcpHandler h;
|
MockTcpHandler h;
|
||||||
SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port);
|
SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port);
|
||||||
|
@ -431,4 +442,55 @@ VOID TEST(TCPServerTest, WritevIOVC)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
VOID TEST(TCPServerTest, MessageConnection)
|
||||||
|
{
|
||||||
|
srs_error_t err;
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
MockSrsConnection conn;
|
||||||
|
SrsHttpMessage m;
|
||||||
|
m.set_connection(&conn);
|
||||||
|
EXPECT_TRUE(&conn == m.connection());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsHttpMessage m;
|
||||||
|
HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?callback=fn&method=POST", true));
|
||||||
|
EXPECT_TRUE(m.jsonp); EXPECT_STREQ("POST", m.jsonp_method.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsHttpMessage m;
|
||||||
|
HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?callback=fn&method=GET", true));
|
||||||
|
EXPECT_EQ(SRS_CONSTS_HTTP_GET, m.method()); EXPECT_STREQ("GET", m.method_str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsHttpMessage m;
|
||||||
|
HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?callback=fn&method=PUT", true));
|
||||||
|
EXPECT_EQ(SRS_CONSTS_HTTP_PUT, m.method()); EXPECT_STREQ("PUT", m.method_str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsHttpMessage m;
|
||||||
|
HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?callback=fn&method=POST", true));
|
||||||
|
EXPECT_EQ(SRS_CONSTS_HTTP_POST, m.method()); EXPECT_STREQ("POST", m.method_str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsHttpMessage m;
|
||||||
|
HELPER_EXPECT_SUCCESS(m.set_url("http://127.0.0.1/live/livestream.flv?callback=fn&method=DELETE", true));
|
||||||
|
EXPECT_EQ(SRS_CONSTS_HTTP_DELETE, m.method()); EXPECT_STREQ("DELETE", m.method_str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
SrsHttpMessage m;
|
||||||
|
m.set_basic(100, 0, 0); EXPECT_STREQ("OTHER", m.method_str().c_str());
|
||||||
|
m.set_basic(SRS_CONSTS_HTTP_GET, 0, 0); EXPECT_EQ(SRS_CONSTS_HTTP_GET, m.method()); EXPECT_STREQ("GET", m.method_str().c_str());
|
||||||
|
m.set_basic(SRS_CONSTS_HTTP_PUT, 0, 0); EXPECT_EQ(SRS_CONSTS_HTTP_PUT, m.method()); EXPECT_STREQ("PUT", m.method_str().c_str());
|
||||||
|
m.set_basic(SRS_CONSTS_HTTP_POST, 0, 0); EXPECT_EQ(SRS_CONSTS_HTTP_POST, m.method()); EXPECT_STREQ("POST", m.method_str().c_str());
|
||||||
|
m.set_basic(SRS_CONSTS_HTTP_DELETE, 0, 0); EXPECT_EQ(SRS_CONSTS_HTTP_DELETE, m.method()); EXPECT_STREQ("DELETE", m.method_str().c_str());
|
||||||
|
m.set_basic(SRS_CONSTS_HTTP_OPTIONS, 0, 0); EXPECT_EQ(SRS_CONSTS_HTTP_OPTIONS, m.method()); EXPECT_STREQ("OPTIONS", m.method_str().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue