コード例 #1
0
    def test_partial_update_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        pk = self.get_pk(resp)
        assert_http_bad_request(self.put('%s%s/' % (self.USER_API_URL, pk), data={}))
        assert_valid_JSON_response(self.patch('%s%s/' % (self.USER_API_URL, pk), data={}))
コード例 #2
0
 def test_create_user(self, number, data):
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     pk = self.deserialize(resp)['id']
     resp = self.get(self.USER_API_URL)
     assert_equal(len(self.deserialize(resp)), 1)
     assert_valid_JSON_response(self.get('%s%s/' % (self.USER_API_URL, pk)))
コード例 #3
0
 def test_superuser_should_update_is_superuser(self):
     user = self.logged_user.user
     resp = self.put('%s%s/' % (self.USER_API_URL, user.pk),
                     data={'is_superuser': False})
     assert_valid_JSON_response(resp)
     user.refresh_from_db()
     assert_false(user.is_superuser)
コード例 #4
0
 def test_user_can_get_number_of_its_issues(self):
     user = self.logged_user.user
     resp = self.get(self.USER_ISSUES_API_URL % {'user_pk': user.pk})
     assert_valid_JSON_response(resp)
     output = self.deserialize(resp)
     assert_equal(output['created'], 0)
     assert_equal(output['watching'], 0)
コード例 #5
0
    def test_superuser_may_read_user_data(self):
        [self.get_user_obj() for _ in range(5)]

        resp = self.get(self.USER_API_URL)
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        assert_equal(len(output), 6)
コード例 #6
0
 def test_override_extra_order_fields(self):
     assert_http_bad_request(
         self.get(build_url(self.USER_API_URL, order='created_at')))
     assert_valid_JSON_response(
         self.get(
             build_url(self.USER_API_URL,
                       order='email,-solving_issue__short_description')))
コード例 #7
0
 def test_core_readonly_methods_should_be_returned(self):
     user = self.get_user_obj()
     IssueFactory(created_by=user)
     resp = self.get('{}{}/?_fields=created_issues_count'.format(
         self.USER_API_URL, user.pk))
     assert_valid_JSON_response(resp)
     assert_equal(resp.json()['created_issues_count'], 1)
コード例 #8
0
    def test_user_can_update_only_itself(self):
        user = self.get_user_obj()
        resp = self.put('%s%s/' % (self.USER_API_URL, user.pk), data={})
        assert_http_not_found(resp)

        user = self.logged_user.user
        resp = self.put('%s%s/' % (self.USER_API_URL, user.pk), data={})
        assert_valid_JSON_response(resp)
コード例 #9
0
    def test_user_can_read_all_user_data(self):
        [self.get_user_obj() for _ in range(5)]

        resp = self.get(self.USER_API_URL)
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        assert_equal(len(output), 1)
        assert_equal(output[0]['id'], self.logged_user.user.pk)
コード例 #10
0
    def test_user_can_read_only_itself(self):
        resp = self.get(
            ('%s%s/') % (self.USER_API_URL, self.logged_user.user.pk))
        assert_valid_JSON_response(resp)

        user = self.get_user_obj()
        resp = self.get(('%s%s/') % (self.USER_API_URL, user.pk))
        assert_http_not_found(resp)
コード例 #11
0
ファイル: filter.py プロジェクト: rubickcz/django-pyston
 def test_issue_can_filter_only_with_readable_fields_and_extra_field(self):
     assert_valid_JSON_response(
         self.get(build_url(self.ISSUE_API_URL, filter='solver__created_at="1.1.2017"'))
     )
     assert_valid_JSON_response(self.get(build_url(self.ISSUE_API_URL, filter='created_at>"1.1.2017"')))
     assert_http_bad_request(
         self.get(build_url(self.ISSUE_API_URL, filter='solver__manual_created_date>"1.1.2017"'))
     )
