def gen_client(token): ''' gen client by token ''' client = APIClient() client.credentials(HTTP_AUTHORIZATION='Token ' + token) return client
def gen_client(username): ''' gen client by token ''' client = APIClient() client.head = {'user': username} return client
def test_ding_login(self, mock_auth_code): mock_auth_code.return_value = "ding_uid" client = APIClient() res = client.post(reverse('siteapi:ding_login'), data={'code': 'ding_code'}) expect = {'code': ["this account hasn't registered"]} self.assertEqual(res.json(), expect) self.assertEqual(res.status_code, 400) user = User.create_user(username='******', password='') DingUser.valid_objects.create(user=user, uid='ding_uid') res = client.post(reverse('siteapi:ding_login'), data={'code': 'ding_code'}) self.assertEqual(res.status_code, 200) self.assertIn('token', res.json())
def setUp(self): super(DeptPermTestCase, self).setUp() root = Dept.valid_objects.get(uid='root') level_1 = Dept.valid_objects.create(uid='l1', name='l1', parent=root) Dept.valid_objects.create(uid='l11', name='l11', parent=level_1, order_no=2) Dept.valid_objects.create(uid='l12', name='l12', parent=level_1, order_no=1) user = User.create_user('employee', 'employee') DeptMember.valid_objects.create(user=user, owner=root) user = User.create_user('employee_2', 'employee_2') token = self.client.post(reverse('siteapi:user_login'), data={ 'username': '******', 'password': '******' }).json()['token'] self.employee = APIClient() self.employee.credentials(HTTP_AUTHORIZATION='Token ' + token)
class TestCase(django_TestCase): ''' base TestCase ''' client = None maxDiff = None now = datetime.datetime(2019, 1, 1, tzinfo=pytz.timezone('UTC')) now_str = '2019-01-01T08:00:00+08:00' mock_now = False def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.anonymous = APIClient() self.user = User.valid_objects.get(username='******') @staticmethod def gen_client(token): ''' gen client by token ''' client = APIClient() client.credentials(HTTP_AUTHORIZATION='Token ' + token) return client def login(self, username, password): ''' gen test client as logined user ''' token = self.anonymous.post(reverse('siteapi:user_login'), data={ 'username': username, 'password': password, }).json()['token'] return self.gen_client(token) def login_as(self, user): ''' gen test client from user ''' return self.gen_client(user.token) def setUp(self): ''' pre-work ''' self.init() self.client = self.login_as(self.user) if self.mock_now: self.now_patcher = mock.patch('django.utils.timezone.now') self.mock_now = self.now_patcher.start() self.mock_now.return_value = self.now def tearDown(self): if self.mock_now: self.now_patcher.stop() def init(self): '''
class TestCase(django_TestCase): ''' base TestCase ''' client = None maxDiff = None def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.anonymous = APIClient() self.user = User.valid_objects.get(username='******') @staticmethod def gen_client(token): ''' gen client by token ''' client = APIClient() client.credentials(HTTP_AUTHORIZATION='Token ' + token) return client def login(self, username, password): ''' gen test client as logined user ''' token = self.anonymous.post(reverse('siteapi:user_login'), data={ 'username': username, 'password': password, }).json()['token'] return self.gen_client(token) def login_as(self, user): ''' gen test client from user ''' return self.gen_client(user.token) def setUp(self): ''' pre-work ''' self.init() self.client = self.login_as(self.user) def init(self): '''
class DeptPermTestCase(TestCase): def setUp(self): super(DeptPermTestCase, self).setUp() root = Dept.valid_objects.get(uid='root') level_1 = Dept.valid_objects.create(uid='l1', name='l1', parent=root) Dept.valid_objects.create(uid='l11', name='l11', parent=level_1, order_no=2) Dept.valid_objects.create(uid='l12', name='l12', parent=level_1, order_no=1) user = User.create_user('employee', 'employee') DeptMember.valid_objects.create(user=user, owner=root) user = User.create_user('employee_2', 'employee_2') token = self.client.post(reverse('siteapi:user_login'), data={ 'username': '******', 'password': '******' }).json()['token'] self.employee = APIClient() self.employee.credentials(HTTP_AUTHORIZATION='Token ' + token) def test_no_perm(self): res = self.anonymous.get(reverse('siteapi:ucenter_node_detail', args=('d_l11', ))) self.assertEqual(res.status_code, 401) res = self.employee.get(reverse('siteapi:ucenter_node_detail', args=('d_l11', ))) self.assertEqual(res.status_code, 200) res = self.employee.get(reverse('siteapi:dept_tree', args=('l11', ))) self.assertEqual(res.status_code, 403) res = self.employee.get(reverse('siteapi:dept_child_user', args=('l11', ))) self.assertEqual(res.status_code, 200) res = self.employee.get(reverse('siteapi:dept_child_dept', args=('l11', ))) self.assertEqual(res.status_code, 200) res = self.employee.delete(reverse('siteapi:dept_detail', args=('l11', ))) self.assertEqual(res.status_code, 403) res = self.employee.json_post(reverse('siteapi:dept_child_dept', args=('l11', ))) self.assertEqual(res.status_code, 403) res = self.employee.json_patch(reverse('siteapi:dept_child_user', args=('l11', ))) self.assertEqual(res.status_code, 403) def test_node_perm(self): perm = Perm.get('dept_nodel1_admin') UserPerm.valid_objects.create(owner=User.objects.get(username='******'), perm=perm, value=True) group = Group.objects.create(name='test') ManagerGroup.objects.create(group=group, scope_subject=2, nodes=['d_l11']) GroupMember.objects.create(owner=group, user=User.objects.get(username='******')) res = self.employee.json_patch(reverse('siteapi:dept_detail', args=('l11', )), data={'name': 'new'}) Dept.objects.get(uid='l11') self.assertEqual(res.status_code, 200) res = self.employee.json_patch(reverse('siteapi:dept_detail', args=('l1', )), data={'name': 'new'}) self.assertEqual(res.status_code, 403) def test_boss(self): employee = User.objects.get(username='******') employee.is_boss = True employee.save() res = self.employee.json_patch(reverse('siteapi:dept_detail', args=('l11', )), data={'name': 'new'}) self.assertEqual(res.status_code, 200) res = self.employee.json_patch(reverse('siteapi:dept_detail', args=('l1', )), data={'name': 'new'}) self.assertEqual(res.status_code, 200)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.anonymous = APIClient() self.user = User.valid_objects.get(username='******')
def test_login(self): user = User.create_user(username='******', password='******') user.mobile = '18812341234' user.private_email = '*****@*****.**' user.save() client = APIClient() res = client.get(reverse('siteapi:user_self_perm')) self.assertEqual(res.status_code, 401) res = client.post(reverse('siteapi:user_login'), data={ 'username': '******', 'password': '******' }) self.assertEqual(res.status_code, 200) res = client.post(reverse('siteapi:user_login'), data={ 'private_email': '*****@*****.**', 'password': '******' }) self.assertEqual(res.status_code, 200) res = client.post(reverse('siteapi:user_login'), data={ 'mobile': '18812341234', 'password': '******' }) self.assertEqual(res.status_code, 200) user = User.objects.get(username='******') self.assertIsNotNone(user.last_active_time) self.assertTrue(user.is_settled) client.credentials(HTTP_AUTHORIZATION='Token ' + res.json()['token']) res = client.get(reverse('siteapi:user_self_perm')) self.assertEqual(res.status_code, 200) res = client.post(reverse('siteapi:user_login'), data={ 'username': '******', 'password': '******' }) self.assertEqual(res.json()['perms'], ['system_oneid_all', 'system_ark-meta-server_all']) # test login failed because of account_config email_config = EmailConfig.get_current() email_config.is_valid = False email_config.save() res = client.post(reverse('siteapi:user_login'), data={ 'private_email': '*****@*****.**', 'password': '******' }) self.assertEqual(res.status_code, 400) mobile_config = SMSConfig.get_current() mobile_config.is_valid = True mobile_config.save() res = client.post(reverse('siteapi:user_login'), data={ 'mobile': '18812341234', 'password': '******' }) self.assertEqual(res.status_code, 200)
class TestCase(django_TestCase): ''' base TestCase ''' client = None maxDiff = None now = datetime.datetime(2019, 1, 1, tzinfo=pytz.timezone('UTC')) now_str = '2019-01-01T08:00:00+08:00' mock_now = False def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.anonymous = APIClient() self.user = User.valid_objects.get(username='******') @staticmethod def gen_client(token): ''' gen client by token ''' client = APIClient() client.credentials(HTTP_AUTHORIZATION='Token ' + token) return client def login(self, username, password): ''' gen test client as logined user ''' token = self.anonymous.post(reverse('siteapi:user_login'), data={ 'username': username, 'password': password, }).json()['token'] return self.gen_client(token) def login_as(self, user): ''' gen test client from user ''' return self.gen_client(user.token) def setUp(self): ''' pre-work ''' self.init() self.client = self.login_as(self.user) if self.mock_now: self.now_patcher = mock.patch('django.utils.timezone.now') self.mock_now = self.now_patcher.start() self.mock_now.return_value = self.now def tearDown(self): if self.mock_now: self.now_patcher.stop() def init(self): ''' pre-work: create necessary objs ''' def assertEqualScoped(self, first, second, keys=None, msg=""): # pylint: disable=invalid-name ''' 断言两个对象的局部是否相等 目前仅限 dict 对象 ''' if keys is None: return self.assertEqual(first, second, msg) for key in keys: self.assertEqual(first[key], second[key], msg=f'[{key}]:' + msg) @staticmethod def extract(data, keys=None): ''' extract specified keys from dict ''' if keys is None: return data return {key: data.get(key) for key in keys}