def test_create_cookie_header_dict_cookie():

    """ Test header creation for cookies when cookie contents in dictionary """
    cookie_dict = {"JSESSIONID": "ABC123DEF456",
                   "SPECIALTOKEN": "TOPS.E.KRATZ"}
    msg_dict_cookie = HttpRequestMessage("GET", "/", 'localhost', {}, cookies=cookie_dict)
    cookie_header = msg_dict_cookie.create_cookie_header()
    assert cookie_header == "SPECIALTOKEN=TOPS.E.KRATZ; JSESSIONID=ABC123DEF456;"
def test_create_request_no_cust_ver():

    """ Test message for default version (1.1) and correct syntax """
    msg_no_cust_ver = HttpRequestMessage("GET", "/mypage", 'localhost', {})

    msg_str = "GET /mypage HTTP/1.1\r\n"

    assert msg_no_cust_ver.create_request() == msg_str
def test_create_get_headers():

    """ Test default created GET headers for expected structure """
    msg_get = HttpRequestMessage("GET", "/", 'localhost', {})
    get_headers = msg_get.create_get_headers()
    assert 'accept' == get_headers[0][0]
    assert get_headers[0][1] != None
    assert 'date' == get_headers[1][0]
    assert get_headers[1][1] != None
def test_create_request_cust_ver():

    """ Test message for custom HTTP version """
    msg_cust_ver = HttpRequestMessage("GET", "/yourpage", 'localhost', {},
                                      http_version='0.9')

    msg_str = "GET /yourpage HTTP/0.9\r\n"

    assert msg_cust_ver.create_request() == msg_str
def test_message_init_no_body():

    """ Test message construction without a body.
        e.g. standard GET request
    """
    msg_no_body = HttpRequestMessage("GET", "/", 'localhost', {})

    assert msg_no_body.method == "GET"
    assert msg_no_body.page == "/"
    assert msg_no_body.headers == msg_no_body.create_headers()
    assert msg_no_body.body == ""
def test_create_post_headers():

    """ Test default created POST headers for expected structure """
    msg_post = HttpRequestMessage("POST", "/", 'localhost', {})
    post_headers = msg_post.create_post_headers()
    assert 'content-type' == post_headers[0][0]
    assert post_headers[0][1] != None
    assert 'content-length' == post_headers[1][0]
    assert post_headers[1][1] >= 0
    assert 'accept' == post_headers[2][0]
    assert post_headers[2][1] != None
def test_message_init_w_body():

    """ Test message construction with body content.
        e.g. standard POST request
    """
    msg_w_body = HttpRequestMessage("POST", "/", '192.168.0.1', {},
                                    body="body stuff")
    assert msg_w_body.method == "POST"
    assert msg_w_body.page == "/"
    assert msg_w_body.headers == msg_w_body.create_headers()
    assert msg_w_body.body == "body stuff"
def test_message_init_w_headers():

    """ Test message with modified headers.
        Verify supplied headers overwrite defaults.
    """
    header_dict = {'Accept': 'application/ld+json'}
    msg_w_headers = HttpRequestMessage("GET", "/test", '127.0.0.1',
                                       headers=header_dict)

    assert msg_w_headers.method == "GET"
    assert msg_w_headers.page == "/test"
    assert msg_w_headers.headers == msg_w_headers.create_headers(header_dict)
    assert msg_w_headers.body == ""
def test_create_cookie_header_mixed_cookies():

    """ Test header createion for cookies when cookie contents
        are both dict and obj
    """
    cookie_one = Cookie("CSRF_TOKEN", "1234zyxw", "mydomain.com", "/")
    cookie_two = None
    cookie_dict = {"JSESSIONID": "ABC123DEF456",
                   "cookie_obj123": cookie_one,
                   "cookie_obj2": cookie_two,
                   "Tracker": "trackingnum_1"}
    msg_mixed_cookie = HttpRequestMessage("GET", "/", 'localhost', {}, cookies=cookie_dict)
    cookie_str = ("Tracker=trackingnum_1; "
                  "CSRF_TOKEN=1234zyxw; "
                  "JSESSIONID=ABC123DEF456;")
    assert msg_mixed_cookie.create_cookie_header() == cookie_str
def test_create_header_str():

    """ Test header string for correct syntax and expected order """
    headers = {'Accept': 'application/json',
               'Connection': 'keep-alive',
               'User-Agent': 'RequestBot_0.1',
               'From': '*****@*****.**',
               'Host': 'localhost',
               'Date': '2015-01-01'}

    expec_str = ("From: [email protected]\r\n"
                 "Connection: keep-alive\r\n"
                 "Accept: application/json\r\n"
                 "User-Agent: RequestBot_0.1\r\n"
                 "Host: localhost\r\n"
                 "Date: 2015-01-01\r\n")

    msg_w_headers = HttpRequestMessage("GET", "/", 'localhost', headers)
    header_str = msg_w_headers.create_header_str()
    assert header_str == expec_str
def test_merge_header_vals():

    """ Test header merge function for correct datastructure
        and value preferences
    """
    msg = HttpRequestMessage("GET", "/", 'localhost', {})
    header_vals = [('connection', 'keep-alive'),
                   ('host', 'localhost'),
                   ('from', '*****@*****.**'),
                   ('user-agent', 'RequestBot_0.1'),
                   ('cookie', ''),
                   ('accept', '*/*')]

    headers = {'Accept': 'application/ld+json'}
    h_dict = msg.merge_header_vals(header_vals, headers)

    assert 'Connection' in h_dict
    assert 'Host' in h_dict
    assert 'Cookie' not in h_dict
    assert 'Accept' in h_dict
    assert h_dict['Accept'] == 'application/ld+json'
def test_create_cookie_header_obj_cookie():

    """ Test header creation for cookies when cookie contents in obj form """
    cookie_one = Cookie("CSRF_TOKEN", "1234zyxw", "mydomain.com", "/")
    msg_obj_cookie = HttpRequestMessage("GET", "/", 'localhost', {}, cookies=cookie_one)
    assert msg_obj_cookie.create_cookie_header() == "CSRF_TOKEN=1234zyxw;"
def test_create_cookie_header_none_cookie():

    """ Test header creation for cookies when cookie is declared to be none """
    msg_none_cookie = HttpRequestMessage("GET", "/", 'localhost', {}, cookies=None)
    assert msg_none_cookie.cookies == {}
    assert msg_none_cookie.create_cookie_header() == ""
def test_create_cookie_header_no_cookie():

    """ Test header creation for cookies from no supplied cookie """
    msg_no_cookie = HttpRequestMessage("GET", "/", 'localhost', {})
    assert msg_no_cookie.create_cookie_header() == ""