コード例 #12
0
ファイル: order.py プロジェクト: druids/django-pyston
 def test_order_by_decorator(self):
     [IssueFactory(description=str(i)) for i in range(10)]
     data = self.deserialize(self.get(build_url(self.ISSUE_API_URL, order='short_description')))
     assert_equal([v['short_description'] for v in data], [str(i) for i in range(10)])
     data = self.deserialize(self.get(build_url(self.ISSUE_API_URL, order='-short_description')))
     assert_equal([v['short_description'] for v in data], [str(i) for i in range(10)][::-1])
     assert_valid_JSON_response(self.get(build_url(self.USER_API_URL, order='solving_issue__short_description')))
     assert_valid_JSON_response(self.get(build_url(self.USER_API_URL, order='-solving_issue__short_description')))
     assert_http_bad_request(self.get(build_url(self.ISSUE_API_URL, order='description')))
コード例 #13
0
 def test_override_extra_filter_fields(self):
     assert_http_bad_request(
         self.get(
             build_url(self.USER_API_URL,
                       filter='created_at__gt="1.1.1980"')))
     assert_valid_JSON_response(
         self.get(
             build_url(self.USER_API_URL,
                       filter='email contains "*****@*****.**"')))
コード例 #14
0
    def test_camel_snake_case_nested(self):
        resp = self.get(self.TEST_CC_API_URL)
        assert_valid_JSON_response(resp)

        data = {
            'fooBar': 'foo bar',
            'connected': {'fizBaz': 'test object property content'}
        }
        assert_equal(data, self.deserialize(resp))
コード例 #15
0
 def authorize(self, username, password):
     resp = self.post(is_core_settings.LOGIN_API_URL,
                      data={
                          is_core_settings.USERNAME: username,
                          is_core_settings.PASSWORD: password
                      })
     assert_valid_JSON_response(resp, 'REST authorization fail: %s' % resp)
     self.default_headers[header_name_to_django(
         settings.HEADER_NAME)] = (create_auth_header_value(
             self.deserialize(resp).get('token')))
コード例 #16
0
 def test_issue_can_order_only_with_readable_fields_and_extra_field(self):
     assert_valid_JSON_response(
         self.get(build_url(self.ISSUE_API_URL,
                            order='solver__created_at')))
     assert_valid_JSON_response(
         self.get(build_url(self.ISSUE_API_URL, order='created_at')))
     assert_http_bad_request(
         self.get(
             build_url(self.ISSUE_API_URL,
                       order='solver__manual_created_date')))
コード例 #17
0
    def test_user_can_read_all_user_data(self):
        self.logged_user.user.perms.add_perm(
            'core.issue_tracker.UserIsCore.read')
        [self.get_user_obj() for _ in range(5)]

        resp = self.get(self.USER_API_URL)
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        assert_equal(len(output), 1)
        assert_equal(output[0]['id'], self.logged_user.user.pk)
コード例 #18
0
    def test_rename_fields_should_not_be_nested(self):
        resp = self.get(self.TEST_CC_API_URL)
        assert_valid_JSON_response(resp)

        data = {
            'fooBar': 'foo bar',
            'connected': {
                'fiz_baz': 'test object property content'
            }
        }
        assert_equal(data, self.deserialize(resp))
コード例 #19
0
    def test_update_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        pk = self.get_pk(resp)
        data['email'] = 'updated_%s' % data['email']
        resp = self.put('%s%s/' % (self.USER_API_URL, pk), data=data)
        assert_valid_JSON_response(resp)
        assert_equal(self.deserialize(resp).get('email'), data['email'])

        resp = self.get(self.USER_API_URL)
        assert_equal(len(self.deserialize(resp)), 1)
コード例 #20
0
    def test_update_error_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)
        pk = self.get_pk(resp)

        assert_valid_JSON_response(self.put('{}{}/'.format(self.USER_API_URL, pk),
                                            data={'email': '*****@*****.**'}))

        assert_http_bad_request(
            self.put('{}{}/'.format(self.USER_API_URL, pk), data={'email': 'invalid_email'})
        )

        assert_http_not_found(self.put('{}{}/'.format(self.USER_API_URL, 0), data={}))
