def create_mock_response(url, response_type, **kwargs):
    response = MagicMock()

    response.request.url = url
    response.request.method = kwargs.get("method", "GET")
    response.request.headers = {}
    response.request.body = None

    if response_type == "redirect":
        response.status_code = 301
        response.headers = {"location": kwargs["location"]}
    elif response_type == "error":
        response.status_code = kwargs.get("status_code", 500)
        response.reason = kwargs.get("reason", "fake reason")
        response.text = '{{"reason":"{}"}}'.format(kwargs.get("reason", "fake reason"))
        response.json = lambda: json.loads(response.text)
    elif response_type == "stream":
        response.status_code = kwargs.get("status_code", 200)
        response.headers = {
            "content-disposition": 'attachment; filename="fname.ext"',
            "content-type": "application/octet-stream",
            "content-length": len(response.text),
        }
        response.iter_content = lambda buffer_size: IterateContents(
            kwargs["contents"], kwargs["buffer_size"], kwargs.get("partial_start", 0), kwargs.get("partial_end", None)
        )
    else:
        response.status_code = 200
        response.text = kwargs["text"]
        response.json = lambda: json.loads(response.text)
        response.headers = {"content-type": "application/json", "content-length": len(response.text)}

    return response
Example #2
0
 def _responder(*args, **kwargs):
     del kwargs
     response = MagicMock()
     if args[0].endswith('poll'):
         response.json = MagicMock(return_value=self.__poll_responses.pop())
     else:
         response.json = MagicMock(return_value=ping_get())
     return response
 def get_impl(path):
     result = MagicMock()
     result.ok = True
     if 'listRecords' in path:
         result.json = MagicMock(return_value=self.ACCOUNTING_DATA)
     elif 'hasAccount' in path:
         result.json = MagicMock(return_value=dict(exists=True))
     return result
Example #4
0
 def test_handle_request_invalid_json_request(self):
     json = JSON()
     request = MagicMock()
     request.json = json_lib.dumps({'id': 0, 'params': []})
     self.assertRaises(JSONException, json._handle_request, request)
     request.json = json_lib.dumps({'method': 'some.method', 'params': []})
     self.assertRaises(JSONException, json._handle_request, request)
     request.json = json_lib.dumps({'method': 'some.method', 'id': 0})
     self.assertRaises(JSONException, json._handle_request, request)
Example #5
0
 def test_handle_request_invalid_json_request(self):
     json = JSON()
     request = MagicMock()
     request.json = json_lib.dumps({'id': 0, 'params': []})
     self.assertRaises(JSONException, json._handle_request, request)
     request.json = json_lib.dumps({'method': 'some.method', 'params': []})
     self.assertRaises(JSONException, json._handle_request, request)
     request.json = json_lib.dumps({'method': 'some.method', 'id': 0})
     self.assertRaises(JSONException, json._handle_request, request)
Example #6
0
    def test_get_results(self):
        result1 = {'item1': 6, 'item2': 2}
        result2 = {'item1': 2, 'item2': 4}
        component1 = MagicMock()
        component1.json = MagicMock(return_value=result1)
        self.engine.components['component1'].requests.get.return_value = component1
        component2 = MagicMock()
        component2.json = MagicMock(return_value=result2)
        self.engine.components['component2'].requests.get.return_value = component2

        self.assertEqual(self.engine.get_results({'key': 'value'}), {
            'component1': result1, 'component2': result2
        })
Example #7
0
def test_wallet_info(config):
    response_data = {
        'data': {
            'address': 'simple_address',
            'eth_balance': 13,
            'skale_balance': 123
        }
    }
    response_mock = MagicMock()
    response_mock.status_code = requests.codes.ok
    response_mock.json = Mock(return_value=response_data)
    result = run_command_mock('core.wallet.get_request',
                              response_mock,
                              wallet_info)
    assert result.exit_code == 0
    expected = (
        '--------------------------------------------------\n'
        'Address: simple_address\n'
        'ETH balance: 13 ETH\n'
        'SKALE balance: 123 SKALE\n'
        '--------------------------------------------------\n'
    )
    assert result.output == expected

    result = run_command_mock('core.wallet.get_request',
                              response_mock,
                              wallet_info,
                              ['--format', 'json'])
    assert result.exit_code == 0
    expected = (
        "{'address': 'simple_address', "
        "'eth_balance': 13, 'skale_balance': 123}\n"
    )
    assert result.output == expected
Example #8
0
def response_mock(status_code=0, json_data=None, headers=None, raw=None):
    result = MagicMock()
    result.status_code = status_code
    result.json = MagicMock(return_value=json_data)
    result.headers = headers
    result.raw = raw
    return result
Example #9
0
 def test_payu_widget_form(self):
     """Test showing PayU card widget"""
     self.set_up_provider(True, True)
     self.payment.token = None
     transaction_id = "1234"
     data = MagicMock()
     data.return_value = {
         "id": transaction_id,
         "token_type": "test_token_type",
         "access_token": "test_access_token",
         "links": [{
             "rel": "approval_url",
             "href": "http://approval_url.com"
         }],
     }
     post = MagicMock()
     post.json = data
     post.status_code = 200
     form = self.provider.get_form(payment=self.payment)
     self.assertEqual(form.__class__.__name__, "WidgetPaymentForm")
     self.assertTrue(
         "payu-widget" in form.fields["script"].widget.render("a", "b"))
     self.assertTrue("https://example.com/process_url/token" in
                     form.fields["script"].widget.render("a", "b"))
     self.assertEqual(self.payment.status, PaymentStatus.WAITING)
     self.assertEqual(self.payment.captured_amount, Decimal("0"))
 def test_k_at_end(self, mock_get):
     mock_response = MagicMock()
     mock_response.json = {'item': {'name': 'frost dragon bones', 'current': {'price': '123k'}}}
     mock_get.return_value = mock_response
     self.assertEqual(fetcher.fetch_price(1337), ('frost dragon bones', '123k'))
     mock_get.assert_called_once_with(
         'http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=1337')
