示例#1
0
 def test_delete_pass_header(self):
     client = Client(**PRODUCTION_CONFIG)
     mock_open = mock.mocksignature(client.opener.open)
     mock_resp = mock.Mock()
     mock_resp.read = mock.Mock(return_value=json.dumps({}))
     mock_open.mock.return_value = mock_resp
     resp_header = {'foo': 'bar'}
     with mock.patch.object(client.opener, 'open', new=mock_open), \
          mock.patch('poundpay.client.urllib2') as urllib2_mock:
         resp = client.delete('payments/sid', resp_header)
     _args, kwargs = urllib2_mock.Request.call_args
     self.assertEqual(kwargs['headers'], resp_header)
     self.assertEqual(resp.json, {})
示例#2
0
 def test_delete_pass_header(self):
     client = Client(**PRODUCTION_CONFIG)
     mock_open = mock.mocksignature(client.opener.open)
     mock_resp = mock.Mock()
     mock_resp.read = mock.Mock(return_value=json.dumps({}))
     mock_open.mock.return_value = mock_resp
     resp_header = {'foo': 'bar'}
     with mock.patch.object(client.opener, 'open', new=mock_open), \
          mock.patch('poundpay.client.urllib2') as urllib2_mock:
         resp = client.delete('payments/sid', resp_header)
     _args, kwargs = urllib2_mock.Request.call_args
     self.assertEqual(kwargs['headers'], resp_header)
     self.assertEqual(resp.json, {})
示例#3
0
 def setUp(self):
     self.client = Client(**PRODUCTION_CONFIG)
     self.resp_dict = {'foo': 'bar'}
     self.mock_open = mock.Mock()
     self.mock_open.return_value.read.return_value = json.dumps(
         self.resp_dict
         )
示例#4
0
 def test_get_pass_header(self):
     client = Client(**PRODUCTION_CONFIG)
     resp_dict = {'foo': 'bar'}
     mock_open = mock.Mock()
     mock_open.return_value.read.return_value = json.dumps(resp_dict)
     resp_header = {'foo': 'bar'}
     with mock.patch.object(client.opener,
                            'open',
                            mock_open,
                            mocksignature=True), \
          mock.patch('poundpay.client.urllib2') as urllib2_mock:
         resp = client.get('payments', resp_header)
     _args, kwargs = urllib2_mock.Request.call_args
     self.assertEqual(resp.json, resp_dict)
     self.assertEqual(kwargs['headers'], resp_header)
     mock_open.return_value.read.assert_called_once_with()
示例#5
0
 def test_get_pass_header(self):
     client = Client(**PRODUCTION_CONFIG)
     resp_dict = {'foo': 'bar'}
     mock_open = mock.Mock()
     mock_open.return_value.read.return_value = json.dumps(resp_dict)
     resp_header = {'foo': 'bar'}
     with mock.patch.object(client.opener,
                            'open',
                            mock_open,
                            mocksignature=True), \
          mock.patch('poundpay.client.urllib2') as urllib2_mock:
         resp = client.get('payments', resp_header)
     _args, kwargs = urllib2_mock.Request.call_args
     self.assertEqual(resp.json, resp_dict)
     self.assertEqual(kwargs['headers'], resp_header)
     mock_open.return_value.read.assert_called_once_with()
示例#6
0
 def test_default_url_and_version(self):
     client = Client(**PRODUCTION_CONFIG)
     self.assertEqual(client.base_url, 'https://api.poundpay.com/silver/')
     self.assertIn('Authorization', dict(client.opener.addheaders))
     authstring = dict(client.opener.addheaders)['Authorization'][6:]
     developer_sid, auth_token = authstring.decode('base64').split(':')
     self.assertEqual(developer_sid, PRODUCTION_CONFIG['developer_sid'])
     self.assertEqual(auth_token, PRODUCTION_CONFIG['auth_token'])
示例#7
0
class TestClientHTTPOperation(unittest.TestCase):

    def setUp(self):
        self.client = Client(**PRODUCTION_CONFIG)
        self.resp_dict = {'foo': 'bar'}
        self.mock_open = mock.Mock()
        self.mock_open.return_value.read.return_value = json.dumps(
            self.resp_dict
            )

    def test_get(self):
        with mock.patch.object(
                self.client.opener, 'open', self.mock_open, mocksignature=True
                ):
            resp = self.client.get('payments')
        self.assertEqual(resp.json, self.resp_dict)
        self.mock_open.return_value.read.assert_called_once_with()

    def test_http_error(self):
        response = mock.Mock()
        response.code = 403
        response.msg = 'Unauthorized'
        response.info.return_value = {}
        response.read.return_value = json.dumps({'message': 'unauthorized yo'})
        response_handler = mock.Mock()
        response_handler.default_open.return_value = response
        self.client.opener.handle_open['default'] = [response_handler]
        with self.assertRaises(ClientException) as exception:
            self.client.post('payments', self.resp_dict)
        exc = exception.exception
        self.assertEqual(
            str(exc.args[0]), ("HTTP Error 403: Unauthorized :: "
                               "{'message': 'unauthorized yo'}")
            )

    def test_http_success(self):
        response = mock.Mock()
        response.code = 200
        response.getcode.return_value = response.code
        response.msg = 'OK'
        response.info.return_value = {}
        response.read.return_value = json.dumps({'hi': 'there'})
        response_handler = mock.Mock()
        response_handler.default_open.return_value = response
        self.client.opener.handle_open['default'] = [response_handler]
        resp = self.client.post('payments', self.resp_dict)
        self.assertEqual(
            str(resp), "[200 OK] - {'hi': 'there'}"
            )

    def test_post(self):
        with mock.patch.object(
                self.client.opener, 'open', self.mock_open, mocksignature=True
                ):
            resp = self.client.post('payments', self.resp_dict)
        self.assertEqual(resp.json, self.resp_dict)

    def test_delete(self):
        self.mock_open.return_value.read.return_value = json.dumps({})
        with mock.patch.object(
                self.client.opener, 'open', self.mock_open, mocksignature=True
                ):
            resp = self.client.delete('payments/sid')
        self.assertEqual(resp.json, {})

    def test_put(self):
        with mock.patch.object(
                self.client.opener, 'open', self.mock_open, mocksignature=True
                ):
            resp = self.client.put('payments/sid', self.resp_dict)
        self.assertEqual(resp.json, self.resp_dict)