コード例 #21
0
    def test_should_return_data_from_resource(self, resource_name, resource,
                                              model):
        for _ in range(self.iteration):
            inst = self.new_instance(model)

            url = resource._resource_url(inst.pk)

            if not resource(self.get_request_with_user(
                    self.r_factory.get(url))).has_get_permission(obj=inst):
                break
            resp = self.get(url)
            assert_valid_JSON_response(
                resp, 'REST get of model: %s\n response: %s' % (model, resp))
コード例 #22
0
ファイル: order.py プロジェクト: druids/django-pyston
    def test_extra_sorter(self):
        user1 = UserFactory()
        user2 = UserFactory()
        user3 = UserFactory()
        user1.watched_issues.add(*(IssueFactory() for _ in range(2)))
        user3.watched_issues.add(*(IssueFactory() for _ in range(5)))

        users_pks = {user1.pk, user2.pk, user3.pk}

        resp = self.get(build_url(self.USER_API_URL, order='watched_issues_count'))
        assert_valid_JSON_response(resp)
        assert_equal(self.get_pk_list(resp, only_pks=users_pks), [user2.pk, user1.pk, user3.pk])

        resp = self.get(build_url(self.USER_API_URL, order='-watched_issues_count'))
        assert_valid_JSON_response(resp)
        assert_equal(self.get_pk_list(resp, only_pks=users_pks), [user3.pk, user1.pk, user2.pk])
