import warnings

import pytest

from urllib3.connection import HTTPConnection
from urllib3.response import HTTPResponse
from urllib3.packages.six.moves import http_cookiejar, urllib


class TestVersionCompatibility(object):
    def test_connection_strict(self):
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("always")

            # strict=True is deprecated in Py33+
            HTTPConnection('localhost', 12345, strict=True)

            if w:
                pytest.fail('HTTPConnection raised warning on strict=True: %r' % w[0].message)

    def test_connection_source_address(self):
        try:
            # source_address does not exist in Py26-
            HTTPConnection('localhost', 12345, source_address='127.0.0.1')
        except TypeError as e:
            pytest.fail('HTTPConnection raised TypeError on source_adddress: %r' % e)


class TestCookiejar(object):
    def test_extract(self):
        request = urllib.request.Request('http://google.com')
        cookiejar = http_cookiejar.CookieJar()
        response = HTTPResponse()

        cookies = ["sessionhash=abcabcabcabcab; path=/; HttpOnly",
                   "lastvisit=1348253375; expires=Sat, 21-Sep-2050 18:49:35 GMT; path=/"]
        for c in cookies:
            response.headers.add('set-cookie', c)
        cookiejar.extract_cookies(response, request)
        assert len(cookiejar) == len(cookies)