示例#8
0
 def setUp(self):
     self.client = Client(**PRODUCTION_CONFIG)
     self.resp_dict = {'foo': 'bar'}
     self.mock_open = mock.Mock()
     self.mock_open.return_value.read.return_value = json.dumps(
         self.resp_dict)
示例#9
0
class TestClientHTTPOperation(unittest.TestCase):
    def setUp(self):
        self.client = Client(**PRODUCTION_CONFIG)
        self.resp_dict = {'foo': 'bar'}
        self.mock_open = mock.Mock()
        self.mock_open.return_value.read.return_value = json.dumps(
            self.resp_dict)

    def test_get(self):
        with mock.patch.object(self.client.opener,
                               'open',
                               self.mock_open,
                               mocksignature=True):
            resp = self.client.get('payments')
        self.assertEqual(resp.json, self.resp_dict)
        self.mock_open.return_value.read.assert_called_once_with()

    def test_http_error(self):
        response = mock.Mock()
        response.code = 403
        response.msg = 'Unauthorized'
        response.info.return_value = {}
        response.read.return_value = json.dumps({'message': 'unauthorized yo'})
        response_handler = mock.Mock()
        response_handler.default_open.return_value = response
        self.client.opener.handle_open['default'] = [response_handler]
        with self.assertRaises(ClientException) as exception:
            self.client.post('payments', self.resp_dict)
        exc = exception.exception
        self.assertEqual(str(exc.args[0]), ("HTTP Error 403: Unauthorized :: "
                                            "{'message': 'unauthorized yo'}"))

    def test_http_success(self):
        response = mock.Mock()
        response.code = 200
        response.getcode.return_value = response.code
        response.msg = 'OK'
        response.info.return_value = {}
        response.read.return_value = json.dumps({'hi': 'there'})
        response_handler = mock.Mock()
        response_handler.default_open.return_value = response
        self.client.opener.handle_open['default'] = [response_handler]
        resp = self.client.post('payments', self.resp_dict)
        self.assertEqual(str(resp), "[200 OK] - {'hi': 'there'}")

    def test_post(self):
        with mock.patch.object(self.client.opener,
                               'open',
                               self.mock_open,
                               mocksignature=True):
            resp = self.client.post('payments', self.resp_dict)
        self.assertEqual(resp.json, self.resp_dict)

    def test_delete(self):
        self.mock_open.return_value.read.return_value = json.dumps({})
        with mock.patch.object(self.client.opener,
                               'open',
                               self.mock_open,
                               mocksignature=True):
            resp = self.client.delete('payments/sid')
        self.assertEqual(resp.json, {})

    def test_put(self):
        with mock.patch.object(self.client.opener,
                               'open',
                               self.mock_open,
                               mocksignature=True):
            resp = self.client.put('payments/sid', self.resp_dict)
        self.assertEqual(resp.json, self.resp_dict)
示例#10
0
 def test_different_url_and_version(self):
     client = Client(**SANDBOX_CONFIG)
     self.assertEqual(client.base_url,
                      'https://api-sandbox.poundpay.com/gold/')
示例#11
0
 def test_default_api_url_when_explicity_set_to_None(self):
     config = PRODUCTION_CONFIG
     config['api_url'] = None
     client = Client(**config)
     self.assertTrue(client.base_url,
                     os.path.join(client.API_URL, client.API_VERSION))
示例#12
0
 def test_default_api_version_when_explicity_set_to_None(self):
     config = PRODUCTION_CONFIG
     config['api_version'] = None
     client = Client(**config)
     self.assertTrue(client.base_url.endswith(Client.API_VERSION + '/'))
示例#13
0
 def test_developer_sid_starts_with_DV(self):
     config = PRODUCTION_CONFIG
     with self.assertRaises(ValueError):
         Client(config['auth_token'], config['developer_sid'])
示例#14
0
 def test_developer_sid_and_auth_token_required(self):
     with self.assertRaises(ValueError):
         Client('DV', None)