Exemplo n.º 1
0
 def test_004_request_method(self):
     # Using requests.request directly also work (kind of an edge case for coverage)
     test_url = "http://test.work4labs.com"
     mapping = {
         test_url: {
             'response': 'Nothingness',
             'http_code': 200
         }
     }
     with patch_requests(mapping) as m_requests:
         resp = requests.request('GET', test_url)
         self.assertEqual(m_requests['request'].call_count, 1)
         self.assertEqual(m_requests['request'].call_args[0][0], 'GET')
         self.assertEqual(m_requests['request'].call_args[0][1], test_url)
         self.assertEqual(resp.url, test_url)
         self.assertEqual(resp.status_code, 200)
         self.assertIn('Nothingness', resp.text)
 def test_custom_headers_and_json(self):
     # B. Custom headers and json
     test_url = "https://whatever.work4labs.com"
     headers = {"x-api-key": 'Blablabla'}
     mapping = {
         test_url: {
             'headers': headers,
             'json': True,
             'response': ['Nothingness']
         }
     }
     with patch_requests(mapping) as m_requests:
         resp = requests.post(test_url)
         self.assertEqual(m_requests['post'].call_count, 1)
         self.assertEqual(m_requests['post'].call_args[0][0], test_url)
         self.assertEqual(resp.url, test_url)
         self.assertEqual(resp.headers, headers)
         self.assertEqual(resp.status_code, 200)
         self.assertEqual('["Nothingness"]', resp.text)
 def test_stream_response(self):
     # Using requests.request directly also work (kind of an edge case for coverage)
     test_url = "http://test.work4labs.com"
     mapping = {
         test_url: {
             'response': 'Nothingness',
             'json': False,
             'stream': True,
             'http_code': 200,
         }
     }
     with patch_requests(mapping) as m_requests:
         resp = requests.request('GET', test_url, stream=True)
         self.assertEqual(m_requests['request'].call_count, 1)
         self.assertEqual(m_requests['request'].call_args[0][0], 'GET')
         self.assertEqual(m_requests['request'].call_args[0][1], test_url)
         self.assertEqual(resp.url, test_url)
         self.assertEqual(resp.status_code, 200)
         self.assertEqual(resp.raw.stream(), 'Nothingness')
    def test_base_case(self):
        # Check that the mock behaves when used properly
        test_url = "http://test.work4labs.com"
        fail_test_url = "http://kaboom.work4labs.com"
        mapping = {
            test_url: {
                'response': 'Nothingness',
                'http_code': 200
            },
            fail_test_url: {
                'response': 'Nope',
                'http_code': 500
            }
        }

        with patch_requests(mapping) as m_requests:
            # All good, take 1
            resp = requests.post(test_url)
            self.assertEqual(m_requests['post'].call_count, 1)
            self.assertEqual(m_requests['post'].call_args[0][0], test_url)
            self.assertEqual(resp.url, test_url)
            self.assertEqual(resp.status_code, 200)
            self.assertIn('Nothingness', resp.text)

            # All good, take 2
            resp = requests.get(test_url)
            self.assertEqual(m_requests['get'].call_count, 1)
            self.assertEqual(m_requests['get'].call_args[0][0], test_url)
            self.assertEqual(resp.url, test_url)
            self.assertEqual(resp.status_code, 200)
            self.assertIn('Nothingness', resp.text)

            # Uh oh
            resp = requests.get(fail_test_url)
            self.assertEqual(m_requests['get'].call_count, 2)
            self.assertEqual(m_requests['get'].call_args[0][0], fail_test_url)
            self.assertEqual(resp.url, fail_test_url)
            self.assertEqual(resp.status_code, 500)
            self.assertIn('Nope', resp.text)
            with self.assertRaises(HTTPError):
                resp.raise_for_status()  # The mock behaves like a proper requests' Response
 def test_specific_domain(self):
     with patch_requests(allowed_domains=["work4labs.com"], allowed_methods=["get"]):
         resp = requests.get("https://app.work4labs.com")
         self.assertEqual(resp.status_code, 200)
 def test_no_mapping_no_domains(self):
     with self.assertRaises(ValueError):
         with patch_requests():
             pass
 def test_empty_mapping(self):
     # An empty mapping does not crash − but using it will fail
     mapping = {}
     with patch_requests(mapping):
         with self.assertRaises(Exception):  # "called with unexpected URL…"
             requests.get("https://whatever.work4labs.com")