Example #1
0
    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)
Example #2
0
    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())
Example #3
0
    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)
Example #4
0
    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}"
            )
Example #5
0
    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/')
Example #7
0
    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)
Example #8
0
    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']
Example #9
0
    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()
Example #10
0
    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)
Example #11
0
 def test_create_activity_unauthorized(self):
     response = tester_create_activity(client=Client())
     self.assertEqual(response.status_code, 403)