Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions omise/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1749,12 +1749,27 @@ class Source(_MainResource, Base):
)
"""

@classmethod
def _instance_path(cls, source_id):
return ('sources', source_id)

@classmethod
def create(cls, **kwargs):
return _as_object(
cls._request('post',
'sources', kwargs))

@classmethod
def retrieve(cls, source_id):
"""Retrieve the source details for the given :param:`source_id`.

:param source_id: a source id to retrieve.
:type source_id: str
:rtype: Source
"""
return _as_object(
cls._request('get',
cls._instance_path(source_id)))

class Transfer(_MainResource, Base):
"""API class representing a transfer.
Expand Down
24 changes: 24 additions & 0 deletions omise/test/test_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,27 @@ def test_create_offline(self, api_call):
'type': 'tesco_lotus'
}
)

@mock.patch('requests.get')
def test_retrieve(self, api_call):
class_ = self._getTargetClass()
self.mockResponse(api_call, """{
"object": "source",
"id": "src_test",
"type": "internet_banking_test",
"flow": "redirect",
"amount": 100000,
"currency": "thb"
}""")

source = class_.retrieve('src_test')
self.assertTrue(isinstance(source, class_))
self.assertEqual(source.id, 'src_test')
self.assertEqual(source.type, 'internet_banking_test')
self.assertEqual(source.flow, 'redirect')
self.assertEqual(source.amount, 100000)
self.assertEqual(source.currency, 'thb')
self.assertRequest(
api_call,
'https://api.omise.co/sources/src_test'
)