Exemple #1
0
    def test_edit_post(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request.method = "POST"
        request.POST = {"domain": self.domain.domain, "enabled": False}

        response = admin.domain_admin_edit(request, self.domain.pk)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response["Location"],
                         urlresolvers.reverse("admin:domains:index"))

        self.domain.refresh_from_db()
        self.assertEqual(self.domain.enabled, False)
        self.assertEqual(models.Domain.objects.count(), 1)
Exemple #2
0
    def test_cycle_session_less_than_week_left(self):
        user = factories.UserFactory()
        request = MockRequest(user)
        request.session.save(must_create=True)

        session_obj = request.session._get_session_from_db()
        session_obj.expire_date = timezone.now() + timedelta(days=3)
        session_obj.save()
        session_key = request.session.session_key
        self.middleware(request)
        self.assertNotEqual(request.session.session_key, session_key)
        user.refresh_from_db()
        self.assertNotEqual(user.last_login, None)
Exemple #3
0
    def test_choose_type_get(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        page = models.HelpBasePage.objects.filter(parent__isnull=True).get()

        response = views.choose_page_type(request, parent_pk=page.pk)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.context_data["parent_pk"], page.pk)
        self.assertEqual(response.context_data["models"], [
            models.HelpIndex._meta, models.AppPage._meta, models.HelpPage._meta
        ])

        breadcrumbs = [p for p in response.context_data["breadcrumbs"]]
        self.assertEqual(breadcrumbs, [page])
    def setUp(self):
        super().setUp()
        self.user = factories.UserFactory()

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        if not login:
            raise Exception("Could not log in")

        self.sudo_protected_url = urls.reverse("user-delete")
        self.sudo_url = urls.reverse("user-sudo")
Exemple #5
0
    def setUp(self):
        self.user = factories.UserFactory()

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        self.url = urlresolvers.reverse("user-search", kwargs={"q": "cheddär"})
        key = "%s-None-None-cheddär" % self.user.id
        self.key = urllib.parse.quote(key)

        if not login:
            raise Exception("Could not log in")
Exemple #6
0
    def test_form_good_data(self):
        params = {"username": self.user.username}
        request = MockRequest(self.user)
        form = DeleteAccountForm(request, data=params)

        self.assertTrue(form.is_valid())

        form.save()

        self.assertEqual(request.user, AnonymousUser())
        messages = list(request._messages)
        self.assertEqual(str(messages[0]),
                         "Account deleted. Thanks for using our service.")
Exemple #7
0
    def test_suspended_user(self):
        user = factories.UserFactory()
        user.inboxenprofile.receiving_emails = False
        user.inboxenprofile.save()
        request = MockRequest(user)
        request.path = "/blah/blah"

        response = self.middleware(request)
        self.assertNotEqual(response, {})
        self.assertRedirects(response,
                             "{}?next={}".format(reverse("user-returned"),
                                                 "/blah/blah"),
                             fetch_redirect_response=False)
