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))
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)