Exemple #1
0
    def test_view_json(self):
        expected_count = Employee.objects.count()

        form = QueryForm(self.request, {'view_json': [{'concept': 1}]})
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.record_count, expected_count)
Exemple #2
0
    def test_warn_on_bad_reverse_setting(self):
        initial_warning_count = len(self.mock_handler.messages["warning"])

        form = QueryForm(self.request, {"usernames_or_emails": ""})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 0)
        self.assertEqual(len(self.mock_handler.messages["warning"]), initial_warning_count + 1)
Exemple #3
0
 def test_session(self):
     form = QueryForm(self.request, {})
     self.assertTrue(form.is_valid())
     form.save()
     self.assertEqual(form.instance.user, None)
     self.assertEqual(form.instance.session_key,
                      self.request.session.session_key)
Exemple #4
0
    def test_clean_user_email_logging(self):
        """
        We override the SERRANO_QUERY_REVERSE_NAME setting here to avoid the
        setting not found warning in the forms code. This code counts the log
        warnings so we need to avoid triggering unnecessary warnings.
        """
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        initial_warning_count = len(self.mock_handler.messages['warning'])

        form = QueryForm(self.request, {'usernames_or_emails': ""})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 0)
        self.assertEqual(len(self.mock_handler.messages['warning']),
                         initial_warning_count)

        initial_warning_count = len(self.mock_handler.messages['warning'])

        form = QueryForm(self.request, {'usernames_or_emails': 'user_1, \
            [email protected], ~~invalid_username~~, ~~invalid@email~~'})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 2)
        self.assertEqual(len(self.mock_handler.messages['warning']),
                         initial_warning_count + 2)
Exemple #5
0
 def test_both_json(self):
     form = QueryForm(self.request, {
         'context_json': {
             'field': 'tests.title.salary', 'operator': 'gt',
             'value': '1000'},
         'view_json': [{'concept': 1}]})
     self.assertTrue(form.is_valid())
Exemple #6
0
 def test_session(self):
     form = QueryForm(self.request, {})
     self.assertTrue(form.is_valid())
     form.save()
     self.assertEqual(form.instance.user, None)
     self.assertEqual(form.instance.session_key,
                      self.request.session.session_key)
Exemple #7
0
    def test_view_json(self):
        expected_count = Employee.objects.count()

        form = QueryForm(self.request, {"view_json": [{"concept": 1}]})
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.record_count, expected_count)
Exemple #8
0
    def test_warn_on_bad_reverse_setting(self):
        initial_warning_count = len(self.mock_handler.messages['warning'])

        form = QueryForm(self.request, {'usernames_or_emails': ""})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 0)
        self.assertEqual(len(self.mock_handler.messages['warning']),
                         initial_warning_count + 1)
Exemple #9
0
    def test_view_json(self):
        form = QueryForm(self.request, {
            'view_json': [{
                'concept': self.c.pk
            }],
        })

        self.assertTrue(form.is_valid())
Exemple #10
0
    def test_user(self):
        user = User.objects.create_user(username='******', password='******')
        self.request.user = user

        form = QueryForm(self.request, {})
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.user, user)
        self.assertEqual(instance.session_key, None)
Exemple #11
0
    def test_context_json(self):
        expected_count = \
            Employee.objects.filter(title__salary__gt=1000).count()

        form = QueryForm(self.request, {'context_json': {
            'field': 'tests.title.salary', 'operator': 'gt', 'value': '1000'}})
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.distinct_count, expected_count)
Exemple #12
0
    def test_force_count(self):
        expected_count = Employee.objects.distinct().count()

        form = QueryForm(self.request, {}, force_count=True)
        self.assertTrue(form.is_valid())

        instance = form.save()
        self.assertEqual(instance.distinct_count, expected_count)
        self.assertEqual(instance.record_count, expected_count)
Exemple #13
0
    def test_force_count(self):
        expected_count = Employee.objects.distinct().count()

        form = QueryForm(self.request, {}, force_count=True)
        self.assertTrue(form.is_valid())

        instance = form.save()
        self.assertEqual(instance.distinct_count, expected_count)
        self.assertEqual(instance.record_count, expected_count)
Exemple #14
0
    def test_context_json(self):
        expected_count = Employee.objects.filter(title__salary__gt=1000).count()

        form = QueryForm(
            self.request, {"context_json": {"field": "tests.title.salary", "operator": "gt", "value": "1000"}}
        )
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.distinct_count, expected_count)
Exemple #15
0
    def test_user(self):
        user = User.objects.create_user(username='******', password='******')
        self.request.user = user

        form = QueryForm(self.request, {})
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.user, user)
        self.assertEqual(instance.session_key, None)
Exemple #16
0
 def test_context_json(self):
     form = QueryForm(
         self.request, {
             'context_json': {
                 'field': 'tests.title.salary',
                 'operator': 'gt',
                 'value': '1000'
             }
         })
     self.assertTrue(form.is_valid())
