Exemplo n.º 1
0
class SimpleHTTPResponseTest(unittest.TestCase):
    def setUp(self):
        from acme.challenges import SimpleHTTPResponse
        self.msg_http = SimpleHTTPResponse(path='6tbIMBC5Anhl5bOlWT5ZFA',
                                           tls=False)
        self.msg_https = SimpleHTTPResponse(path='6tbIMBC5Anhl5bOlWT5ZFA')
        self.jmsg_http = {
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': False,
        }
        self.jmsg_https = {
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': True,
        }

    def test_good_path(self):
        self.assertTrue(self.msg_http.good_path)
        self.assertTrue(self.msg_https.good_path)
        self.assertFalse(
            self.msg_http.update(path=(self.msg_http.path * 10)).good_path)

    def test_scheme(self):
        self.assertEqual('http', self.msg_http.scheme)
        self.assertEqual('https', self.msg_https.scheme)

    def test_uri(self):
        self.assertEqual(
            'http://example.com/.well-known/acme-challenge/'
            '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_http.uri('example.com'))
        self.assertEqual(
            'https://example.com/.well-known/acme-challenge/'
            '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_https.uri('example.com'))

    def test_to_partial_json(self):
        self.assertEqual(self.jmsg_http, self.msg_http.to_partial_json())
        self.assertEqual(self.jmsg_https, self.msg_https.to_partial_json())

    def test_from_json(self):
        from acme.challenges import SimpleHTTPResponse
        self.assertEqual(self.msg_http,
                         SimpleHTTPResponse.from_json(self.jmsg_http))
        self.assertEqual(self.msg_https,
                         SimpleHTTPResponse.from_json(self.jmsg_https))

    def test_from_json_hashable(self):
        from acme.challenges import SimpleHTTPResponse
        hash(SimpleHTTPResponse.from_json(self.jmsg_http))
        hash(SimpleHTTPResponse.from_json(self.jmsg_https))
class SimpleHTTPResponseTest(unittest.TestCase):

    def setUp(self):
        from acme.challenges import SimpleHTTPResponse
        self.msg_http = SimpleHTTPResponse(
            path='6tbIMBC5Anhl5bOlWT5ZFA', tls=False)
        self.msg_https = SimpleHTTPResponse(path='6tbIMBC5Anhl5bOlWT5ZFA')
        self.jmsg_http = {
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': False,
        }
        self.jmsg_https = {
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': True,
        }

    def test_good_path(self):
        self.assertTrue(self.msg_http.good_path)
        self.assertTrue(self.msg_https.good_path)
        self.assertFalse(
            self.msg_http.update(path=(self.msg_http.path * 10)).good_path)

    def test_scheme(self):
        self.assertEqual('http', self.msg_http.scheme)
        self.assertEqual('https', self.msg_https.scheme)

    def test_uri(self):
        self.assertEqual('http://example.com/.well-known/acme-challenge/'
                         '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_http.uri('example.com'))
        self.assertEqual('https://example.com/.well-known/acme-challenge/'
                         '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_https.uri('example.com'))

    def test_to_partial_json(self):
        self.assertEqual(self.jmsg_http, self.msg_http.to_partial_json())
        self.assertEqual(self.jmsg_https, self.msg_https.to_partial_json())

    def test_from_json(self):
        from acme.challenges import SimpleHTTPResponse
        self.assertEqual(
            self.msg_http, SimpleHTTPResponse.from_json(self.jmsg_http))
        self.assertEqual(
            self.msg_https, SimpleHTTPResponse.from_json(self.jmsg_https))

    def test_from_json_hashable(self):
        from acme.challenges import SimpleHTTPResponse
        hash(SimpleHTTPResponse.from_json(self.jmsg_http))
        hash(SimpleHTTPResponse.from_json(self.jmsg_https))
Exemplo n.º 3
0
class SimpleHTTPResponseTest(unittest.TestCase):
    # pylint: disable=too-many-instance-attributes

    def setUp(self):
        from acme.challenges import SimpleHTTPResponse
        self.msg_http = SimpleHTTPResponse(
            path='6tbIMBC5Anhl5bOlWT5ZFA', tls=False)
        self.msg_https = SimpleHTTPResponse(path='6tbIMBC5Anhl5bOlWT5ZFA')
        self.jmsg_http = {
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': False,
        }
        self.jmsg_https = {
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': True,
        }

        from acme.challenges import SimpleHTTP
        self.chall = SimpleHTTP(token="foo")
        self.resp_http = SimpleHTTPResponse(path="bar", tls=False)
        self.resp_https = SimpleHTTPResponse(path="bar", tls=True)
        self.good_headers = {'Content-Type': SimpleHTTPResponse.CONTENT_TYPE}

    def test_good_path(self):
        self.assertTrue(self.msg_http.good_path)
        self.assertTrue(self.msg_https.good_path)
        self.assertFalse(
            self.msg_http.update(path=(self.msg_http.path * 10)).good_path)

    def test_scheme(self):
        self.assertEqual('http', self.msg_http.scheme)
        self.assertEqual('https', self.msg_https.scheme)

    def test_port(self):
        self.assertEqual(80, self.msg_http.port)
        self.assertEqual(443, self.msg_https.port)

    def test_uri(self):
        self.assertEqual(
            'http://example.com/.well-known/acme-challenge/'
            '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_http.uri('example.com'))
        self.assertEqual(
            'https://example.com/.well-known/acme-challenge/'
            '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_https.uri('example.com'))

    def test_to_partial_json(self):
        self.assertEqual(self.jmsg_http, self.msg_http.to_partial_json())
        self.assertEqual(self.jmsg_https, self.msg_https.to_partial_json())

    def test_from_json(self):
        from acme.challenges import SimpleHTTPResponse
        self.assertEqual(
            self.msg_http, SimpleHTTPResponse.from_json(self.jmsg_http))
        self.assertEqual(
            self.msg_https, SimpleHTTPResponse.from_json(self.jmsg_https))

    def test_from_json_hashable(self):
        from acme.challenges import SimpleHTTPResponse
        hash(SimpleHTTPResponse.from_json(self.jmsg_http))
        hash(SimpleHTTPResponse.from_json(self.jmsg_https))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_good_token(self, mock_get):
        for resp in self.resp_http, self.resp_https:
            mock_get.reset_mock()
            mock_get.return_value = mock.MagicMock(
                text=self.chall.token, headers=self.good_headers)
            self.assertTrue(resp.simple_verify(self.chall, "local"))
            mock_get.assert_called_once_with(resp.uri("local"), verify=False)

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_bad_token(self, mock_get):
        mock_get.return_value = mock.MagicMock(
            text=self.chall.token + "!", headers=self.good_headers)
        self.assertFalse(self.resp_http.simple_verify(self.chall, "local"))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_bad_content_type(self, mock_get):
        mock_get().text = self.chall.token
        self.assertFalse(self.resp_http.simple_verify(self.chall, "local"))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_connection_error(self, mock_get):
        mock_get.side_effect = requests.exceptions.RequestException
        self.assertFalse(self.resp_http.simple_verify(self.chall, "local"))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_port(self, mock_get):
        self.resp_http.simple_verify(self.chall, "local", 4430)
        self.assertEqual("local:4430", urlparse.urlparse(
            mock_get.mock_calls[0][1][0]).netloc)
class SimpleHTTPResponseTest(unittest.TestCase):
    # pylint: disable=too-many-instance-attributes

    def setUp(self):
        from acme.challenges import SimpleHTTPResponse
        self.msg_http = SimpleHTTPResponse(path='6tbIMBC5Anhl5bOlWT5ZFA',
                                           tls=False)
        self.msg_https = SimpleHTTPResponse(path='6tbIMBC5Anhl5bOlWT5ZFA')
        self.jmsg_http = {
            'resource': 'challenge',
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': False,
        }
        self.jmsg_https = {
            'resource': 'challenge',
            'type': 'simpleHttp',
            'path': '6tbIMBC5Anhl5bOlWT5ZFA',
            'tls': True,
        }

        from acme.challenges import SimpleHTTP
        self.chall = SimpleHTTP(token="foo")
        self.resp_http = SimpleHTTPResponse(path="bar", tls=False)
        self.resp_https = SimpleHTTPResponse(path="bar", tls=True)
        self.good_headers = {'Content-Type': SimpleHTTPResponse.CONTENT_TYPE}

    def test_good_path(self):
        self.assertTrue(self.msg_http.good_path)
        self.assertTrue(self.msg_https.good_path)
        self.assertFalse(
            self.msg_http.update(path=(self.msg_http.path * 10)).good_path)

    def test_scheme(self):
        self.assertEqual('http', self.msg_http.scheme)
        self.assertEqual('https', self.msg_https.scheme)

    def test_port(self):
        self.assertEqual(80, self.msg_http.port)
        self.assertEqual(443, self.msg_https.port)

    def test_uri(self):
        self.assertEqual(
            'http://example.com/.well-known/acme-challenge/'
            '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_http.uri('example.com'))
        self.assertEqual(
            'https://example.com/.well-known/acme-challenge/'
            '6tbIMBC5Anhl5bOlWT5ZFA', self.msg_https.uri('example.com'))

    def test_to_partial_json(self):
        self.assertEqual(self.jmsg_http, self.msg_http.to_partial_json())
        self.assertEqual(self.jmsg_https, self.msg_https.to_partial_json())

    def test_from_json(self):
        from acme.challenges import SimpleHTTPResponse
        self.assertEqual(self.msg_http,
                         SimpleHTTPResponse.from_json(self.jmsg_http))
        self.assertEqual(self.msg_https,
                         SimpleHTTPResponse.from_json(self.jmsg_https))

    def test_from_json_hashable(self):
        from acme.challenges import SimpleHTTPResponse
        hash(SimpleHTTPResponse.from_json(self.jmsg_http))
        hash(SimpleHTTPResponse.from_json(self.jmsg_https))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_good_token(self, mock_get):
        for resp in self.resp_http, self.resp_https:
            mock_get.reset_mock()
            mock_get.return_value = mock.MagicMock(text=self.chall.token,
                                                   headers=self.good_headers)
            self.assertTrue(resp.simple_verify(self.chall, "local"))
            mock_get.assert_called_once_with(resp.uri("local"), verify=False)

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_bad_token(self, mock_get):
        mock_get.return_value = mock.MagicMock(text=self.chall.token + "!",
                                               headers=self.good_headers)
        self.assertFalse(self.resp_http.simple_verify(self.chall, "local"))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_bad_content_type(self, mock_get):
        mock_get().text = self.chall.token
        self.assertFalse(self.resp_http.simple_verify(self.chall, "local"))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_connection_error(self, mock_get):
        mock_get.side_effect = requests.exceptions.RequestException
        self.assertFalse(self.resp_http.simple_verify(self.chall, "local"))

    @mock.patch("acme.challenges.requests.get")
    def test_simple_verify_port(self, mock_get):
        self.resp_http.simple_verify(self.chall, "local", 4430)
        self.assertEqual(
            "local:4430",
            urllib_parse.urlparse(mock_get.mock_calls[0][1][0]).netloc)