コード例 #23
0
    def test_user_headers_ordering_by_id(self):
        [self.get_user_obj() for _ in range(10)]

        headers = {'HTTP_X_ORDER': 'id'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        pk_list = [obj.get('id') for obj in output]
        assert_true(all(pk_list[i] < pk_list[i + 1] for i in range(len(pk_list) - 1)))

        headers = {'HTTP_X_ORDER': '-id'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        pk_list = [obj.get('id') for obj in output]
        assert_true(all(pk_list[i] > pk_list[i + 1] for i in range(len(pk_list) - 1)))
コード例 #24
0
    def test_user_querystring_ordering_by_id(self):
        [self.get_user_obj() for _ in range(10)]

        querystring = {'_order': 'id'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        pk_list = [obj.get('id') for obj in output]
        assert_true(all(pk_list[i] < pk_list[i + 1] for i in range(len(pk_list) - 1)))

        querystring = {'_order': '-id'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        pk_list = [obj.get('id') for obj in output]
        assert_true(all(pk_list[i] > pk_list[i + 1] for i in range(len(pk_list) - 1)))
コード例 #25
0
    def test_should_update_data_of_resource(self, resource_name, resource,
                                            model):
        for _ in range(self.iteration):
            inst_from = self.new_instance(model)

            url = resource._resource_url(inst_from.pk)

            request = self.get_request_with_user(self.r_factory.put(url))

            if not resource(request).has_put_permission(obj=inst_from):
                break

            data, _ = self.get_serialized_data(request, resource, True)
            resp = self.put(url, data=data)
            assert_valid_JSON_response(
                resp,
                'REST update of model: {}\n response: {}'.format(model, resp))
コード例 #26
0
    def test_should_return_data_from_resource_list(self, resource_name,
                                                   resource, model):
        list_url = resource._resource_list_url()

        if not resource(
                self.get_request_with_user(
                    self.r_factory.get(list_url))).has_get_permission():
            return

        resp = self.get(list_url)
        started_total_count = int(resp['X-Total'])

        for i in range(self.iteration):
            self.new_instance(model)
            resp = self.get(list_url)
            assert_valid_JSON_response(
                resp, 'REST get list of model: {}\n response: {}'.format(
                    model, resp))
            assert_equal(int(resp['X-Total']) - i, started_total_count + 1)
コード例 #27
0
    def test_extra_sorter(self):
        user1 = UserFactory()
        user2 = UserFactory()
        user3 = UserFactory()
        user1.watched_issues.add(*(IssueFactory() for _ in range(2)))
        user3.watched_issues.add(*(IssueFactory() for _ in range(5)))

        users_pks = {user1.pk, user2.pk, user3.pk}

        resp = self.get(
            build_url(self.USER_API_URL, order='watched_issues_count'))
        assert_valid_JSON_response(resp)
        assert_equal(self.get_pk_list(resp, only_pks=users_pks),
                     [user2.pk, user1.pk, user3.pk])

        resp = self.get(
            build_url(self.USER_API_URL, order='-watched_issues_count'))
        assert_valid_JSON_response(resp)
        assert_equal(self.get_pk_list(resp, only_pks=users_pks),
                     [user3.pk, user1.pk, user2.pk])
コード例 #28
0
 def test_order_by_decorator(self):
     [IssueFactory(description=str(i)) for i in range(10)]
     data = self.deserialize(
         self.get(build_url(self.ISSUE_API_URL, order='short_description')))
     assert_equal([v['short_description'] for v in data],
                  [str(i) for i in range(10)])
     data = self.deserialize(
         self.get(build_url(self.ISSUE_API_URL,
                            order='-short_description')))
     assert_equal([v['short_description'] for v in data],
                  [str(i) for i in range(10)][::-1])
     assert_valid_JSON_response(
         self.get(
             build_url(self.USER_API_URL,
                       order='solving_issue__short_description')))
     assert_valid_JSON_response(
         self.get(
             build_url(self.USER_API_URL,
                       order='-solving_issue__short_description')))
     assert_http_bad_request(
         self.get(build_url(self.ISSUE_API_URL, order='description')))
コード例 #29
0
ファイル: fields.py プロジェクト: druids/django-pyston
    def test_atomic_add_and_delete_issues_with_reverse(self, number, issue_data, user_data):
        issues_before_count = Issue.objects.all().count()

        user_data['createdIssues'] = {'add': (self.get_issue_data(), self.get_issue_data(), self.get_issue_data())}
        resp = self.post(self.USER_API_URL, data=user_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(issues_before_count + 3, Issue.objects.all().count())
        user_pk = self.get_pk(resp)

        first_issue_data = self.get_issue_data()
        first_issue_data['solver'] = {'email': '*****@*****.**', 'createdIssues': [self.get_issue_data()]}

        user_data['createdIssues'] = {'set': (first_issue_data, self.get_issue_data(), self.get_issue_data())}
        resp = self.put('%s%s/' % (self.USER_API_URL, user_pk), data=user_data)
        assert_equal(issues_before_count + 4, Issue.objects.all().count())
        assert_valid_JSON_response(resp)
        user_data['createdIssues'] = {'remove': list(Issue.objects.filter(created_by=user_pk).
                                                     values_list('pk', flat=True))}
        resp = self.put('%s%s/' % (self.USER_API_URL, self.get_pk(resp)), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count + 1, Issue.objects.all().count())

        user_data['createdIssues'] = (self.get_issue_data(), self.get_issue_data(), self.get_issue_data())
        resp = self.put('%s%s/' % (self.USER_API_URL, user_pk), data=user_data)
        assert_equal(issues_before_count + 4, Issue.objects.all().count())
        assert_valid_JSON_response(resp)
コード例 #30
0
    def test_user_filtering_by_id(self):
        users = [self.get_user_obj() for _ in range(10)]

        resp = self.get('%s?id=%s' % (self.USER_API_URL, users[0].pk))
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        assert_true(len(output), 1)
        assert_true(output[0]['id'], 1)

        resp = self.get('%s?id__lt=%s' % (self.USER_API_URL, users[2].pk))
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        assert_true(len(output), 2)

        resp = self.get('%s?id__lte=%s' % (self.USER_API_URL, users[2].pk))
        assert_valid_JSON_response(resp)
        output = self.deserialize(resp)
        assert_true(len(output), 3)
コード例 #31
0
    def test_atomic_add_and_delete_issues_with_reverse(self, number,
                                                       issue_data, user_data):
        issues_before_count = Issue.objects.all().count()

        user_data['createdIssues'] = {
            'add': (self.get_issue_data(), self.get_issue_data(),
                    self.get_issue_data())
        }
        resp = self.post(self.USER_API_URL, data=user_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(issues_before_count + 3, Issue.objects.all().count())
        user_pk = self.get_pk(resp)

        first_issue_data = self.get_issue_data()
        first_issue_data['solver'] = {
            'email': '*****@*****.**',
            'createdIssues': [self.get_issue_data()]
        }

        user_data['createdIssues'] = {
            'set':
            (first_issue_data, self.get_issue_data(), self.get_issue_data())
        }
        resp = self.put('%s%s/' % (self.USER_API_URL, user_pk), data=user_data)
        assert_equal(issues_before_count + 4, Issue.objects.all().count())
        assert_valid_JSON_response(resp)
        user_data['createdIssues'] = {
            'remove':
            list(
                Issue.objects.filter(created_by=user_pk).values_list(
                    'pk', flat=True))
        }
        resp = self.put('%s%s/' % (self.USER_API_URL, self.get_pk(resp)),
                        data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count + 1, Issue.objects.all().count())

        user_data['createdIssues'] = (self.get_issue_data(),
                                      self.get_issue_data(),
                                      self.get_issue_data())
        resp = self.put('%s%s/' % (self.USER_API_URL, user_pk), data=user_data)
        assert_equal(issues_before_count + 4, Issue.objects.all().count())
        assert_valid_JSON_response(resp)
コード例 #32
0
ファイル: fields.py プロジェクト: druids/django-pyston
    def test_create_issue_via_user_one_to_one(self, number, issue_data, user_data):
        issues_before_count = Issue.objects.all().count()
        issue_data['created_by'] = self.get_user_data()
        user_data['leading_issue'] = issue_data
        resp = self.post(self.USER_API_URL, data=user_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(issues_before_count + 1, Issue.objects.all().count())

        pk = self.get_pk(resp)
        user_data = {'leading_issue': None}
        resp = self.patch('%s%s/' % (self.USER_API_URL, pk), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count, Issue.objects.all().count())

        user_data = {'leading_issue': None}
        resp = self.patch('%s%s/' % (self.USER_API_URL, pk), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count, Issue.objects.all().count())

        user_data = {'leading_issue': self.get_issue_data()}
        resp = self.patch('%s%s/' % (self.USER_API_URL, pk), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count + 1, Issue.objects.all().count())
コード例 #33
0
    def test_create_issue_via_user_one_to_one(self, number, issue_data,
                                              user_data):
        issues_before_count = Issue.objects.all().count()
        issue_data['created_by'] = self.get_user_data()
        user_data['leading_issue'] = issue_data
        resp = self.post(self.USER_API_URL, data=user_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(issues_before_count + 1, Issue.objects.all().count())

        pk = self.get_pk(resp)
        user_data = {'leading_issue': None}
        resp = self.patch('%s%s/' % (self.USER_API_URL, pk), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count, Issue.objects.all().count())

        user_data = {'leading_issue': None}
        resp = self.patch('%s%s/' % (self.USER_API_URL, pk), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count, Issue.objects.all().count())

        user_data = {'leading_issue': self.get_issue_data()}
        resp = self.patch('%s%s/' % (self.USER_API_URL, pk), data=user_data)
        assert_valid_JSON_response(resp)
        assert_equal(issues_before_count + 1, Issue.objects.all().count())
コード例 #34
0
 def test_superuser_can_add_update_user(self):
     user = self.get_user_obj()
     resp = self.put('%s%s/' % (self.USER_API_URL, user.pk), data={})
     assert_valid_JSON_response(resp)
コード例 #35
0
 def test_should_return_data_for_get(self):
     resp = self.get(self.EXTRA_API_URL)
     assert_valid_JSON_response(resp)
コード例 #36
0
ファイル: filter.py プロジェクト: rubickcz/django-pyston
 def test_override_extra_filter_fields(self):
     assert_http_bad_request(self.get(build_url(self.USER_API_URL, filter='created_at__gt="1.1.1980"')))
     assert_valid_JSON_response(
         self.get(build_url(self.USER_API_URL, filter='email contains "*****@*****.**"'))
     )
コード例 #37
0
ファイル: order.py プロジェクト: druids/django-pyston
 def test_override_extra_order_fields(self):
     assert_http_bad_request(self.get(build_url(self.USER_API_URL, order='created_at')))
     assert_valid_JSON_response(
         self.get(build_url(self.USER_API_URL, order='email,-solving_issue__short_description'))
     )