Exemple #8
0
    def test_index(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        QuestionFactory.create_batch(
            len(models.Question.STATUS_CHOICES),
            status=factory.Iterator(
                [i[0] for i in models.Question.STATUS_CHOICES]))

        response = views.question_admin_index(request)
        self.assertEqual(response.status_code, 200)

        expected_questions = models.Question.objects.all()
        self.assertEqual(list(response.context_data["questions"]),
                         list(expected_questions))
Exemple #9
0
    def test_post_invalid(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request.method = "POST"
        request.POST = {"succeeded": None}
        request_obj = factories.RequestFactory(requester=self.user)

        response = admin.request_admin_edit(request, request_obj.pk)
        self.assertEqual(response.status_code, 200)

        request_obj.refresh_from_db()
        self.assertEqual(request_obj.succeeded, None)
        self.assertEqual(request_obj.authorizer, None)
        self.assertEqual(request_obj.date_decided, None)
Exemple #10
0
    def test_get(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request_obj = factories.RequestFactory()

        response = admin.request_admin_edit(request, request_obj.pk)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.context_data["form"].instance, request_obj)
        self.assertEqual(models.Request.objects.count(), 1)

        with self.assertRaises(Http404):
            admin.request_admin_edit(request, 0)

        self.assertEqual(models.Request.objects.count(), 1)
Exemple #11
0
    def test_child_page(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        page = models.HelpBasePage.objects.filter(parent__isnull=False).get()

        response = views.index(request, page_pk=page.pk)
        self.assertEqual(response.status_code, 200)

        expected_page = models.HelpBasePage.objects.filter(
            parent__isnull=True).get()
        self.assertEqual(response.context_data["page"], page)

        breadcrumbs = [p for p in response.context_data["breadcrumbs"]]
        self.assertEqual(breadcrumbs, [page.parent, page])
Exemple #12
0
    def setUp(self):
        self.user = factories.UserFactory()

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        self.url = urls.reverse("user-home-search", kwargs={"q": "cheddär"})
        self.key = create_search_cache_key(self.user.id, "cheddär", "home",
                                           None, None)

        if not login:
            raise Exception("Could not log in")
Exemple #13
0
    def setUp(self):
        super(HomeViewTestCase, self).setUp()
        self.user = factories.UserFactory()
        domain = factories.DomainFactory()
        self.inboxes = factories.InboxFactory.create_batch(150,
                                                           domain=domain,
                                                           user=self.user)

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        if not login:
            raise Exception("Could not log in")
Exemple #14
0
    def test_index_page_logged_in(self):
        user = factories.UserFactory()
        assert self.client.login(username=user.username,
                                 password="******",
                                 request=MockRequest(user))

        response = self.client.get(urlresolvers.reverse("index"))
        self.assertEqual(response.status_code, 200)
        self.assertNotIn("Join", str(response.content))

        with override_settings(ENABLE_REGISTRATION=False):
            response = self.client.get(urlresolvers.reverse("index"))
            self.assertEqual(response.status_code, 200)
            self.assertNotIn("Join", str(response.content))
Exemple #15
0
    def setUp(self):
        self.user = factories.UserFactory()

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))
        assert login

        self.inbox = factories.InboxFactory(user=self.user)
        self.url = urls.reverse("inbox-disown",
                                kwargs={
                                    "inbox": self.inbox.inbox,
                                    "domain": self.inbox.domain.domain
                                })
Exemple #16
0
    def setUp(self):
        """Create the client and grab the user"""
        self.user = factories.UserFactory()
        other_user = factories.UserFactory(username="******")

        for args in itertools.product([True, False],
                                      [self.user, other_user, None]):
            factories.DomainFactory(enabled=args[0], owner=args[1])

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        if not login:
            raise Exception("Could not log in")
Exemple #17
0
    def test_check_does_increase_count_if_full(self, now_mock):
        now_mock.return_value = datetime.utcnow()
        request = MockRequest()
        request.META["REMOTE_ADDR"] = "127.0.0.1"

        for i in range(self.limit_count):
            self.limiter.counter_increase(request)

        self.assertEqual(len(cache._cache), 1)
        self.assertEqual(cache.get(self.make_key(request, now_mock())), self.limit_count)

        self.limiter.counter_full(request)

        self.assertEqual(len(cache._cache), 1)
        self.assertEqual(cache.get(self.make_key(request, now_mock())), self.limit_count + 1)
Exemple #18
0
    def test_inbox_ratelimit_valid_keys(self):
        request = MockRequest(self.user)

        cache_prefix = u"hello€@.+-_ <>"

        with override_settings(INBOX_LIMIT_CACHE_PREFIX=cache_prefix), \
                warnings.catch_warnings(record=True) as w:
            self.assertEqual(inbox_ratelimit.counter_full(request), False)

            for i in range(settings.INBOX_LIMIT_COUNT + 1):
                inbox_ratelimit.counter_increase(request)

            self.assertEqual(inbox_ratelimit.counter_full(request), True)

        self.assertEqual(len(w), 0)
Exemple #19
0
    def test_edit_post_invalid_owner(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request.method = "POST"
        request.POST = {
            "domain": self.domain.domain,
            "enabled": False,
            "owner": 0
        }

        response = admin.domain_admin_edit(request, self.domain.pk)
        self.assertEqual(response.status_code, 200)
        self.domain.refresh_from_db()
        self.assertEqual(self.domain.enabled, True)
        self.assertEqual(self.domain.owner, None)
        self.assertEqual(models.Domain.objects.count(), 1)
Exemple #20
0
    def test_edit_post_blank(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request.method = "POST"
        request.POST = {}
        self.domain.owner = self.user
        self.domain.save()

        response = admin.domain_admin_edit(request, self.domain.pk)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response["Location"],
                         urls.reverse("admin:domains:index"))
        self.assertEqual(models.Domain.objects.count(), 1)

        self.domain.refresh_from_db()
        self.assertEqual(self.domain.owner, self.user)
Exemple #21
0
    def setUp(self):
        super(QuestionDetailTestCase, self).setUp()
        self.user = factories.UserFactory()
        self.other_user = factories.UserFactory(username="******")

        self.question = QuestionFactory(author=self.user,
                                        status=models.Question.NEW)
        self.page = AppPage.objects.get(app="tickets.urls")

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        if not login:
            raise Exception("Could not log in")
Exemple #22
0
    def test_urls_logged_in(self):
        urls = [
            reverse("user-registration"),
            reverse("user-status"),
            reverse("user-success"),
            reverse("user-login")
        ]

        assert self.client.login(username=self.user.username,
                                 password="******",
                                 request=MockRequest(self.user))

        for url in urls:
            response = self.client.get(url)
            self.assertEqual(response.status_code, 302)
            self.assertEqual(response["Location"], reverse("user-home"))
Exemple #23
0
    def test_has_no_preview(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        base_page = models.HelpBasePage.objects.filter(
            parent__isnull=False).get()
        ct = ContentType.objects.get(model="helppage", app_label="cms")
        page = models.HelpPage.objects.create(parent=base_page,
                                              title="FAQ",
                                              body="",
                                              content_type=ct)

        response = views.edit_page(request, page_pk=page.pk)
        self.assertEqual(response.status_code, 200)
        response.render()
        self.assertInHTML("<div class=\"panel-heading\">Preview</div>",
                          response.content.decode(),
                          count=0)
Exemple #24
0
    def setUp(self):
        self.user = factories.UserFactory()

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        self.key = create_search_cache_key(self.user.id, "cheddår",
                                           "inboxen.Inbox", None, None)
        self.url = "%s?token=%s" % (
            urls.reverse("search:api"),
            self.key,
        )

        if not login:
            raise Exception("Could not log in")
Exemple #25
0
    def setUp(self):
        super(QuestionListTestCase, self).setUp()
        self.user = factories.UserFactory()

        QuestionFactory.create_batch(75,
                                     author=self.user,
                                     status=models.Question.NEW)

        self.page = AppPage.objects.get(app="tickets.urls")

        login = self.client.login(username=self.user.username,
                                  password="******",
                                  request=MockRequest(self.user))

        if not login:
            raise Exception("Could not log in")
Exemple #26
0
    def test_create_post(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request.method = "POST"
        request.POST = {"domain": "example.com"}

        self.assertEqual(models.Domain.objects.count(), 0)

        response = admin.domain_admin_create(request)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response["Location"],
                         urlresolvers.reverse("admin:domains:index"))

        domain = models.Domain.objects.get()
        self.assertEqual(domain.owner, None)
        self.assertEqual(domain.enabled, True)
        self.assertEqual(domain.domain, "example.com")
Exemple #27
0
    def test_get_set(self):
        user = factories.UserFactory()
        request = MockRequest(user)

        # check that there is not a custom expiry set
        self.assertNotIn('_session_expiry', request.session)

        self.middleware.process_request(request)
        self.assertTrue(request.session.modified)
        self.assertIn('_session_expiry', request.session)

        # custom expiry has been set, this time the session should not be
        # modified
        request.session.modified = False
        self.middleware.process_request(request)
        self.assertFalse(request.session.modified)
        self.assertIn('_session_expiry', request.session)
Exemple #28
0
    def test_route(self):
        root_page = models.HelpBasePage.objects.get(parent__isnull=True)
        child_page = models.HelpBasePage.objects.get(parent__isnull=False)
        request = MockRequest()

        self.assertEqual(root_page.route(request, []), (root_page, [], {}))

        with self.assertRaises(Http404):
            root_page.route(request, ["notapage"])

        root_page.live = False
        root_page.save()
        with self.assertRaises(Http404):
            root_page.route(request, [])

        self.assertEqual(root_page.route(request, [child_page.slug]), (child_page.specific, (), {}))
        self.assertEqual(child_page.route(request, []), (child_page, [], {}))
Exemple #29
0
    def test_check_does_increase_count_if_full(self, now_mock):
        now_mock.return_value = datetime.utcnow()
        cache.cache.clear()
        request = MockRequest()
        request.META["REMOTE_ADDR"] = "127.0.0.1"

        for i in range(settings.REGISTER_LIMIT_COUNT):
            utils.register_counter_increase(request)

        self.assertEqual(len(cache.cache._cache), 1)
        self.assertEqual(cache.cache.get(utils.make_key(request, now_mock())),
                         settings.REGISTER_LIMIT_COUNT)

        utils.register_counter_full(request)

        self.assertEqual(len(cache.cache._cache), 1)
        self.assertEqual(cache.cache.get(utils.make_key(request, now_mock())),
                         settings.REGISTER_LIMIT_COUNT + 1)
Exemple #30
0
    def test_edit_page_post(self):
        request = MockRequest(self.user, has_otp=True, has_sudo=True)
        request.method = "POST"
        request.POST = {"title": "Test Page", "slug": "test-page"}
        page = models.HelpBasePage.objects.filter(parent__isnull=False).get()

        response = views.edit_page(request, page_pk=page.pk)
        self.assertEqual(response.status_code, 200)

        request.POST["app"] = "tickets.urls"
        response = views.edit_page(request, page_pk=page.pk)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response["Location"],
                         reverse("admin:index", kwargs={"page_pk": page.pk}))

        page.refresh_from_db()
        self.assertEqual(page.title, "Test Page")
        self.assertEqual(page.slug, "test-page")