Exemple #17
0
    def test_user(self):
        user = User.objects.create_user(username="******", password="******")
        self.request.user = user

        form = QueryForm(self.request, {})
        self.assertTrue(form.is_valid())
        self.assertFalse(form.count_needs_update_context)
        self.assertFalse(form.count_needs_update_view)
        instance = form.save()
        self.assertEqual(instance.user, user)
        self.assertEqual(instance.session_key, None)
Exemple #18
0
 def test_both_json(self):
     form = QueryForm(
         self.request, {
             'context_json': {
                 'field': 'tests.title.salary',
                 'operator': 'gt',
                 'value': '1000'
             },
             'view_json': [{
                 'concept': self.c.pk
             }]
         })
     self.assertTrue(form.is_valid())
Exemple #19
0
    def test_with_user(self):
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        form = QueryForm(self.request, {'usernames_or_emails': 'user_1'})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ['*****@*****.**'])
Exemple #20
0
    def test_with_user(self):
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        form = QueryForm(self.request, {'usernames_or_emails': 'user_1'})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ['*****@*****.**'])
Exemple #21
0
    def post(self, request):
        form = QueryForm(request, request.data)

        if form.is_valid():
            instance = form.save()
            usage.log('create', instance=instance, request=request)
            response = self.render(request, self.prepare(request, instance),
                                   status=codes.created)
        else:
            data = {
                'message': 'Error creating query',
                'errors': dict(form.errors),
            }
            response = self.render(request, data,
                                   status=codes.unprocessable_entity)
        return response
Exemple #22
0
    def put(self, request, **kwargs):
        instance = self.get_object(request, **kwargs)

        form = QueryForm(request, request.data, instance=instance)

        if form.is_valid():
            instance = form.save()
            usage.log('update', instance=instance, request=request)
            response = self.render(request, self.prepare(request, instance))
        else:
            data = {
                'message': 'Cannot update query',
                'errors': dict(form.errors),
            }
            response = self.render(request, data,
                                   status=codes.unprocessable_entity)
        return response
Exemple #23
0
    def test_with_user(self):
        user = User.objects.create_user(username="******", email="*****@*****.**")
        user.save()

        form = QueryForm(self.request, {"usernames_or_emails": "user_1"})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(5)

        # Make sure the email was sent
        self.assertEqual(len(mail.outbox), 1)

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ["*****@*****.**"])
Exemple #24
0
    def post(self, request):
        form = QueryForm(request, request.data)

        if form.is_valid():
            instance = form.save()
            usage.log('create', instance=instance, request=request)
            response = self.render(request,
                                   self.prepare(request, instance),
                                   status=codes.created)
        else:
            data = {
                'message': 'Error creating query',
                'errors': dict(form.errors),
            }
            response = self.render(request,
                                   data,
                                   status=codes.unprocessable_entity)
        return response
Exemple #25
0
    def put(self, request, **kwargs):
        instance = self.get_object(request, **kwargs)

        form = QueryForm(request, request.data, instance=instance)

        if form.is_valid():
            instance = form.save()
            usage.log('update', instance=instance, request=request)
            response = self.render(request, self.prepare(request, instance))
        else:
            data = {
                'message': 'Cannot update query',
                'errors': dict(form.errors),
            }
            response = self.render(request,
                                   data,
                                   status=codes.unprocessable_entity)
        return response
Exemple #26
0
    def test_no_commit(self):
        previous_user_count = User.objects.count()

        form = QueryForm(self.request, {"usernames_or_emails": "*****@*****.**"})
        instance = form.save(commit=False)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(5)

        # The instance should not be saved and shared_users should be
        # inaccessible on the model instance because the commit flag was False.
        self.assertIsNone(instance.pk)
        self.assertRaises(ValueError, lambda: instance.shared_users)

        # Make sure no users were created and no email was sent
        self.assertEqual(previous_user_count, User.objects.count())
        self.assertEqual(len(mail.outbox), 0)
Exemple #27
0
    def test_with_mixed(self):
        user = User.objects.create_user(username="******", email="*****@*****.**")
        user.save()

        previous_user_count = User.objects.count()

        form = QueryForm(
            self.request,
            {
                "usernames_or_emails": "user_1, \
            [email protected], invalid+=email@fake@domain@com, "
            },
        )
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 2)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(5)

        # Make sure the user was created
        self.assertEqual(previous_user_count + 1, User.objects.count())

        # Make sure the mail was sent
        self.assertEqual(len(mail.outbox), 1)

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ["*****@*****.**", "*****@*****.**"])

        # Remove a user from the list
        previous_user_count = User.objects.count()
        form = QueryForm(self.request, {"usernames_or_emails": "user_1"}, instance=instance)
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(5)

        # Make sure the user count is unaffected
        self.assertEqual(previous_user_count, User.objects.count())

        # Make sure no email was generated as a result
        self.assertEqual(len(mail.outbox), 1)
