ringcentral.platform.platform_test
1import sys 2import unittest 3import requests_mock 4 5from ..test import TestCase 6 7 8@requests_mock.Mocker() 9class TestPlatform(TestCase): 10 def test_key(self, mock): 11 sdk = self.get_sdk(mock) 12 self.assertEqual('d2hhdGV2ZXI6d2hhdGV2ZXI=', sdk.platform()._api_key()) 13 14 def test_login(self, mock): 15 sdk = self.get_sdk(mock) 16 self.assertTrue(sdk.platform().auth().data()['access_token']) 17 18 def test_login_code(self, mock): 19 sdk = self.get_sdk(mock) 20 self.logout_mock(mock) 21 sdk.platform().logout() 22 self.authentication_mock(mock) 23 sdk.platform().login(code='foo') 24 text = str(mock.request_history[-1].text) 25 if sys.version_info[0] == 3: 26 self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo') 27 else: 28 self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect') 29 30 def test_login_fail(self, mock): 31 sdk = self.get_sdk(mock) 32 self.logout_mock(mock) 33 sdk.platform().logout() 34 self.authentication_mock(mock) 35 try: 36 sdk.platform().login() 37 except Exception as e: 38 self.assertTrue( e ) 39 40 def test_login_code_redirect(self, mock): 41 sdk = self.get_sdk(mock) 42 self.logout_mock(mock) 43 sdk.platform().logout() 44 self.authentication_mock(mock) 45 sdk.platform().login(code='foo', redirect_uri='bar') 46 text = str(mock.request_history[-1].text) 47 if sys.version_info[0] == 3: 48 self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo') 49 else: 50 self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar') 51 52 def test_refresh_with_outdated_token(self, mock): 53 sdk = self.get_sdk(mock) 54 55 self.refresh_mock(mock) 56 57 sdk.platform().auth().set_data({ 58 'refresh_token_expires_in': 1, 59 'refresh_token_expire_time': 1 60 }) 61 62 self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in']) 63 self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time']) 64 65 caught = False 66 try: 67 sdk.platform().refresh() 68 except Exception as e: 69 caught = True 70 self.assertEqual('Refresh token has expired', str(e)) 71 72 self.assertTrue(caught) 73 74 def test_logged_in(self, mock): 75 sdk = self.get_sdk(mock) 76 77 self.assertTrue(sdk.platform().logged_in()) 78 79 def test_manual_refresh(self, mock): 80 sdk = self.get_sdk(mock) 81 82 self.refresh_mock(mock) 83 self.add(mock, 'GET', '/foo', {'foo': 'bar'}) 84 85 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 86 87 sdk.platform().refresh() 88 89 self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token']) 90 91 def skip_test_automatic_refresh(self, mock): # FIXME Put it back 92 sdk = self.get_sdk(mock) 93 94 self.add(mock, 'GET', '/foo', {'foo': 'bar'}) 95 self.refresh_mock(mock) 96 97 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 98 99 sdk.platform().auth().set_data({ 100 'expires_in': 0, 101 'expire_time': 0 102 }) 103 104 self.assertEqual('bar', sdk.platform().get('/foo').json().foo) 105 self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token']) 106 107 def test_logout(self, mock): 108 sdk = self.get_sdk(mock) 109 110 self.logout_mock(mock) 111 112 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 113 114 sdk.platform().logout() 115 116 self.assertEqual('', sdk.platform().auth().data()['access_token']) 117 self.assertEqual('', sdk.platform().auth().data()['refresh_token']) 118 self.assertFalse(sdk.platform().logged_in()) 119 120 def test_api_url(self, mock): 121 sdk = self.get_sdk(mock) 122 123 exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' 124 act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True) 125 self.assertEqual(exp1, act1) 126 127 exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' 128 url2 = 'https://foo/account/~/extension/~' 129 act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True) 130 self.assertEqual(exp2, act2) 131 132 def test_api_url_custom_prefixes(self, mock): 133 sdk = self.get_sdk(mock) 134 exp = 'https://whatever/scim/v2/foo' 135 url = '/scim/v2/foo' 136 act = sdk.platform().create_url(url, add_server=True) 137 self.assertEqual(exp, act) 138 139 exp = 'https://whatever/analytics/phone/foo' 140 url = '/analytics/phone/foo' 141 act = sdk.platform().create_url(url, add_server=True) 142 self.assertEqual(exp, act) 143 144 def test_delete_with_body(self,mock): 145 sdk = self.get_sdk(mock) 146 self.delete_mock_with_body(mock) 147 res = sdk.platform().delete(url='/restapi/v2/accounts/~/extensions',body={"keepAssetsInInventory": True,"records": [{"id": "123"}]}) 148 self.assertTrue(mock.called) 149 150 def test_delete_without_body(self, mock): 151 sdk = self.get_sdk(mock) 152 self.delete_mock_without_body(mock) 153 sdk.platform().delete(url='/restapi/v2/accounts/~/extensions') 154 self.assertTrue(mock.called) 155 156if __name__ == '__main__': 157 unittest.main()
9@requests_mock.Mocker() 10class TestPlatform(TestCase): 11 def test_key(self, mock): 12 sdk = self.get_sdk(mock) 13 self.assertEqual('d2hhdGV2ZXI6d2hhdGV2ZXI=', sdk.platform()._api_key()) 14 15 def test_login(self, mock): 16 sdk = self.get_sdk(mock) 17 self.assertTrue(sdk.platform().auth().data()['access_token']) 18 19 def test_login_code(self, mock): 20 sdk = self.get_sdk(mock) 21 self.logout_mock(mock) 22 sdk.platform().logout() 23 self.authentication_mock(mock) 24 sdk.platform().login(code='foo') 25 text = str(mock.request_history[-1].text) 26 if sys.version_info[0] == 3: 27 self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo') 28 else: 29 self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect') 30 31 def test_login_fail(self, mock): 32 sdk = self.get_sdk(mock) 33 self.logout_mock(mock) 34 sdk.platform().logout() 35 self.authentication_mock(mock) 36 try: 37 sdk.platform().login() 38 except Exception as e: 39 self.assertTrue( e ) 40 41 def test_login_code_redirect(self, mock): 42 sdk = self.get_sdk(mock) 43 self.logout_mock(mock) 44 sdk.platform().logout() 45 self.authentication_mock(mock) 46 sdk.platform().login(code='foo', redirect_uri='bar') 47 text = str(mock.request_history[-1].text) 48 if sys.version_info[0] == 3: 49 self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo') 50 else: 51 self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar') 52 53 def test_refresh_with_outdated_token(self, mock): 54 sdk = self.get_sdk(mock) 55 56 self.refresh_mock(mock) 57 58 sdk.platform().auth().set_data({ 59 'refresh_token_expires_in': 1, 60 'refresh_token_expire_time': 1 61 }) 62 63 self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in']) 64 self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time']) 65 66 caught = False 67 try: 68 sdk.platform().refresh() 69 except Exception as e: 70 caught = True 71 self.assertEqual('Refresh token has expired', str(e)) 72 73 self.assertTrue(caught) 74 75 def test_logged_in(self, mock): 76 sdk = self.get_sdk(mock) 77 78 self.assertTrue(sdk.platform().logged_in()) 79 80 def test_manual_refresh(self, mock): 81 sdk = self.get_sdk(mock) 82 83 self.refresh_mock(mock) 84 self.add(mock, 'GET', '/foo', {'foo': 'bar'}) 85 86 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 87 88 sdk.platform().refresh() 89 90 self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token']) 91 92 def skip_test_automatic_refresh(self, mock): # FIXME Put it back 93 sdk = self.get_sdk(mock) 94 95 self.add(mock, 'GET', '/foo', {'foo': 'bar'}) 96 self.refresh_mock(mock) 97 98 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 99 100 sdk.platform().auth().set_data({ 101 'expires_in': 0, 102 'expire_time': 0 103 }) 104 105 self.assertEqual('bar', sdk.platform().get('/foo').json().foo) 106 self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token']) 107 108 def test_logout(self, mock): 109 sdk = self.get_sdk(mock) 110 111 self.logout_mock(mock) 112 113 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 114 115 sdk.platform().logout() 116 117 self.assertEqual('', sdk.platform().auth().data()['access_token']) 118 self.assertEqual('', sdk.platform().auth().data()['refresh_token']) 119 self.assertFalse(sdk.platform().logged_in()) 120 121 def test_api_url(self, mock): 122 sdk = self.get_sdk(mock) 123 124 exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' 125 act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True) 126 self.assertEqual(exp1, act1) 127 128 exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' 129 url2 = 'https://foo/account/~/extension/~' 130 act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True) 131 self.assertEqual(exp2, act2) 132 133 def test_api_url_custom_prefixes(self, mock): 134 sdk = self.get_sdk(mock) 135 exp = 'https://whatever/scim/v2/foo' 136 url = '/scim/v2/foo' 137 act = sdk.platform().create_url(url, add_server=True) 138 self.assertEqual(exp, act) 139 140 exp = 'https://whatever/analytics/phone/foo' 141 url = '/analytics/phone/foo' 142 act = sdk.platform().create_url(url, add_server=True) 143 self.assertEqual(exp, act) 144 145 def test_delete_with_body(self,mock): 146 sdk = self.get_sdk(mock) 147 self.delete_mock_with_body(mock) 148 res = sdk.platform().delete(url='/restapi/v2/accounts/~/extensions',body={"keepAssetsInInventory": True,"records": [{"id": "123"}]}) 149 self.assertTrue(mock.called) 150 151 def test_delete_without_body(self, mock): 152 sdk = self.get_sdk(mock) 153 self.delete_mock_without_body(mock) 154 sdk.platform().delete(url='/restapi/v2/accounts/~/extensions') 155 self.assertTrue(mock.called)
A class whose instances are single test cases.
By default, the test code itself should be placed in a method named 'runTest'.
If the fixture may be used for many test cases, create as many test methods as are needed. When instantiating such a TestCase subclass, specify in the constructor arguments the name of the test method that the instance is to execute.
Test authors should subclass TestCase for their own tests. Construction and deconstruction of the test's environment ('fixture') can be implemented by overriding the 'setUp' and 'tearDown' methods respectively.
If it is necessary to override the __init__ method, the base class __init__ method must always be called. It is important that subclasses should not change the signature of their __init__ method, since instances of the classes are instantiated automatically by parts of the framework in order to be run.
When subclassing TestCase, you can set these attributes:
- failureException: determines which exception will be raised when the instance's assertion methods fail; test methods raising this exception will be deemed to have 'failed' rather than 'errored'.
- longMessage: determines whether long messages (including repr of objects used in assert methods) will be printed on failure in addition to any explicit message passed.
- maxDiff: sets the maximum length of a diff in failure messages by assert methods using difflib. It is looked up as an instance attribute so can be configured by individual tests if required.
19 def test_login_code(self, mock): 20 sdk = self.get_sdk(mock) 21 self.logout_mock(mock) 22 sdk.platform().logout() 23 self.authentication_mock(mock) 24 sdk.platform().login(code='foo') 25 text = str(mock.request_history[-1].text) 26 if sys.version_info[0] == 3: 27 self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect&code=foo') 28 else: 29 self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fwhatever-redirect')
41 def test_login_code_redirect(self, mock): 42 sdk = self.get_sdk(mock) 43 self.logout_mock(mock) 44 sdk.platform().logout() 45 self.authentication_mock(mock) 46 sdk.platform().login(code='foo', redirect_uri='bar') 47 text = str(mock.request_history[-1].text) 48 if sys.version_info[0] == 3: 49 self.assertEqual(text, 'grant_type=authorization_code&redirect_uri=bar&code=foo') 50 else: 51 self.assertEqual(text, 'code=foo&grant_type=authorization_code&redirect_uri=bar')
53 def test_refresh_with_outdated_token(self, mock): 54 sdk = self.get_sdk(mock) 55 56 self.refresh_mock(mock) 57 58 sdk.platform().auth().set_data({ 59 'refresh_token_expires_in': 1, 60 'refresh_token_expire_time': 1 61 }) 62 63 self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expires_in']) 64 self.assertEqual(1, sdk.platform().auth().data()['refresh_token_expire_time']) 65 66 caught = False 67 try: 68 sdk.platform().refresh() 69 except Exception as e: 70 caught = True 71 self.assertEqual('Refresh token has expired', str(e)) 72 73 self.assertTrue(caught)
80 def test_manual_refresh(self, mock): 81 sdk = self.get_sdk(mock) 82 83 self.refresh_mock(mock) 84 self.add(mock, 'GET', '/foo', {'foo': 'bar'}) 85 86 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 87 88 sdk.platform().refresh() 89 90 self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
92 def skip_test_automatic_refresh(self, mock): # FIXME Put it back 93 sdk = self.get_sdk(mock) 94 95 self.add(mock, 'GET', '/foo', {'foo': 'bar'}) 96 self.refresh_mock(mock) 97 98 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 99 100 sdk.platform().auth().set_data({ 101 'expires_in': 0, 102 'expire_time': 0 103 }) 104 105 self.assertEqual('bar', sdk.platform().get('/foo').json().foo) 106 self.assertEqual('ACCESS_TOKEN_FROM_REFRESH', sdk.platform().auth().data()['access_token'])
108 def test_logout(self, mock): 109 sdk = self.get_sdk(mock) 110 111 self.logout_mock(mock) 112 113 self.assertEqual('ACCESS_TOKEN', sdk.platform().auth().data()['access_token']) 114 115 sdk.platform().logout() 116 117 self.assertEqual('', sdk.platform().auth().data()['access_token']) 118 self.assertEqual('', sdk.platform().auth().data()['refresh_token']) 119 self.assertFalse(sdk.platform().logged_in())
121 def test_api_url(self, mock): 122 sdk = self.get_sdk(mock) 123 124 exp1 = 'https://whatever/restapi/v1.0/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' 125 act1 = sdk.platform().create_url('/account/~/extension/~', add_server=True, add_method='POST', add_token=True) 126 self.assertEqual(exp1, act1) 127 128 exp2 = 'https://foo/account/~/extension/~?_method=POST&access_token=ACCESS_TOKEN' 129 url2 = 'https://foo/account/~/extension/~' 130 act2 = sdk.platform().create_url(url2, add_server=True, add_method='POST', add_token=True) 131 self.assertEqual(exp2, act2)
133 def test_api_url_custom_prefixes(self, mock): 134 sdk = self.get_sdk(mock) 135 exp = 'https://whatever/scim/v2/foo' 136 url = '/scim/v2/foo' 137 act = sdk.platform().create_url(url, add_server=True) 138 self.assertEqual(exp, act) 139 140 exp = 'https://whatever/analytics/phone/foo' 141 url = '/analytics/phone/foo' 142 act = sdk.platform().create_url(url, add_server=True) 143 self.assertEqual(exp, act)
Inherited Members
- ringcentral.test.testcase.TestCase
- TestCase
- get_sdk
- add
- authentication_mock
- logout_mock
- presence_subscription_mock
- refresh_mock
- subscription_mock
- delete_mock_with_body
- delete_mock_without_body
- unittest.case.TestCase
- failureException
- longMessage
- maxDiff
- addTypeEqualityFunc
- addCleanup
- enterContext
- addClassCleanup
- enterClassContext
- setUp
- tearDown
- setUpClass
- tearDownClass
- countTestCases
- defaultTestResult
- shortDescription
- id
- subTest
- run
- doCleanups
- doClassCleanups
- debug
- skipTest
- fail
- assertFalse
- assertTrue
- assertRaises
- assertWarns
- assertLogs
- assertNoLogs
- assertEqual
- assertNotEqual
- assertAlmostEqual
- assertNotAlmostEqual
- assertSequenceEqual
- assertListEqual
- assertTupleEqual
- assertSetEqual
- assertIn
- assertNotIn
- assertIs
- assertIsNot
- assertDictEqual
- assertDictContainsSubset
- assertCountEqual
- assertMultiLineEqual
- assertLess
- assertLessEqual
- assertGreater
- assertGreaterEqual
- assertIsNone
- assertIsNotNone
- assertIsInstance
- assertNotIsInstance
- assertRaisesRegex
- assertWarnsRegex
- assertRegex
- assertNotRegex
- failUnlessRaises
- failIf
- assertRaisesRegexp
- assertRegexpMatches
- assertNotRegexpMatches
- failUnlessEqual
- assertEquals
- failIfEqual
- assertNotEquals
- failUnlessAlmostEqual
- assertAlmostEquals
- failIfAlmostEqual
- assertNotAlmostEquals
- failUnless
- assert_