Example #11
0
    def test_get_results(self):
        result1 = {'item1': 6, 'item2': 2}
        result2 = {'item1': 2, 'item2': 4}
        component1 = MagicMock()
        component1.json = MagicMock(return_value=result1)
        self.engine.components[
            'component1'].requests.get.return_value = component1
        component2 = MagicMock()
        component2.json = MagicMock(return_value=result2)
        self.engine.components[
            'component2'].requests.get.return_value = component2

        self.assertEqual(self.engine.get_results({'key': 'value'}), {
            'component1': result1,
            'component2': result2
        })
Example #12
0
    def test_get_existing_product(self, current_user_resources,
                                  id_correct_resource):
        # Set up the test and its dependencies
        req = MagicMock()
        req.json = MagicMock(return_value=current_user_resources)
        r = [current_user_resources[id_correct_resource]
             ] if id_correct_resource is not None else {}
        self.instance._get_existing_products = MagicMock(return_value=r)
        self.instance._update_acquire_url = MagicMock()

        # Get the expected result
        if id_correct_resource is not None:
            expected_resource = {
                'id': current_user_resources[id_correct_resource]['id'],
                'href': current_user_resources[id_correct_resource]['href'],
                'name': current_user_resources[id_correct_resource]['name'],
                'version':
                current_user_resources[id_correct_resource]['version']
            }
        else:
            expected_resource = None

        # Call the function and check the result
        dataset = DATASET.copy()
        self.assertEquals(expected_resource,
                          self.instance._get_existing_product(dataset))

        # Update Acquire URL method is called (when the dataset is registered as resource in the Store)
        if expected_resource is not None:
            self.instance._update_acquire_url.assert_called_once_with(
                dataset, current_user_resources[id_correct_resource])
Example #13
0
 def test_provider_raises_redirect_needed_on_success_preauth_payment(self):
     provider = PaypalCardProvider(
         secret=SECRET, client_id=CLIENT_ID, capture=False)
     with patch('requests.post') as mocked_post:
         transaction_id = '1234'
         data = MagicMock()
         data.return_value = {
             'id': transaction_id,
             'token_type': 'test_token_type',
             'access_token': 'test_access_token',
             'transactions': [
                 {'related_resources': [
                     {'authorization': {'links': [
                         {'rel': 'refund', 'href': 'http://refund.com'},
                         {'rel': 'capture', 'href': 'http://capture.com'}]}}
                 ]}
             ]}
         post = MagicMock()
         post.json = data
         post.status_code = 200
         mocked_post.return_value = post
         with self.assertRaises(RedirectNeeded) as exc:
             provider.get_form(
                 payment=self.payment, data=PROCESS_DATA)
             self.assertEqual(exc.args[0], self.payment.get_success_url())
     links = provider._get_links(self.payment)
     self.assertEqual(self.payment.status, PaymentStatus.PREAUTH)
     self.assertEqual(self.payment.captured_amount, Decimal('0'))
     self.assertEqual(self.payment.transaction_id, transaction_id)
     self.assertTrue('capture' in links)
     self.assertTrue('refund' in links)
Example #14
0
    def test_provider_redirects_on_success_preauth_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type': 'test_token_type',
            'access_token': 'test_access_token',
            'payer': {'payer_info': 'test123'},
            'transactions': [
                {'related_resources': [{
                    'sale': {'links': ''},
                    'authorization': {'links': ''}}]}
            ]}
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        provider = PaypalProvider(
            secret=SECRET, client_id=CLIENT_ID, capture=False)
        provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, PaymentStatus.PREAUTH)
        self.assertEqual(self.payment.captured_amount, Decimal('0'))
