def setUp(self): tester_signup() tester_signup("*****@*****.**", "supersuper", "superuser", "1297391") tester_signup("*****@*****.**", "useruser", "user", "1297392") tester_signup("*****@*****.**", "anotheruser", "anotheruser", "1297393") self.superuser = User.objects.filter(first_name="superuser")[0] self.superuser.is_superuser = True self.superuser.save() self.admin = User.objects.filter(first_name="admin")[0] self.admin.is_admin = True self.admin.save() self.user = User.objects.filter(first_name="user")[0] self.another_user = User.objects.filter(first_name="anotheruser")[0] tester_create_activity('First Salon', '2020-01-02T20:00+08:00', 'MS Shanghai', [self.user.id]) self.activity = Activity.objects.first() self.second_activity = Activity.objects.create( title='Second Salon', datetime='2021-02-28 08:00+08:00', location='MS Seattle') Activity.objects.get(title='Second Salon').presenter.add( *list(User.objects.all())) self.assertEqual(Activity.objects.count(), 2)
def test_activity_time_format(self): # 以下时间应当均等价,应当得到相同的输出 testcases = [ '2020-01-01T00:00:00.000Z', '2020-01-01T08:00:00.000+08:00', '2020-01-01T08:00:00.00', '2020-01-01T08:00', '2020-01-01 08:00', '2020-01-01 08:00+08:00' ] error_testcases = [ '2020-01-01', '00:00', '2021-02-29 08:00+08:00', '2020-13-01 08:00+08:00', '2020-13-31 08:00+08:00', '2020-12-31 24:00+08:00', ] output = None for test_input in testcases: response = tester_create_activity(date_time=test_input) self.assertEqual(response.status_code, 201) result = response.json()['datetime'] if output is None: output = result else: self.assertEqual(result, output) for error_input in error_testcases: response = tester_create_activity(date_time=error_input) self.assertEqual(response.status_code, 400, response.json())
def test_get_activity_list(self): tester_create_activity('First Salon', now() - timedelta(weeks=1), 'MS Shanghai', [self.ids[0]]) tester_create_activity('Second Salon', now() - timedelta(days=1), 'MS Beijing', [self.ids[2]]) tester_create_activity('Third Salon', now() - timedelta(hours=2), 'MS Suzhou', [self.ids[3]]) tester_create_activity('Fourth Salon', now(), 'MS Seattle', self.ids[0:3]) client = Client() response = client.get(activity_list_url) self.assertEqual(response.status_code, 200) # 未登录,get 返回 200 tester_login(client=client) response = client.get(activity_list_url) self.assertEqual(response.status_code, 200) json_content = response.json() self.assertEqual(json_content['count'], 4) # 总数正确 results = json_content['results'] self.check_order(results) # 检查是否按日期降序排序 for activity_dict in results: # 检查每一个活动 activity = Activity.objects.get(id=activity_dict['id']) self.assertActivityDetailEqual(activity_dict, activity)
def test_patch_unauthorized(self): response = tester_create_activity( presenter_ids=[self.presenter.id, self.another_presenter.id]) activity_id = response.json()['id'] user_permissions = [ # 以六种用户身份去遍历 [AnonymousUser, False], [self.superuser, True], [self.admin, True], [self.simple_user, False], [self.presenter, True], [self.another_presenter, True] ] for user, permission in user_permissions: new_title = Activity.objects.get(id=activity_id).title + '1' client = Client() if user != AnonymousUser: client.force_login(user) response = client.patch(activity_detail_url(activity_id), data={"title": new_title}, content_type='application/json') self.assertEqual( response.status_code == 200, permission, f"user={user}, status_code={response.status_code}") activity_title = Activity.objects.get(id=activity_id).title self.assertEqual( new_title == activity_title, permission, f"user={user}, new_title={new_title}, current={activity_title}" )
def setUp(self): self.superuser = User.objects.create_user( id=1, username="******", password="******", is_superuser=True) self.admin = User.objects.create_user(id=2, username="******", password="******", is_staff=True) self.user = User.objects.create_user(id=3, username="******", password="******") self.another_user = User.objects.create_user( id=4, username="******", password="******") tester_create_activity('First Salon', '2020-01-02T20:00+08:00', 'MS Shanghai', [self.user.id]) self.activity = Activity.objects.first() self.assertEqual(Activity.objects.count(), 1)
def setUp(self): # 设置用户的权限 self.superuser = User.objects.create_user(username="******", first_name="superuser", is_superuser=True) self.admin = User.objects.create_user(username="******", first_name="admin", is_staff=True) self.simple_user = User.objects.create_user(username="******", first_name="user") self.presenter = User.objects.create_user(username="******", first_name="presenter") self.another_presenter = User.objects.create_user( username="******", first_name="another_presenter") tester_create_activity('First Salon', '2020-01-01T00:00:00.000Z', 'MS Shanghai', [self.presenter.id, self.another_presenter.id]) self.activity = Activity.objects.first() self.activity.link.create(url='https://uestc-msc.com/')
def setUp(self): # 设置用户的权限 self.superuser = User.objects.create_user(username="******", first_name="superuser", is_superuser=True) self.admin = User.objects.create_user(username="******", first_name="admin", is_staff=True) self.simple_user = User.objects.create_user(username="******", first_name="user") self.presenter = User.objects.create_user(username="******", first_name="presenter") self.another_presenter = User.objects.create_user( username="******", first_name="another_presenter") self.ids = list(map(lambda u: u.id, User.objects.all())) tester_create_activity('First Salon', '2020-01-01T00:00:00.000Z', 'MS Shanghai', self.ids[0:2]) tester_create_activity('Second Salon', '2021-01-01T00:00', 'MS Beijing', [self.ids[2]]) tester_create_activity('Third Salon', '2021-02-01 00:00', 'MS Suzhou', [self.ids[3]]) Activity.objects.create(title='Fourth Salon', datetime='2021-02-28 08:00+08:00', location='MS Seattle') Activity.objects.get(title='Fourth Salon').presenter.add( *list(User.objects.all())) self.assertEqual(Activity.objects.count(), 4)
def setUp(self): # 设置用户的权限 self.superuser = User.objects.create_user(username="******", first_name="superuser", is_superuser=True) self.admin = User.objects.create_user(username="******", first_name="admin", is_staff=True) self.simple_user = User.objects.create_user(username="******", first_name="user") self.presenter = User.objects.create_user(username="******", first_name="presenter") self.another_presenter = User.objects.create_user( username="******", first_name="another_presenter") response = tester_create_activity( presenter_ids=[self.presenter.id, self.another_presenter.id]) self.activity_id = response.json()['id']
def test_delete_unauthorized(self): user_permissions = [ # 以六种用户身份去遍历 [AnonymousUser, False], [self.superuser, True], [self.admin, True], [self.simple_user, False], [self.presenter, True], [self.another_presenter, True] ] for user, permission in user_permissions: response = tester_create_activity( presenter_ids=[self.presenter.id, self.another_presenter.id]) activity_id = response.json()['id'] client = Client() if user != AnonymousUser: client.force_login(user) response = client.delete(activity_detail_url(activity_id)) if permission: self.assertEqual(response.status_code, 204, f"user={user}") else: self.assertEqual(response.status_code, 403, f"user={user}") Activity.objects.get(id=activity_id).delete()
def test_create_activity(self): client = Client() tester_login(client=client) date_time = now() response = tester_create_activity("First Activity", date_time, "MSFT", self.ids[0:2], client=client) self.assertEqual(response.status_code, 201, response.data) self.assertEqual(Activity.objects.count(), 1) # 活动成功写入数据库 # 比较 POST 值和数据库中的值 activity = Activity.objects.first() self.assertEqual(activity.title, "First Activity") self.assertDatetimeEqual(activity.datetime, date_time) self.assertEqual(activity.location, "MSFT") presenter_ids = set(map(lambda u: u.id, activity.presenter.all())) self.assertSetEqual(presenter_ids, set(self.ids[0:2])) self.assertEqual(activity.check_in_open, True) self.assertEqual(bool(activity.check_in_code), True) self.assertEqual(activity.attender.count(), 0) # 比较数据库中的值和返回值 self.assertActivityDetailEqual(response.content, activity)
def test_create_activity_unauthorized(self): response = tester_create_activity(client=Client()) self.assertEqual(response.status_code, 403)