class BynderClientTest(TestCase): """ Test the Bynder client. """ def setUp(self): self.api_url = 'https://test.bynder.com' self.consumer_key = 'AAAA' self.consumer_secret = 'BBBB' self.token = 'CCCC' self.token_secret = 'DDDD' self.bynder_client = BynderClient(base_url=self.api_url, consumer_key=self.consumer_key, consumer_secret=self.consumer_secret, token=self.token, token_secret=self.token_secret) self.bynder_client.bynder_request_handler.get = mock.MagicMock() self.bynder_client.bynder_request_handler.post = mock.MagicMock() self.bynder_client.bynder_request_handler.fetch_token = mock.MagicMock( ) self.bynder_client.credentials.reset = mock.MagicMock() def tearDown(self): self.bynder_client = None self.asset_bank_client = None self.collection_client = None def test_create_bynder_client(self): """ Test if the bynder client is not none. """ self.assertIsNotNone(self.bynder_client) def test_bynder_client_set_base_url(self): """ Test if the bynder client has set the base url """ self.assertIsNotNone(self.bynder_client.base_url) self.assertEqual(self.bynder_client.base_url, self.api_url) def test_bynder_client_set_credentials(self): """ Test if the bynder client has set the credentials """ self.assertIsNotNone(self.bynder_client.credentials) self.assertEqual(self.bynder_client.credentials.consumer_key, self.consumer_key) self.assertEqual(self.bynder_client.credentials.consumer_secret, self.consumer_secret) self.assertEqual(self.bynder_client.credentials.token, self.token) self.assertEqual(self.bynder_client.credentials.token_secret, self.token_secret) def test_bynder_client_set_request_handler(self): """ Test if the bynder client has set the request handler """ self.assertIsNotNone(self.bynder_client.bynder_request_handler) def test_get_asset_bank_client(self): """ Test if the asset bank client is not none. """ self.assertIsNotNone(self.bynder_client.asset_bank_client) def test_get_collection_client(self): """ Test if the collection client is not none. """ self.assertIsNotNone(self.bynder_client.collection_client) def test_login(self): """ Test if when we call login it will use the correct payload for the request and returns successfully. """ credentials = {'username': '******', 'password': '******'} self.bynder_client.login(credentials.get('username'), credentials.get('password')) self.bynder_client.bynder_request_handler.post.assert_called_with( endpoint='/api/v4/users/login/', payload=credentials) def test_authorise_url(self): """ Test if when we call authorise url it returns the right url. """ authorise_url_endpoint = '/api/v4/oauth/authorise/?oauth_token={0}'.format( self.bynder_client.credentials.token) authorise_url = urljoin(self.bynder_client.base_url, authorise_url_endpoint) self.assertEqual(self.bynder_client.authorise_url(), authorise_url) callback_url = 'https://bynder.com' self.assertEqual( self.bynder_client.authorise_url(callback_url), '{0}&callback={1}'.format(authorise_url, callback_url)) def test_access_token(self): """ Test if when we call access token it will use the correct params for the request and returns successfully. """ fetch_token = self.bynder_client.bynder_request_handler.fetch_token self.bynder_client.access_token() fetch_token.assert_called_with(endpoint='/api/v4/oauth/access_token/') def test_request_token(self): """ Test if when we call request token it will use the correct params for the request and returns successfully. """ fetch_token = self.bynder_client.bynder_request_handler.fetch_token self.bynder_client.request_token() fetch_token.assert_called_with(endpoint='/api/v4/oauth/request_token/') def test_get_derivatives(self): """ Test if when we call derivatives it will use the correct params for the request and returns successfully. """ self.bynder_client.derivatives() self.bynder_client.bynder_request_handler.get.assert_called_with( endpoint='/api/v4/derivatives/') def test_logout(self): """ Test if the reset method in credentials is called on logout. """ self.bynder_client.logout() self.bynder_client.credentials.reset.assert_called_with() def test_update_tokens(self): """ Test if the tokens in the credentials are updated with the new tokens. """ new_token = '123ABC' new_token_secret = '456DEF' self.bynder_client._update_tokens(new_token, new_token_secret) self.assertEqual(self.bynder_client.credentials.token, new_token) self.assertEqual(self.bynder_client.credentials.token_secret, new_token_secret)
# Generate tokens if you don't have them if not HAS_TOKENS: # Generate request token bynder_client.request_token() # Get the authorise url authorise_url = bynder_client.authorise_url() print(authorise_url) webbrowser.open_new_tab(authorise_url) # Sleep for a while to give you time to login using the authorise url time.sleep(20) # Now get the access tokens bynder_client.access_token() # Or use the login method (deprecated) # login = bynder_client.login( # username='******', # password='******' # ) # print(login) # Get the asset bank client asset_bank_client = bynder_client.asset_bank_client # Get the collections client collection_client = bynder_client.collection_client # Get brands