Example #15
0
def test_recover_from_expired_token(aggregator):
    # First api answers with 403 to force the check to re-authenticate
    unauthentified_response = MagicMock(status_code=403)
    # Api answer when a request is being made to the login endpoint
    login_response = MagicMock()
    # Third api answer, when the check retries the initial endpoint but is now authenticated
    valid_response = MagicMock()
    valid_response.json = MagicMock(return_value={"foo": "bar"})
    session = MagicMock()
    session.send = MagicMock(
        side_effect=[unauthentified_response, login_response, valid_response])

    session_wrapper = SessionWrapper(aci_url=common.ACI_URL,
                                     log=MagicMock(),
                                     session=session,
                                     apic_cookie="cookie")

    api = Api(common.ACI_URLS,
              common.USERNAME,
              password=common.PASSWORD,
              sessions=[session_wrapper])
    api._refresh_sessions = False

    data = api.make_request("")
    # Assert that we retrieved the value from `valid_response.json()`
    assert data == {"foo": "bar"}

    session_calls = session.send._mock_call_args_list
    # Assert that the first call was to the ACI_URL
    assert session_calls[0].args[0].url == common.ACI_URL + "/"
    # Assert that the second call was to the login endpoint
    assert 'aaaLogin.xml' in session_calls[1].args[0].url
    # Assert that the last call was to the ACI_URL again
    assert session_calls[2].args[0].url == common.ACI_URL + "/"
 def test_floating_point_price(self, mock_get):
     mock_response = MagicMock()
     mock_response.json = {'item': {'name': 'pickle', 'current': {'price': 1423.543}}}
     mock_get.return_value = mock_response
     self.assertEqual(fetcher.fetch_price(1234), ('pickle', '1423.543'))
     mock_get.assert_called_once_with(
         'http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=1234')
 def test_comma_in_price(self, mock_get):
     mock_response = MagicMock()
     mock_response.json = {'item': {'name': 'fire rune', 'current': {'price': '345,821'}}}
     mock_get.return_value = mock_response
     self.assertEqual(fetcher.fetch_price(554), ('fire rune', '345,821'))
     mock_get.assert_called_once_with(
         'http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=554')
    def test_get_existing_resource(self, current_user_resources,
                                   id_correct_resource):
        # Set up the test and its dependencies
        req = MagicMock()
        req.json = MagicMock(return_value=current_user_resources)
        self.instance._make_request = MagicMock(return_value=req)
        self.instance._update_acquire_url = MagicMock()

        # Get the expected result
        if id_correct_resource is not None:
            expected_resource = {
                'provider': store_connector.plugins.toolkit.c.user,
                'name': current_user_resources[id_correct_resource]['name'],
                'version':
                current_user_resources[id_correct_resource]['version']
            }
        else:
            expected_resource = None

        # Call the function and check the result
        dataset = DATASET.copy()
        dataset['private'] = True
        self.assertEquals(expected_resource,
                          self.instance._get_existing_resource(dataset))

        # Update Acquire URL method is called (when the dataset is registered as resource in the Store)
        if expected_resource is not None:
            self.instance._update_acquire_url.assert_called_once_with(
                dataset, current_user_resources[id_correct_resource])
 def test_integer_price(self, mock_get):
     mock_response = MagicMock()
     mock_response.json = {'item': {'name': 'maple logs', 'current': {'price': 12345}}}
     mock_get.return_value = mock_response
     self.assertEqual(fetcher.fetch_price(1517), ('maple logs', '12345'))
     mock_get.assert_called_once_with(
         'http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=1517')
Example #20
0
 def test_provider_raises_redirect_needed_on_success_captured_payment(self):
     with patch('requests.post') as mocked_post:
         transaction_id = '1234'
         data = MagicMock()
         data.return_value = {
             'id': transaction_id,
             'token_type': 'test_token_type',
             'access_token': 'test_access_token',
             'transactions': [
                 {'related_resources': [
                     {'sale': {'links': [
                         {'rel': 'refund', 'href': 'http://refund.com'}]}}
                 ]}
             ]}
         post = MagicMock()
         post.json = data
         post.status_code = 200
         mocked_post.return_value = post
         with self.assertRaises(RedirectNeeded) as exc:
             self.provider.get_form(
                 payment=self.payment, data=PROCESS_DATA)
             self.assertEqual(exc.args[0], self.payment.get_success_url())
     links = self.provider._get_links(self.payment)
     self.assertEqual(self.payment.status, 'confirmed')
     self.assertEqual(self.payment.captured_amount, self.payment.total)
     self.assertEqual(self.payment.transaction_id, transaction_id)
     self.assertTrue('refund' in links)
Example #21
0
class TestTaxJarFactory(unittest.TestCase):
    def setUp(self):
        self.response_data = {}
        self.request = MagicMock()

    def test_data_from_successful_request(self):
        self.request.status_code = 200
        self.request.json = MagicMock(return_value={'type': 'value'})
        with patch.object(TaxJarTypeFactory, 'build') as factory_mock:
            TaxJarResponse().data_from_request(self.request)
            factory_mock.called_with('type').return_value.called_with('value')

    def test_data_from_failed_request(self):
        self.request.status_code = 500
        self.request.json = MagicMock(return_value={
            'status': 500,
            'error': 'Server Error',
            'detail': 'some detail'
        })
        try:
            TaxJarResponse().data_from_request(self.request)
            self.assertTrue(False)
        except TaxJarResponseError as err:
            self.assertEqual(str(err), "500 Server Error")
            self.assertEqual(err.full_response['detail'], 'some detail')
            self.assertEqual(err.full_response['response'],
                             self.request.json())
Example #22
0
 def test_handle_request_invalid_method(self):
     json = JSON()
     request = MagicMock()
     json_data = {'method': 'no-existing-module.test', 'id': 0, 'params': []}
     request.json = json_lib.dumps(json_data)
     request_id, result, error = json._handle_request(request)
     self.assertEqual(error, {'message': 'Unknown method', 'code': 2})
