def before_request(): g.log = dict() g.log['out'] = list() g.log['request'] = log_request(request) g.endpoint = request.endpoint if request.blueprint: g.endpoint = g.endpoint[len(request.blueprint):].lstrip('.') reseller_info = get_reseller_info() g.reseller_name = reseller_info.name g.company_name = 'N/A' if not reseller_info.name: allow_public_endpoints_only() return if not check_oauth_signature(request): abort(401) g.auth = reseller_info.auth g.reseller = Reseller(reseller_info.name, reseller_info.id, None) g.reseller.refresh() if not g.reseller.token and not reseller_info.is_new: abort(403)
def test_make_fallball_user(self, get_name_for_tenant_mock, flask_g_mock, OA_mock): OA_mock.get_resource.return_value = self.user_service flask_g_mock.reseller = Reseller('fake_reseller') get_name_for_tenant_mock.return_value = 'fake_client' user = make_fallball_user('123-123-123') assert user.client.name == 'fake_client' assert user.client.reseller.name == 'fake_reseller' assert user.user_id == '3c9ed599-cd79-4222-beb0-be83f9dc8078'
def test_admin_login(self, get_name_for_fb_client_mock, flask_g_mock, OA_mock, FbUser_mock): get_name_for_fb_client_mock.return_value = 'fake_client' flask_g_mock.reseller = Reseller('fake_reseller') fb_user_mock = FbUser_mock.return_value fb_user_mock.login_link.return_value = 'login_link_with_token' res = self.client.get('/connector/v1/tenant/123/adminlogin', headers=self.headers) assert res.status_code == 200 assert b'token' in res.data
def test_make_fallball_user(self): with patch('connector.resources.user.OA') as fake_oa, \ patch('connector.resources.user.g') as fake_g, \ patch('connector.resources.user.get_name_for_tenant') as fake_name: fake_oa.get_resource.return_value = self.user_service fake_g.reseller = Reseller('fake_reseller') fake_name.return_value = 'fake_client' user = make_fallball_user('123-123-123') assert user.client.name == 'fake_client' assert user.client.reseller.name == 'fake_reseller' assert user.email == '*****@*****.**'
def test_admin_login(self): with patch('connector.resources.tenant.get_name_for_tenant') as fake_name, \ patch('connector.resources.tenant.g') as fake_g, \ patch('connector.resources.tenant.OA'), \ patch('connector.resources.tenant.FbUser') as fake_user: fake_name.return_value = 'fake_client' fake_g.reseller = Reseller('fake_reseller') user_instance = fake_user.return_value user_instance.login_link.return_value = 'login_link_with_token' res = self.client.get('/v1/tenant/123/adminlogin', headers=self.headers) assert res.status_code == 200 assert b'token' in res.data
def test_admin_login_no_user_in_oa(self, get_name_for_fb_client_mock, flask_g_mock, OA_mock, FbUser_mock): get_name_for_fb_client_mock.return_value = 'fake_client' flask_g_mock.reseller = Reseller('fake_reseller') fake_oa_response = MagicMock() fake_oa_response.status_code = 404 fake_oa_response.text = 'Get user from OA failed' OA_mock.get_resource.side_effect = OACommunicationException( fake_oa_response) fb_user_mock = FbUser_mock.return_value fb_user_mock.login_link.return_value = 'login_link_for_manual_login' res = self.client.get('/connector/v1/tenant/123/adminlogin', headers=self.headers) assert res.status_code == 200
def setup_fb_client(): patcher = patch('connector.v1.resources.tenant.Client') FbClient_mock = patcher.start() fb_client_mock = FbClient_mock.return_value fb_client_mock.storage = {'usage': 1} fb_client_mock.environment = 'TEST' fb_client_mock.country = 'US' fb_client_mock.name = 'fake_company_name' fb_client_mock.users_by_type = {'PLATINUM': 1, 'BRONZE': 2} fb_client_mock.reseller = Reseller('fake_reseller') yield fb_client_mock patcher.stop()
def test_admin_login_no_user_in_fallball(self, get_name_for_fb_client_mock, flask_g_mock, OA_mock, FbUser_mock): get_name_for_fb_client_mock.return_value = 'fake_client' flask_g_mock.reseller = Reseller('fake_reseller') fake_fallball_response = MagicMock() fake_fallball_response.status_code = 404 fb_user_mock = FbUser_mock.return_value fb_user_mock.login_link.side_effect = [ OACommunicationException(fake_fallball_response), DEFAULT ] fb_user_mock.login_link.return_value = 'login_link_for_manual_login' res = self.client.get('/connector/v1/tenant/123/adminlogin', headers=self.headers) assert res.status_code == 200
def test_new_tenant_no_diskspace(self): with patch('connector.resources.tenant.Client') as fake_client, \ patch('connector.resources.tenant.OA') as fake_oa: instance = fake_client.return_value instance.name = 'fake_company_name' instance.reseller = Reseller('fake_reseller') fake_oa.get_resource.side_effect = [{ 'companyName': 'fake_company' }, { 'subscriptionId': 555 }] res = self.client.post('/v1/tenant', headers=self.headers, data=self.diskless_tenant) instance.create.assert_called() assert res.status_code == 201
def test_admin_login_no_user_in_oa(self): with patch('connector.resources.tenant.get_name_for_tenant') as fake_name, \ patch('connector.resources.tenant.g') as fake_g, \ patch('connector.resources.tenant.OA') as fake_oa, \ patch('connector.resources.tenant.FbUser') as fake_user: fake_name.return_value = 'fake_client' fake_g.reseller = Reseller('fake_reseller') fake_oa_response = MagicMock() fake_oa_response.status_code = 404 fake_oa_response.text = 'Get user from OA failed' fake_oa.get_resource.side_effect = OACommunicationException( fake_oa_response) user_instance = fake_user.return_value user_instance.login_link.return_value = 'login_link_for_manual_login' res = self.client.get('/v1/tenant/123/adminlogin', headers=self.headers) assert res.status_code == 200
def test_fb_client_on_users_change(self, get_name_for_fb_client_mock, flask_g_mock, OA_mock, FbUser_mock): with setup_fb_client() as fb_client_mock: get_name_for_fb_client_mock.return_value = 'fake_client' flask_g_mock.reseller = Reseller('fake_reseller') fb_client_mock.users_by_type = {'BRILLIANT_USERS': 1} tenant = { config.devices_resource: { 'usage': 0 }, 'BRILLIANT_USERS': { 'usage': 1 }, config.diskspace_resource: { 'usage': 1 }, 'ENVIRONMENT': { 'usage': 1 }, 'COUNTRY': { 'usage': 0 } } OA_mock.get_user_resources.return_value = ['BRILLIANT_USERS'] OA_mock.get_counters.return_value = [ 'DEVICES', 'DISKSPACE', 'USERS' ] self.client.post('/connector/v1/tenant/123/onUsersChange', headers=self.headers, data='{}') OA_mock.send_request.assert_called_with( 'put', 'aps/2/application/tenant/123', tenant) fb_client_mock.users_by_type['SILVER_USERS'] = 2 OA_mock.get_user_resources.return_value = [ 'BRILLIANT_USERS', 'SILVER_USERS' ] tenant['SILVER_USERS'] = {'usage': 2} self.client.post('/connector/v1/tenant/123/onUsersChange', headers=self.headers, data='{}') OA_mock.send_request.assert_called_with( 'put', 'aps/2/application/tenant/123', tenant)
def get_reseller_name(reseller_id): res = [r for r in Reseller.all() if r.rid == reseller_id] return None if not res else res[0].name