Beispiel #1
0
    def test_atomic_add_and_delete_issue_with_watchers(self, number,
                                                       issue_data, user_data):
        issue_data['created_by'] = user_data
        issue_data['watched_by'] = {'add': self.get_users_data(flat=True)}
        resp = self.post(self.ISSUE_API_URL, data=issue_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(len(self.deserialize(resp).get('watched_by')), 10)

        pk = self.get_pk(resp)
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        issue_data['watched_by'] = {
            'add':
            self.get_users_data(flat=True),
            'remove': [
                obj.get('id')
                for obj in self.deserialize(resp).get('watched_by')
            ][:5]
        }
        resp = self.put('%s%s/' % (self.ISSUE_API_URL, pk), data=issue_data)
        assert_equal(len(self.deserialize(resp).get('watched_by')), 15)

        issue_data['watched_by'] = self.get_users_data(flat=True)
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        resp = self.put('%s%s/' % (self.ISSUE_API_URL, pk), data=issue_data)
        assert_equal(len(self.deserialize(resp).get('watched_by')), 10)
 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)))
    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={}))
Beispiel #4
0
    def test_atomic_add_issues_by_m2m_reverse(self, number, issue_data,
                                              user_data):
        user_data['watchedIssues'] = {
            '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)
        watched_issues = self.deserialize(resp)['watchedIssues']
        assert_equal(len(watched_issues), 3)
        assert_equal(Issue.objects.all().count(), 3)
        watched_issues_ids = [
            watched_issue['id'] for watched_issue in watched_issues
        ]

        for issue in Issue.objects.all():
            assert_equal(
                list(issue.watched_by.values_list('email', flat=True)),
                [user_data['email']])

        user_data2 = self.get_user_data()
        user_data2['watchedIssues'] = watched_issues_ids
        resp = self.post(self.USER_API_URL, data=user_data2)
        assert_valid_JSON_created_response(resp)
        watched_issues = self.deserialize(resp)['watchedIssues']
        assert_equal(len(watched_issues), 3)
        assert_equal(Issue.objects.all().count(), 3)
        for issue in Issue.objects.all():
            assert_equal(
                list(issue.watched_by.values_list('email', flat=True)),
                [user_data['email'], user_data2['email']])
Beispiel #5
0
    def test_reverse_with_defined_field_created_issues_renamed(self, number, issue_data, user_data):
        issues_before_count = Issue.objects.all().count()
        user_data['created_issues_renamed'] = (self.get_issue_data(), self.get_issue_data(), self.get_issue_data())
        resp = self.post(self.USER_WITH_FORM_API_URL, data=user_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(issues_before_count + 3, Issue.objects.all().count())
Beispiel #6
0
 def test_atomic_set_issue_with_user_reverse(self, number, issue_data,
                                             user_data):
     issues_before_count = Issue.objects.all().count()
     user_data['createdIssues'] = {'set': (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())
Beispiel #7
0
 def test_create_issue_via_user_one_to_one_renamed(self, number, issue_data,
                                                   user_data):
     issues_before_count = Issue.objects.all().count()
     user_data['leading_issue_renamed'] = self.get_issue_data()
     resp = self.post(self.USER_WITH_FORM_API_URL, data=user_data)
     assert_valid_JSON_created_response(resp)
     assert_equal(issues_before_count + 1, Issue.objects.all().count())
Beispiel #8
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)
    def test_read_user_general_fields_set_with_metaclass(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        resp = self.get(self.USER_API_URL)
        output_data = self.deserialize(resp)
        assert_equal(set(output_data[0].keys()), {'id', '_obj_name', 'email', 'firstName', 'lastName',
                                                  'watchedIssues', 'manualCreatedDate', 'watchedIssuesCount'})
    def test_read_extra_field_header_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        headers = {'HTTP_X_FIELDS': 'email'}
        resp = self.get(self.USER_API_URL, headers=headers)
        for item_data in self.deserialize(resp):
            assert_equal(set(item_data.keys()), {'email'})
Beispiel #11
0
    def test_atomic_add_and_delete_issues_with_auto_reverse_fields_turned_off(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, Issue.objects.all().count())
Beispiel #12
0
    def test_create_user_via_renamed_field(self, number, issue_data, user_data):
        users_before_count = User.objects.all().count()
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        resp = self.post(self.ISSUE_WITH_FORM_API_URL, data=issue_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(users_before_count + 2, User.objects.all().count())
Beispiel #13
0
    def test_create_user_via_renamed_field(self, number, issue_data,
                                           user_data):
        users_before_count = User.objects.all().count()
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        resp = self.post(self.ISSUE_WITH_FORM_API_URL, data=issue_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(users_before_count + 2, User.objects.all().count())
Beispiel #14
0
 def test_filename_and_content_type_can_be_evaluated_from_file_content(self, number, data):
     data['contract'] = {
         'content': base64.b64encode(
             ('Contract of %s code: šří+áýšé' % data['email']).encode('utf-8')
         ).decode('utf-8')
     }
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_in('.txt', self.deserialize(resp)['contract']['filename'])
    def test_read_user_extra_fields_set_with_metaclass(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        headers = {'HTTP_X_FIELDS': 'is_superuser'}
        resp = self.get(self.USER_API_URL, headers=headers)

        output_data = self.deserialize(resp)
        assert_equal(set(output_data[0].keys()), {'isSuperuser'})
Beispiel #16
0
    def test_create_issue_should_tags_be_parsed_as_a_list(self):
        issue_data = self.get_issue_data()
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        issue_data['tags_list'] = ['taga', 'tagb']
        resp = self.post(self.ISSUE_WITH_FORM_API_URL, data=issue_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(Issue.objects.last().tags, 'taga|tagb')
    def test_read_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        pk = self.get_pk(resp)
        resp = self.get('%s%s/' % (self.USER_API_URL, pk),)
        output_data = self.deserialize(resp)
        assert_equal(output_data.get('email'), data.get('email'))
        assert_equal(output_data.get('id'), pk)
Beispiel #18
0
    def test_create_issue_should_tags_be_parsed_as_a_list(self):
        issue_data = self.get_issue_data()
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        issue_data['tags_list'] = ['taga', 'tagb']
        resp = self.post(self.ISSUE_WITH_FORM_API_URL, data=issue_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(Issue.objects.last().tags, 'taga|tagb')
Beispiel #19
0
    def test_create_user_with_file_url(self, number, data):
        resp = self.get_file_url_response(data)

        assert_valid_JSON_created_response(resp)
        data = self.deserialize(resp)

        assert_not_equal(data['contract'], None)
        assert_in('filename', data['contract'])
        assert_in('url', data['contract'])
        assert_equal(data['contract']['content_type'], 'application/pdf')
Beispiel #20
0
 def test_filename_and_content_type_can_be_evaluated_from_file_content(
         self, number, data):
     data['contract'] = {
         'content':
         base64.b64encode(('Contract of %s code: šří+áýšé' %
                           data['email']).encode('utf-8')).decode('utf-8')
     }
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_in('.txt', self.deserialize(resp)['contract']['filename'])
Beispiel #21
0
    def test_reverse_with_defined_field_created_issues_renamed(
            self, number, issue_data, user_data):
        issues_before_count = Issue.objects.all().count()
        user_data['created_issues_renamed'] = (self.get_issue_data(),
                                               self.get_issue_data(),
                                               self.get_issue_data())
        resp = self.post(self.USER_WITH_FORM_API_URL, data=user_data)

        assert_valid_JSON_created_response(resp)
        assert_equal(issues_before_count + 3, Issue.objects.all().count())
    def test_read_user_detailed_fields_set_with_metaclass(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        pk = self.get_pk(resp)
        resp = self.get('%s%s/' % (self.USER_API_URL, pk),)
        output_data = self.deserialize(resp)
        assert_equal(set(output_data.keys()), {'id', 'createdAt', '_obj_name', 'email', 'contract',
                                               'solvingIssue', 'firstName', 'lastName', 'watchedIssues',
                                               'manualCreatedDate'})
Beispiel #23
0
    def test_create_user_with_file_url(self, number, data):
        resp = self.get_file_url_response(data)

        assert_valid_JSON_created_response(resp)
        data = self.deserialize(resp)

        assert_not_equal(data['contract'], None)
        assert_in('filename', data['contract'])
        assert_in('url', data['contract'])
        assert_equal(data['contract']['content_type'], 'application/pdf')
Beispiel #24
0
 def test_atomic_update_issue_with_user(self, number, data):
     users_before_count = User.objects.all().count()
     resp = self.post(self.ISSUE_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_equal(users_before_count + 2, User.objects.all().count())
     data['created_by'] = self.get_user_data()
     data['created_by']['id'] = self.deserialize(resp)['created_by']['id']
     data['leader'] = self.get_user_data()
     resp = self.post(self.ISSUE_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_equal(users_before_count + 3, User.objects.all().count())
Beispiel #25
0
 def test_atomic_update_issue_with_user(self, number, data):
     users_before_count = User.objects.all().count()
     resp = self.post(self.ISSUE_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_equal(users_before_count + 2, User.objects.all().count())
     data['created_by'] = self.get_user_data()
     data['created_by']['id'] = self.deserialize(resp)['created_by']['id']
     data['leader'] = self.get_user_data()
     resp = self.post(self.ISSUE_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_equal(users_before_count + 3, User.objects.all().count())
Beispiel #26
0
    def test_atomic_add_and_delete_issues_with_auto_reverse_fields_turned_off(
            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, Issue.objects.all().count())
    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)
 def test_read_user_with_more_headers_accept_types(self, number, data):
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     pk = self.get_pk(resp)
     for accept_type in self.ACCEPT_TYPES:
         resp = self.get(self.USER_API_URL, headers={'HTTP_ACCEPT': accept_type})
         assert_in(accept_type, resp['Content-Type'])
         resp = self.get('%s%s/' % (self.USER_API_URL, pk), headers={'HTTP_ACCEPT': accept_type})
         assert_true(accept_type in resp['Content-Type'])
         resp = self.get('%s1050/' % self.USER_API_URL, headers={'HTTP_ACCEPT': accept_type})
         assert_true(accept_type in resp['Content-Type'])
         assert_http_not_found(resp)
    def test_not_allowed_requests(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)
        pk = self.get_pk(resp)

        resp = self.post('%s%s/' % (self.USER_API_URL, pk), data=data)
        assert_http_method_not_allowed(resp)

        resp = self.delete(self.USER_API_URL)
        assert_http_method_not_allowed(resp)

        resp = self.put(self.USER_API_URL, data=data)
        assert_http_method_not_allowed(resp)
    def test_delete_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        pk = self.get_pk(resp)
        resp = self.delete('%s%s/' % (self.USER_API_URL, pk))
        assert_http_accepted(resp)

        resp = self.get(self.USER_API_URL)
        assert_equal(len(self.deserialize(resp)), 0)

        resp = self.delete('%s%s/' % (self.USER_API_URL, pk))
        assert_http_not_found(resp)
    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={}))
    def test_read_field_header_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        pk = self.get_pk(resp)
        headers = {'HTTP_X_FIELDS': 'email,id'}
        resp = self.get('%s%s/' % (self.USER_API_URL, pk), headers=headers)
        output_data = self.deserialize(resp)
        assert_equal(set(output_data.keys()), {'email', 'id'})

        resp = self.get(self.USER_API_URL, headers=headers)
        assert_equal(int(resp['X-Total']), 1)
        for item_data in self.deserialize(resp):
            assert_equal(set(item_data.keys()), {'email', 'id'})
Beispiel #33
0
 def test_create_user_with_file_and_not_defined_content_type(self, number, data):
     data['contract'] = {
         'filename': 'contract.txt',
         'content': base64.b64encode(
             ('Contract of %s code: šří+áýšé' % data['email']).encode('utf-8')
         ).decode('utf-8')
     }
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     data = self.deserialize(resp)
     assert_not_equal(data['contract'], None)
     assert_in('filename', data['contract'])
     assert_in('url', data['contract'])
     assert_equal(data['contract']['content_type'], 'text/plain')
Beispiel #34
0
    def test_issue_can_be_created_only_via_user(self):
        before_issue_count = Issue.objects.count()

        user_data = self.get_user_data()
        issue_data = self.get_issue_data(exclude=['leader'])
        user_data['leading_issue'] = issue_data

        resp = self.post(self.USER_API_URL, data=user_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(Issue.objects.count(), before_issue_count + 1)

        resp = self.post(self.ISSUE_API_URL, data=self.get_issue_data())
        assert_http_forbidden(resp)
        assert_equal(Issue.objects.count(), before_issue_count + 1)
Beispiel #35
0
    def test_atomic_set_issue_with_watchers(self, number, issue_data, user_data):
        users_before_count = User.objects.all().count()

        issue_data['created_by'] = user_data
        issue_data['watched_by'] = self.get_users_data(flat=True)
        resp = self.post(self.ISSUE_API_URL, data=issue_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(users_before_count + 12, User.objects.all().count())

        issue_data['leader'] = self.get_user_data()
        issue_data['created_by'] = self.get_user_data()
        issue_data['watched_by'] = {'set': self.get_users_data(flat=True)}

        resp = self.post(self.ISSUE_API_URL, data=issue_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(users_before_count + 24, User.objects.all().count())
Beispiel #36
0
 def test_create_user_with_file_and_not_defined_content_type(
         self, number, data):
     data['contract'] = {
         'filename':
         'contract.txt',
         'content':
         base64.b64encode(('Contract of %s code: šří+áýšé' %
                           data['email']).encode('utf-8')).decode('utf-8')
     }
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     data = self.deserialize(resp)
     assert_not_equal(data['contract'], None)
     assert_in('filename', data['contract'])
     assert_in('url', data['contract'])
     assert_equal(data['contract']['content_type'], 'text/plain')
Beispiel #37
0
    def test_atomic_set_issue_with_watchers(self, number, issue_data,
                                            user_data):
        users_before_count = User.objects.all().count()

        issue_data['created_by'] = user_data
        issue_data['watched_by'] = self.get_users_data(flat=True)
        resp = self.post(self.ISSUE_API_URL, data=issue_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(users_before_count + 12, User.objects.all().count())

        issue_data['leader'] = self.get_user_data()
        issue_data['created_by'] = self.get_user_data()
        issue_data['watched_by'] = {'set': self.get_users_data(flat=True)}

        resp = self.post(self.ISSUE_API_URL, data=issue_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(users_before_count + 24, User.objects.all().count())
Beispiel #38
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)
    def test_should_create_data_of_resource(self, resource_name, resource,
                                            model):
        for _ in range(self.iteration):
            list_url = resource._resource_list_url()

            request = self.get_request_with_user(self.r_factory.post(list_url))
            if not resource(request).has_post_permission():
                break

            data, inst = self.get_serialized_data(request, resource)

            count_before = model._default_manager.all().count()

            resp = self.post(list_url, data=data)

            count_after = model._default_manager.all().count()
            assert_valid_JSON_created_response(
                resp,
                'REST create of model: {}\n response: {}'.format(model, resp))
            assert_equal(count_before + 1, count_after)
Beispiel #40
0
    def test_atomic_add_and_delete_issue_with_watchers(self, number, issue_data, user_data):
        issue_data['created_by'] = user_data
        issue_data['watched_by'] = {'add': self.get_users_data(flat=True)}
        resp = self.post(self.ISSUE_API_URL, data=issue_data)
        assert_valid_JSON_created_response(resp)
        assert_equal(len(self.deserialize(resp).get('watched_by')), 10)

        pk = self.get_pk(resp)
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        issue_data['watched_by'] = {'add': self.get_users_data(flat=True),
                                    'remove': [obj.get('id') for obj in self.deserialize(resp).get('watched_by')][:5]}
        resp = self.put('%s%s/' % (self.ISSUE_API_URL, pk), data=issue_data)
        assert_equal(len(self.deserialize(resp).get('watched_by')), 15)

        issue_data['watched_by'] = self.get_users_data(flat=True)
        issue_data['created_by'] = self.get_user_data()
        issue_data['leader'] = self.get_user_data()
        resp = self.put('%s%s/' % (self.ISSUE_API_URL, pk), data=issue_data)
        assert_equal(len(self.deserialize(resp).get('watched_by')), 10)
Beispiel #41
0
    def test_atomic_add_issues_by_m2m_reverse(self, number, issue_data, user_data):
        user_data['watchedIssues'] = {'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)
        watched_issues = self.deserialize(resp)['watchedIssues']
        assert_equal(len(watched_issues), 3)
        assert_equal(Issue.objects.all().count(), 3)
        watched_issues_ids = [watched_issue['id'] for watched_issue in watched_issues]

        for issue in Issue.objects.all():
            assert_equal(list(issue.watched_by.values_list('email', flat=True)), [user_data['email']])

        user_data2 = self.get_user_data()
        user_data2['watchedIssues'] = watched_issues_ids
        resp = self.post(self.USER_API_URL, data=user_data2)
        assert_valid_JSON_created_response(resp)
        watched_issues = self.deserialize(resp)['watchedIssues']
        assert_equal(len(watched_issues), 3)
        assert_equal(Issue.objects.all().count(), 3)
        for issue in Issue.objects.all():
            assert_equal(list(issue.watched_by.values_list('email', flat=True)),
                         [user_data['email'], user_data2['email']])
Beispiel #42
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())
    def test_read_querystring_paginator_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        querystring = {'_offset': '0', '_base': '5'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_equal(len(self.deserialize(resp)), min(int(resp['x-total']), 5))

        querystring = {'_offset': '2', '_base': '5'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_equal(len(self.deserialize(resp)), min(max(int(resp['x-total']) - 2, 0), 5))

        querystring = {'_offset': '2', '_base': '-5'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_http_bad_request(resp)

        querystring = {'_offset': '-2', '_base': '5'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_http_bad_request(resp)

        querystring = {'_offset': 'error', '_base': 'error'}
        resp = self.get('%s?%s' % (self.USER_API_URL, urlencode(querystring)))
        assert_http_bad_request(resp)
    def test_read_headers_paginator_user(self, number, data):
        resp = self.post(self.USER_API_URL, data=data)
        assert_valid_JSON_created_response(resp)

        headers = {'HTTP_X_OFFSET': '0', 'HTTP_X_BASE': '5'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_equal(len(self.deserialize(resp)), min(int(resp['x-total']), 5))

        headers = {'HTTP_X_OFFSET': '2', 'HTTP_X_BASE': '5'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_equal(len(self.deserialize(resp)), min(max(int(resp['x-total']) - 2, 0), 5))

        headers = {'HTTP_X_OFFSET': '2', 'HTTP_X_BASE': '-5'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_http_bad_request(resp)

        headers = {'HTTP_X_OFFSET': '-2', 'HTTP_X_BASE': '5'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_http_bad_request(resp)

        headers = {'HTTP_X_OFFSET': 'error', 'HTTP_X_BASE': 'error'}
        resp = self.get(self.USER_API_URL, headers=headers)
        assert_http_bad_request(resp)
 def test_create_user_with_created_at(self, number, data):
     data['manualCreatedDate'] = '2017-01-20T23:30:00+01:00'
     resp = self.post(self.USER_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
 def test_camel_snake_case_transformation(self):
     data = {'barBaz': 'testing data'}
     resp = self.post(self.TEST_CC_API_URL, data=data)
     assert_valid_JSON_created_response(resp)
     assert_equal(data, self.deserialize(resp))