Example #23
0
def test_wallet_info():
    response_data = {
        'status': 'ok',
        'payload': {
            'address': 'simple_address',
            'eth_balance': 13,
            'skale_balance': 123
        }
    }
    response_mock = MagicMock()
    response_mock.status_code = requests.codes.ok
    response_mock.json = Mock(return_value=response_data)
    result = run_command_mock('node_cli.utils.helper.requests.get',
                              response_mock, wallet_info)
    assert result.exit_code == 0
    expected = ('--------------------------------------------------\n'
                'Address: simple_address\n'
                'ETH balance: 13 ETH\n'
                'SKALE balance: 123 SKALE\n'
                '--------------------------------------------------\n')
    assert result.output == expected

    result = run_command_mock('node_cli.utils.helper.requests.get',
                              response_mock, wallet_info, ['--format', 'json'])
    assert result.exit_code == 0
    expected = ("{\"address\": \"simple_address\", "
                "\"eth_balance\": 13, \"skale_balance\": 123}\n")
    assert result.output == expected
Example #24
0
 def _call_api(self, _url, _params=None):
     if self._page_idx >= len(self._page_results):
         raise requests.exceptions.HTTPError
     response = MagicMock()
     response.json = MagicMock(return_value=self._page_results[self._page_idx])
     self._page_idx += 1
     return response
Example #25
0
 def test_provider_raises_redirect_needed_on_success(self):
     with patch('requests.post') as mocked_post:
         transaction_id = '1234'
         data = MagicMock()
         data.return_value = {
             'id':
             transaction_id,
             'token_type':
             'test_token_type',
             'access_token':
             'test_access_token',
             'links': [{
                 'rel': 'approval_url',
                 'href': 'http://approval_url.com'
             }]
         }
         post = MagicMock()
         post.json = data
         post.status_code = 200
         mocked_post.return_value = post
         with self.assertRaises(RedirectNeeded) as exc:
             self.provider.get_form(payment=self.payment)
     self.assertEqual(self.payment.status, PaymentStatus.WAITING)
     self.assertEqual(self.payment.captured_amount, Decimal('0'))
     self.assertEqual(self.payment.transaction_id, transaction_id)
Example #26
0
 def test_provider_raises_redirect_needed_on_success_captured_payment(self):
     with patch('requests.post') as mocked_post:
         transaction_id = '1234'
         data = MagicMock()
         data.return_value = {
             'id':
             transaction_id,
             'token_type':
             'test_token_type',
             'access_token':
             'test_access_token',
             'transactions': [{
                 'related_resources': [{
                     'sale': {
                         'links': [{
                             'rel': 'refund',
                             'href': 'http://refund.com'
                         }]
                     }
                 }]
             }]
         }
         post = MagicMock()
         post.json = data
         post.status_code = 200
         mocked_post.return_value = post
         with self.assertRaises(RedirectNeeded) as exc:
             self.provider.get_form(payment=self.payment, data=PROCESS_DATA)
             self.assertEqual(exc.args[0], self.payment.get_success_url())
     links = self.provider._get_links(self.payment)
     self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
     self.assertEqual(self.payment.captured_amount, self.payment.total)
     self.assertEqual(self.payment.transaction_id, transaction_id)
     self.assertTrue('refund' in links)
Example #27
0
    def test_provider_redirects_on_success_captured_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type':
            'test_token_type',
            'access_token':
            'test_access_token',
            'payer': {
                'payer_info': 'test123'
            },
            'transactions': [{
                'related_resources': [{
                    'sale': {
                        'links': ''
                    },
                    'authorization': {
                        'links': ''
                    }
                }]
            }]
        }
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        self.provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
        self.assertEqual(self.payment.captured_amount, self.payment.total)
    def test_get_existing_product(self, current_user_resources, id_correct_resource):
        # Set up the test and its dependencies
        req = MagicMock()
        req.json = MagicMock(return_value=current_user_resources)
        r = [current_user_resources[id_correct_resource]] if id_correct_resource is not None else {}
        self.instance._get_existing_products = MagicMock(
            return_value=r)
        self.instance._update_acquire_url = MagicMock()

        # Get the expected result
        if id_correct_resource is not None:
            expected_resource = {
                'id': current_user_resources[id_correct_resource]['id'],
                'href': current_user_resources[id_correct_resource]['href'],
                'name': current_user_resources[id_correct_resource]['name'],
                'version': current_user_resources[id_correct_resource]['version']
            }
        else:
            expected_resource = None

        # Call the function and check the result
        dataset = DATASET.copy()
        self.assertEquals(expected_resource, self.instance._get_existing_product(dataset))

        # Update Acquire URL method is called (when the dataset is registered as resource in the Store)
        if expected_resource is not None:
            self.instance._update_acquire_url.assert_called_once_with(
                dataset, current_user_resources[id_correct_resource])
    def test_provider_redirects_on_success_preauth_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type': 'test_token_type',
            'access_token': 'test_access_token',
            'payer': {'payer_info': 'test123'},
            'transactions': [
                {'related_resources': [{
                    'sale': {'links': ''},
                    'authorization': {'links': ''}}]}
            ]}
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        provider = PaypalProvider(
            secret=SECRET, client_id=CLIENT_ID, capture=False)
        provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, 'preauth')
        self.assertEqual(self.payment.captured_amount, Decimal('0'))
    def test_get_existing_resource(self, current_user_resources, id_correct_resource):
        # Set up the test and its dependencies
        req = MagicMock()
        req.json = MagicMock(return_value=current_user_resources)
        self.instance._make_request = MagicMock(return_value=req)
        self.instance._update_acquire_url = MagicMock()

        # Get the expected result
        if id_correct_resource is not None:
            expected_resource = {
                'provider': store_connector.plugins.toolkit.c.user,
                'name': current_user_resources[id_correct_resource]['name'],
                'version': current_user_resources[id_correct_resource]['version']
            }
        else:
            expected_resource = None

        # Call the function and check the result
        dataset = DATASET.copy()
        dataset['private'] = True
        self.assertEquals(expected_resource, self.instance._get_existing_resource(dataset))

        # Update Acquire URL method is called (when the dataset is registered as resource in the Store)
        if expected_resource is not None:
            self.instance._update_acquire_url.assert_called_once_with(dataset, current_user_resources[id_correct_resource])