Exemple #28
0
    def test_with_email(self):
        previous_user_count = User.objects.count()

        form = QueryForm(self.request, {
            'usernames_or_emails': '*****@*****.**',
        })

        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the user was created
        self.assertEqual(previous_user_count + 1, User.objects.count())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ['*****@*****.**'])
Exemple #29
0
    def test_no_commit(self):
        previous_user_count = User.objects.count()

        form = QueryForm(self.request,
                         {'usernames_or_emails': '*****@*****.**'})
        instance = form.save(commit=False)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(1)

        # The instance should not be saved and shared_users should be
        # inaccessible on the model instance because the commit flag was False.
        self.assertIsNone(instance.pk)
        self.assertRaises(ValueError, lambda: instance.shared_users)

        # Make sure no users were created and no email was sent
        self.assertEqual(previous_user_count, User.objects.count())
        self.assertEqual(len(mail.outbox), 0)
Exemple #30
0
    def test_with_email(self):
        previous_user_count = User.objects.count()

        form = QueryForm(self.request, {
            'usernames_or_emails': '*****@*****.**',
        })

        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the user was created
        self.assertEqual(previous_user_count + 1, User.objects.count())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ['*****@*****.**'])
Exemple #31
0
    def test_with_email(self):
        previous_user_count = User.objects.count()
        previous_mail_count = len(mail.outbox)

        form = QueryForm(self.request, {"usernames_or_emails": "*****@*****.**"})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(5)

        # Make sure the user was created
        self.assertEqual(previous_user_count + 1, User.objects.count())

        # Make sure the mail was sent
        self.assertEqual(previous_mail_count + 1, len(mail.outbox))

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ["*****@*****.**"])
Exemple #32
0
    def test_message(self):
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        message = u'ĘƞĵôƔ ťƕîš ǫųęŕƳ'
        form = QueryForm(self.request, {'usernames_or_emails': 'user_1',
                                        'message': message})

        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ['*****@*****.**'])

        # Make sure the custom message is included in the body
        self.assertRegexpMatches(mail.outbox[0].body, message)
Exemple #33
0
    def test_clean_user_email_logging(self):
        """
        We override the SERRANO_QUERY_REVERSE_NAME setting here to avoid the
        setting not found warning in the forms code. This code counts the log
        warnings so we need to avoid triggering unnecessary warnings.
        """
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        initial_warning_count = len(self.mock_handler.messages['warning'])

        form = QueryForm(self.request, {'usernames_or_emails': ""})
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 0)
        self.assertEqual(len(self.mock_handler.messages['warning']),
                         initial_warning_count)

        initial_warning_count = len(self.mock_handler.messages['warning'])

        form = QueryForm(
            self.request, {
                'usernames_or_emails':
                'user_1, \
            [email protected], ~~invalid_username~~, ~~invalid@email~~'
            })
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 2)
        self.assertEqual(len(self.mock_handler.messages['warning']),
                         initial_warning_count + 2)
Exemple #34
0
    def test_message(self):
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        message = u'ĘƞĵôƔ ťƕîš ǫųęŕƳ'
        form = QueryForm(self.request, {
            'usernames_or_emails': 'user_1',
            'message': message
        })

        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to, ['*****@*****.**'])

        # Make sure the custom message is included in the body
        self.assertRegexpMatches(mail.outbox[0].body, message)
Exemple #35
0
    def test_with_mixed(self):
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**')
        user.save()

        previous_user_count = User.objects.count()

        form = QueryForm(
            self.request, {
                'usernames_or_emails':
                'user_1, \
            [email protected], invalid+=email@fake@domain@com, '
            })
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 2)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        self.assertTrue(wait_mail_sent())

        # Make sure the user was created
        self.assertEqual(previous_user_count + 1, User.objects.count())

        # Make sure the recipient list is correct
        self.assertSequenceEqual(mail.outbox[0].to,
                                 ['*****@*****.**', '*****@*****.**'])

        # Remove a user from the list
        previous_user_count = User.objects.count()
        form = QueryForm(self.request, {'usernames_or_emails': 'user_1'},
                         instance=instance)
        instance = form.save()
        self.assertEqual(instance.shared_users.count(), 1)

        # Since save sends email asynchronously, wait for a while for the mail
        # to go through.
        time.sleep(1)

        # Make sure the user count is unaffected
        self.assertEqual(previous_user_count, User.objects.count())

        # Make sure no email was generated as a result
        self.assertEqual(len(mail.outbox), 1)
Exemple #36
0
 def test_view_json(self):
     form = QueryForm(self.request, {'view_json': [{'concept': 1}]})
     self.assertTrue(form.is_valid())