Merge lp:~matiasb/payclient/payment-method-api into lp:payclient

Proposed by Matias Bordese
Status: Merged
Approved by: Matias Bordese
Approved revision: 9
Merged at revision: 9
Proposed branch: lp:~matiasb/payclient/payment-method-api
Merge into: lp:payclient
Diff against target: 107 lines (+56/-2)
2 files modified
src/payclient/client.py (+16/-0)
src/payclient/tests/test_client.py (+40/-2)
To merge this branch: bzr merge lp:~matiasb/payclient/payment-method-api
Reviewer Review Type Date Requested Status
Ricardo Kirkner (community) Approve
Review via email: mp+227620@code.launchpad.net

Commit message

Updated client to add get/disable payment method API calls.

To post a comment you must log in.
Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/payclient/client.py'
2--- src/payclient/client.py 2013-12-10 18:06:42 +0000
3+++ src/payclient/client.py 2014-07-21 18:37:20 +0000
4@@ -208,6 +208,22 @@
5 return self._get("payment_methods/%s/" % open_id)
6
7 @basic_protected
8+ @validate_pattern('open_id', RE_OPEN_ID)
9+ @returns_json
10+ def get_payment_method(self, open_id, backend, method_id):
11+ """Retrieve payment method by open id, given backend and method_id."""
12+ return self._get(
13+ "payment_methods/%s/%s/%s/" % (open_id, backend, method_id))
14+
15+ @basic_protected
16+ @validate_pattern('open_id', RE_OPEN_ID)
17+ @returns_json
18+ def disable_payment_method(self, open_id, backend, method_id):
19+ """Disable payment method by open id, given backend and method_id."""
20+ return self._delete(
21+ "payment_methods/%s/%s/%s/" % (open_id, backend, method_id))
22+
23+ @basic_protected
24 @validate_pattern('payment_id', RE_PAYMENT_ID)
25 @returns(PaymentResponse)
26 def get_payment(self, payment_id):
27
28=== modified file 'src/payclient/tests/test_client.py'
29--- src/payclient/tests/test_client.py 2013-12-17 20:24:25 +0000
30+++ src/payclient/tests/test_client.py 2014-07-21 18:37:20 +0000
31@@ -389,6 +389,7 @@
32 self.api = PaymentServiceAPI()
33 # mock out methods calling out
34 self.api._get = Mock()
35+ self.api._delete = Mock()
36 self.api._post = Mock()
37 self.api._put = Mock()
38
39@@ -396,6 +397,7 @@
40 auth=BasicAuthorizer('user', 'pass'))
41 # mock out methods calling out
42 self.auth_api._get = Mock()
43+ self.auth_api._delete = Mock()
44 self.auth_api._post = Mock()
45 self.auth_api._put = Mock()
46
47@@ -423,7 +425,7 @@
48 'subscription': None,
49 },
50 ])
51- self.mock_methods_response_body = json.dumps([
52+ methods = [
53 {
54 'id': 'backend_label',
55 'description': 'The backend',
56@@ -433,7 +435,9 @@
57 'currencies': ['USD', 'GBP'],
58 }],
59 },
60- ])
61+ ]
62+ self.mock_methods_response_body = json.dumps(methods)
63+ self.mock_method_response_body = json.dumps(methods[0]['choices'][0])
64 self.mock_json_response = json.dumps({
65 'success': True,
66 })
67@@ -518,6 +522,40 @@
68 self.auth_api._get.return_value = self.mock_methods_response_body
69 self.assert_return_value(list, 'payment_methods', open_id='abc1234')
70
71+ def test_get_payment_method_validation(self):
72+ kwargs = dict(backend='backend_label', method_id='42')
73+ self.assert_validate_pattern(
74+ 'get_payment_method', open_id='', **kwargs)
75+ self.assert_validate_pattern(
76+ 'get_payment_method', open_id='123_foo', **kwargs)
77+ self.assert_validate_pattern(
78+ 'get_payment_method', open_id='abc123', **kwargs)
79+ self.assert_validate_pattern(
80+ 'get_payment_method', open_id='abc12345', **kwargs)
81+
82+ def test_get_payment_method_returns_json(self):
83+ self.auth_api._get.return_value = self.mock_method_response_body
84+ self.assert_return_value(
85+ dict, 'get_payment_method', open_id='abc1234',
86+ backend='backend_label', method_id='42')
87+
88+ def test_disable_payment_method_validation(self):
89+ kwargs = dict(backend='backend_label', method_id='42')
90+ self.assert_validate_pattern(
91+ 'disable_payment_method', open_id='', **kwargs)
92+ self.assert_validate_pattern(
93+ 'disable_payment_method', open_id='123_foo', **kwargs)
94+ self.assert_validate_pattern(
95+ 'disable_payment_method', open_id='abc123', **kwargs)
96+ self.assert_validate_pattern(
97+ 'disable_payment_method', open_id='abc12345', **kwargs)
98+
99+ def test_disable_payment_method_returns_json(self):
100+ self.auth_api._delete.return_value = self.mock_json_response
101+ self.assert_return_value(
102+ dict, 'disable_payment_method', open_id='abc1234',
103+ backend='backend_label', method_id='42')
104+
105 def test_new_card_protected(self):
106 request = CreditCardRequest()
107 self.assert_protected(

Subscribers

People subscribed via source and target branches