Example #31
0
 def test_handle_request_invalid_method(self):
     json = JSON()
     request = MagicMock()
     json_data = {'method': 'no-existing-module.test', 'id': 0, 'params': []}
     request.json = json_lib.dumps(json_data)
     request_id, result, error = json._handle_request(request)
     self.assertEqual(error, {'message': 'Unknown method', 'code': 2})
    def test_accountingTabCachedData(self, get):
        resource = self.folder['mfn-b2safe']

        get.return_value = MagicMock(ok=False)

        browser = self.browseSite()

        browser.open(resource.absolute_url())
        with self.assertRaises(RuntimeError):
            browser.follow('Accounting')

        result = MagicMock()
        result.ok = True
        result.json = MagicMock(return_value=self.ACCOUNTING_DATA)
        get.return_value = result
        Accounting(self.portal, self.request).update_record_caches()

        get.return_value = MagicMock(ok=False)

        browser = self.browseSite()
        browser.open(resource.absolute_url())
        browser.follow('Accounting')

        self.assertTrue(get.call_count, 1)
        for record in self.ACCOUNTING_DATA:
            self.assertTrue(record['core']['value'] in browser.contents)
            self.assertTrue(
                record['meta']['submission_time'] in browser.contents)
Example #33
0
def test_dcos_task_metrics_agent_details(mocked_get_config_val,
                                         mocked_get_master, mocked_http_get):
    mocked_get_config_val.return_value = 'http://127.0.0.1'

    mock_http_response = MagicMock()
    mock_http_response.status_code = 200
    mock_http_response.json = lambda: metrics_message
    mocked_http_get.return_value = mock_http_response

    mock_master = MagicMock()
    mock_master.task = lambda _: {'slave_id': 'slave_id'}
    mock_master.get_container_id = lambda _: {
        'parent': {},
        'value': 'container_id'
    }
    mocked_get_master.return_value = mock_master

    _metrics(True, 'task_id', False)

    # Metrics should query both endpoints
    mocked_http_get.assert_any_call('http://127.0.0.1/system/v1/agent/'
                                    'slave_id/metrics/v0/containers/'
                                    'container_id/app')
    mocked_http_get.assert_any_call('http://127.0.0.1/system/v1/agent/'
                                    'slave_id/metrics/v0/containers/'
                                    'container_id')
Example #34
0
 def test_payu_widget_form(self):
     """ Test showing PayU card widget """
     self.set_up_provider(True, True)
     self.payment.token = None
     transaction_id = '1234'
     data = MagicMock()
     data.return_value = {
         'id': transaction_id,
         'token_type': 'test_token_type',
         'access_token': 'test_access_token',
         'links': [{
             'rel': 'approval_url',
             'href': 'http://approval_url.com'
         }]
     }
     post = MagicMock()
     post.json = data
     post.status_code = 200
     form = self.provider.get_form(payment=self.payment)
     self.assertEqual(form.__class__.__name__, "WidgetPaymentForm")
     self.assertTrue(
         "payu-widget" in form.fields['script'].widget.render('a', 'b'))
     self.assertTrue("https://example.com/process_url/token" in
                     form.fields['script'].widget.render('a', 'b'))
     self.assertEqual(self.payment.status, PaymentStatus.WAITING)
     self.assertEqual(self.payment.captured_amount, Decimal('0'))
Example #35
0
    def perform(method, url, **extra):
        def rfs(toret):
            """Helper for Raise For Status."""
            def call():
                if toret.status_code != 200:
                    raise Exception('Mocked response %s' % toret.status_code)

            return call

        toreturn = MagicMock()
        if url in responses:
            if len(responses[url]) == 0:
                raise Exception('Unhandled requested to %s (extra %s)' %
                                (url, extra))
            retval = responses[url][0]
            responses[url] = responses[url][1:]
            toreturn.status_code = 200
            if '_code' in retval:
                toreturn.status_code = retval['_code']
                del retval['_code']
            toreturn.json = MagicMock(return_value=retval)
            toreturn.raise_for_status = rfs(toreturn)
            return toreturn
        else:
            raise Exception('Unhandled mocked URL: %s (extra: %s)' %
                            (url, extra))
Example #36
0
 def test_provider_raises_redirect_needed_on_success_preauth_payment(self):
     provider = PaypalCardProvider(
         secret=SECRET, client_id=CLIENT_ID, capture=False)
     with patch('requests.post') as mocked_post:
         transaction_id = '1234'
         data = MagicMock()
         data.return_value = {
             'id': transaction_id,
             'token_type': 'test_token_type',
             'access_token': 'test_access_token',
             'transactions': [
                 {'related_resources': [
                     {'authorization': {'links': [
                         {'rel': 'refund', 'href': 'http://refund.com'},
                         {'rel': 'capture', 'href': 'http://capture.com'}]}}
                 ]}
             ]}
         post = MagicMock()
         post.json = data
         post.status_code = 200
         mocked_post.return_value = post
         with self.assertRaises(RedirectNeeded) as exc:
             provider.get_form(
                 payment=self.payment, data=PROCESS_DATA)
             self.assertEqual(exc.args[0], self.payment.get_success_url())
     links = provider._get_links(self.payment)
     self.assertEqual(self.payment.status, 'preauth')
     self.assertEqual(self.payment.captured_amount, Decimal('0'))
     self.assertEqual(self.payment.transaction_id, transaction_id)
     self.assertTrue('capture' in links)
     self.assertTrue('refund' in links)
Example #37
0
class TestRequestsHTTPTransportParseResponse(unittest.TestCase):

    def setUp(self):
        self._transport = RequestsTransport()
        self._requests_response = MagicMock(spec=Response())

    def test_parse_response_success(self):
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIResponse)
        self.assertEqual(self._requests_response.json(), transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_json_success(self):
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIResponse)
        self._requests_response.json.assert_called_once()
        self.assertNotEqual(self._requests_response.text, transport_response.data)
        self.assertEqual(self._requests_response.json(), transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_text_success(self):
        self._requests_response.json.side_effect = ValueError()
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIResponse)
        with self.assertRaises(ValueError):
            self._requests_response.json()
        self.assertEqual(self._requests_response.text, transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_400_failure(self):
        self._requests_response.raise_for_status.side_effect = HTTPError()
        self._requests_response.status_code = 400
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIErrorResponse)
        self.assertEqual(self._requests_response.json(), transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_500_failure(self):
        self._requests_response.raise_for_status.side_effect = HTTPError()
        self._requests_response.status_code = 500
        with self.assertRaises(HTTPError):
            self._transport._parse_response(self._requests_response)
Example #38
0
 def test_on_json_request_invalid_content_type(self):
     """Test for exception with content type not application/json"""
     json = JSON()
     request = MagicMock()
     request.getHeader.return_value = 'text/plain'
     json_data = {'method': 'some.method', 'id': 0, 'params': []}
     request.json = json_lib.dumps(json_data)
     self.assertRaises(JSONException, json._on_json_request, request)
    def test_send_calls_retry_request(self):
        resp = MagicMock()
        resp.json = Mock()
        resp.status_code = Mock()
        with patch.object(Adapter, "_retry_request", return_value=resp) as retry_request:
            self.accounts_adapter.send()

        retry_request.assert_any_call()
Example #40
0
 def test_provider_handles_captured_payment(self, mocked_post):
     data = MagicMock()
     data.return_value = {'name': 'AUTHORIZATION_ALREADY_COMPLETED'}
     response = MagicMock()
     response.json = data
     mocked_post.side_effect = HTTPError(response=response)
     self.provider.capture(self.payment)
     self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
Example #41
0
    def test_get_calls(self):
        resp = MagicMock()
        resp.json = Mock()
        resp.status_code = Mock()
        with patch.object(Adapter, 'get', return_value=resp) as get_request:
            self.accounts_adapter.get()

        get_request.assert_any_call()
Example #42
0
 def test_on_json_request_invalid_content_type(self):
     """Test for exception with content type not application/json"""
     json = JSON()
     request = MagicMock()
     request.getHeader.return_value = 'text/plain'
     json_data = {'method': 'some.method', 'id': 0, 'params': []}
     request.json = json_lib.dumps(json_data)
     self.assertRaises(JSONException, json._on_json_request, request)
    def test_get_calls(self):
        resp = MagicMock()
        resp.json = Mock()
        resp.status_code = Mock()
        with patch.object(Adapter, 'get', return_value=resp) as get_request:
            self.accounts_adapter.get()

        get_request.assert_any_call()
class TestRequestsHTTPTransportParseResponse(unittest.TestCase):

    def setUp(self):
        self._transport = RequestsTransport()
        self._requests_response = MagicMock(spec=Response())

    def test_parse_response_success(self):
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIResponse)
        self.assertEqual(self._requests_response.json(), transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_json_success(self):
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIResponse)
        self._requests_response.json.assert_called_once()
        self.assertNotEqual(self._requests_response.text, transport_response.data)
        self.assertEqual(self._requests_response.json(), transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_text_success(self):
        self._requests_response.json.side_effect = ValueError()
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIResponse)
        with self.assertRaises(ValueError):
            self._requests_response.json()
        self.assertEqual(self._requests_response.text, transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_400_failure(self):
        self._requests_response.raise_for_status.side_effect = HTTPError()
        self._requests_response.status_code = 400
        transport_response = self._transport._parse_response(self._requests_response)
        self.assertIsInstance(transport_response, APIErrorResponse)
        self.assertEqual(self._requests_response.json(), transport_response.data)
        self.assertEqual(self._requests_response.headers, transport_response.headers)
        self.assertEqual(self._requests_response.status_code, transport_response.status_code)

    def test_parse_response_500_failure(self):
        self._requests_response.raise_for_status.side_effect = HTTPError()
        self._requests_response.status_code = 500
        with self.assertRaises(HTTPError):
            self._transport._parse_response(self._requests_response)
Example #45
0
 def _call_api(self, _url, _params=None):
     if self._page_idx >= len(self._page_results):
         raise requests.exceptions.HTTPError
     response = MagicMock()
     response.json = MagicMock(
         return_value=self._page_results[self._page_idx])
     self._page_idx += 1
     return response
def create_mock_response(url, response_type, **kwargs):
    response = MagicMock()

    response.request.url = url
    response.request.method = kwargs.get('method', 'GET')
    response.request.headers = {}
    response.request.body = None

    if response_type == "redirect":
        response.status_code = 301
        response.headers = {'location': kwargs['location']}
    elif response_type == "error":
        response.status_code = kwargs.get('status_code', 500)
        response.reason = kwargs.get('reason', 'fake reason')
        response.text = '{{"reason":"{}"}}'.format(
            kwargs.get('reason', 'fake reason'))
        response.json = lambda: json.loads(response.text)
    elif response_type == "stream":
        response.status_code = kwargs.get('status_code', 200)
        response.headers = {
            'content-disposition': 'attachment; filename="fname.ext"',
            'content-type': 'application/octet-stream',
            'content-length': len(response.text)
        }

        def _create_iterator(buffer_size):
            response._content_iterator = IterateContents(
                kwargs['contents'], kwargs['buffer_size'],
                kwargs.get('partial_start', 0),
                kwargs.get('partial_end', None))
            return response._content_iterator

        response.iter_content = _create_iterator
        response.raw.tell = lambda: response._content_iterator.total_bytes_iterated(
        )
    else:
        response.status_code = 200
        response.text = kwargs['text']
        response.json = lambda: json.loads(response.text)
        response.headers = {
            'content-type': 'application/json',
            'content-length': len(response.text)
        }

    return response
Example #47
0
def test_parse_response():
    """
    Test parsing of a response
    """
    response = MagicMock()
    response.status_code = 200
    response.json = MagicMock()

    Notipy.parse_response(response)
Example #48
0
def test_parse_response_fail():
    """
    Test parsing of an error response
    """
    response = MagicMock()
    response.status_code = 500
    response.json = MagicMock()

    assert_raises(NotificationSendError, Notipy.parse_response, response)
 def test_provider_handles_captured_payment(self, mocked_post):
     data = MagicMock()
     data.return_value = {
         'name': 'AUTHORIZATION_ALREADY_COMPLETED'}
     response = MagicMock()
     response.json = data
     mocked_post.side_effect = HTTPError(response=response)
     self.provider.capture(self.payment)
     self.assertEqual(self.payment.status, 'confirmed')
    def expect_a_ubersmith_call(self, requests_mock, returning=None, **kwargs):
        response = MagicMock(status_code=200, headers={"content-type": "application/json"})
        requests_mock.get = MagicMock(return_value=response)
        response.json = MagicMock(return_value=returning)

        def assert_called_with():
            requests_mock.get.assert_called_with(auth=self.auth, params=kwargs, timeout=self.timeout, url=self.url)
            response.json.assert_called_with()

        return assert_called_with
Example #51
0
    def test_recommend(self):
        response_mock = MagicMock()
        response_mock.json = MagicMock(return_value=OrderedDict((("result1", 1.5), ("result2", 1))))
        self.engine.requests.get.return_value = response_mock

        results = self.engine.recommend({"value": ["test", "test2"]})
        self.assertEqual(results, ["result1", "result2"])

        results = self.engine.recommend({"value": "test"}, True)
        self.assertEqual(results, OrderedDict((("result1", 1.5), ("result2", 1))))
def create_mock_response(url, response_type, **kwargs):
    response = MagicMock()

    response.request.url = url
    response.request.method = kwargs.get('method', 'GET')
    response.request.headers = {}
    response.request.body = None

    if response_type == "redirect":
        response.status_code = 301
        response.headers = {'location': kwargs['location']}
    elif response_type == "error":
        response.status_code = kwargs.get('status_code', 500)
        response.reason = kwargs.get('reason', 'fake reason')
        response.text = '{{"reason":"{}"}}'.format(kwargs.get('reason', 'fake reason'))
        response.json = lambda: json.loads(response.text)
    elif response_type == "stream":
        response.status_code = kwargs.get('status_code', 200)
        response.headers = {
            'content-disposition': 'attachment; filename="fname.ext"',
            'content-type': 'application/octet-stream',
            'content-length': len(response.text)
        }

        def _create_iterator(buffer_size):
            response._content_iterator = IterateContents(kwargs['contents'],
                                                         kwargs['buffer_size'],
                                                         kwargs.get('partial_start', 0),
                                                         kwargs.get('partial_end', None))
            return response._content_iterator

        response.iter_content = _create_iterator
        response.raw.tell = lambda: response._content_iterator.total_bytes_iterated()
    else:
        response.status_code = 200
        response.text = kwargs['text']
        response.json = lambda: json.loads(response.text)
        response.headers = {
            'content-type': 'application/json',
            'content-length': len(response.text)
        }

    return response
Example #53
0
 def test_WBAPIHTTPError_exception_returns_error_page_with_json_error(self, wbapi_mock):
     """ WBAPIHTTPERROR json details are passed thru to client in error page
     """
     response_mock = MagicMock()
     response_mock.status_code = 500
     response_mock.json.return_value = {"details": "An Error Message"}
     wbapi_mock.return_value.get_apps.side_effect = WBAPIHTTPError(response=response_mock)
     r = self.client.get('/')
     self.assertEquals(r.status_code, response_mock.status_code)
     self.assertTrue(response_mock.json()["details"] in r.get_data())
    def expect_a_ubersmith_call_post(self, requests_mock, returning=None, status_code=200, **kwargs):
        response = MagicMock(status_code=status_code, headers={'content-type': 'application/json'})
        requests_mock.post = MagicMock(return_value=response)
        response.json = MagicMock(return_value=returning)

        def assert_called_with():
            requests_mock.post.assert_called_with(auth=self.auth, timeout=self.timeout, url=self.url, data=kwargs)
            response.json.assert_called_with()

        return assert_called_with
 def test_provider_refunds_payment(self, mocked_post):
     data = MagicMock()
     data.return_value = {
         'token_type': 'test_token_type',
         'access_token': 'test_access_token'}
     post = MagicMock()
     post.json = data
     post.status_code = 200
     mocked_post.return_value = post
     self.provider.refund(self.payment)
     self.assertEqual(self.payment.status, 'refunded')
    def test_send_retries_and_assigns_cursor_if_next_cursor_is_returned_once(self):
        # We assume the response returns data and next cursor on the first call and data
        # only on the second call.
        resp = MagicMock()
        resp.status_code = 200
        resp.json = MagicMock(side_effect=[{"data": "foo", "next_cursor": "foo"}, {"data": "foo"}])
        with patch.object(Adapter, "_retry_request", return_value=resp) as retry_request:
            self.accounts_adapter.send()

        self.assertEquals(2, retry_request.call_count)
        self.assertEquals("foo", self.accounts_adapter.params["cursor"])
Example #57
0
class TestTaxJarFactory(unittest.TestCase):
    def setUp(self):
        self.response_data = {}
        self.request = MagicMock()

    def test_data_from_successful_request(self):
        self.request.status_code = 200
        self.request.json = MagicMock(return_value={'type': 'value'})
        with patch.object(TaxJarTypeFactory, 'build') as factory_mock:
            TaxJarResponse().data_from_request(self.request)
            factory_mock.called_with('type').return_value.called_with('value')

    def test_data_from_failed_400_request(self):
        self.request.status_code = 400
        self.request.json = MagicMock(return_value={
            'status': 400,
            'error': 'Bad Request',
            'detail': 'some detail'
        })
        try:
            TaxJarResponse().data_from_request(self.request)
            self.assertTrue(False)
        except TaxJarResponseError as err:
            self.assertEqual(str(err), "400 Bad Request")
            self.assertEqual(err.full_response['detail'], 'some detail')
            self.assertEqual(err.full_response['response'], self.request.json())

    def test_data_from_failed_500_request(self):
        self.request.status_code = 500
        self.request.json = MagicMock(return_value={
            'status': 500,
            'error': 'Server Error',
            'detail': 'some detail'
        })
        try:
            TaxJarResponse().data_from_request(self.request)
            self.assertTrue(False)
        except TaxJarResponseError as err:
            self.assertEqual(str(err), "500 Server Error")
            self.assertEqual(err.full_response['detail'], 'some detail')
            self.assertEqual(err.full_response['response'], self.request.json())
    def test_collection_iterator_with_pagination(self):
        page_1 = dummy_fixtures.DUMMY_COLLECTION_FROM_MLA_SEARCH_PAGE_1
        page_2 = dummy_fixtures.DUMMY_COLLECTION_FROM_MLA_SEARCH_PAGE_2

        with patch.object(BaseResource, '_get') as _mock:
            response = MagicMock(spec=Response, ok=True, status_code=200)
            response.json = MagicMock(return_value=page_1)
            _mock.return_value = response

            it = DummyResource.search(credentials=self.credentials)
            self.assertEqual(_mock.call_count, 1)

        obj1 = next(it)
        self.assertEqual(obj1.id, "MLA502003454")

        obj2 = next(it)
        self.assertEqual(obj2.id, "MLA504842874")

        obj3 = next(it)
        self.assertEqual(obj3.id, "MLA497525770")

        with patch.object(BaseResource, '_get') as _mock:
            response = MagicMock(spec=Response, ok=True, status_code=200)
            response.json = MagicMock(return_value=page_2)
            _mock.return_value = response

            obj4 = next(it)
            self.assertEqual(obj4.id, "MLA499776777")

            # Called to get the fourth result
            self.assertEqual(_mock.call_count, 1)

            self.assertTrue('params' in _mock.call_args[1])
            self.assertTrue('offset' in _mock.call_args[1]['params'])
            self.assertEqual(_mock.call_args[1]['params']['offset'], 3)

            obj5 = next(it)
            self.assertEqual(obj5.id, "MLA503203012")

        with self.assertRaises(StopIteration):
            next(it)
 def test_provider_captures_payment(self, mocked_post):
     data = MagicMock()
     data.return_value = {
         'state': 'completed',
         'token_type': 'test_token_type',
         'access_token': 'test_access_token'}
     post = MagicMock()
     post.json = data
     post.status_code = 200
     mocked_post.return_value = post
     self.provider.capture(self.payment)
     self.assertEqual(self.payment.status, 'confirmed')
Example #60
0
    def test_recommend(self):
        response_mock = MagicMock()
        response_mock.json = MagicMock(return_value=OrderedDict((
            ('result1', 1.5), ('result2', 1)
        )))
        self.engine.requests.get.return_value = response_mock

        results = self.engine.recommend({'value': 'test'})
        self.assertEqual(results, ['result1', 'result2'])

        results = self.engine.recommend({'value': 'test'}, True)
        self.assertEqual(results, OrderedDict((('result1', 1.5), ('result2', 1))))