from django.test.utils import override_settings from hc.api.models import Channel from hc.test import BaseTestCase @override_settings(PUSHOVER_API_TOKEN="token", PUSHOVER_SUBSCRIPTION_URL="url") class AddPushoverTestCase(BaseTestCase): def test_instructions_work(self): self.client.login(username="alice@example.org", password="password") r = self.client.get("/integrations/add_pushover/") self.assertContains(r, "Subscribe with Pushover") def test_it_adds_channel(self): self.client.login(username="alice@example.org", password="password") session = self.client.session session["po_nonce"] = "n" session.save() params = "pushover_user_key=a&nonce=n&prio=0" r = self.client.get("/integrations/add_pushover/?%s" % params) assert r.status_code == 302 channels = list(Channel.objects.all()) assert len(channels) == 1 assert channels[0].value == "a|0" @override_settings(PUSHOVER_API_TOKEN=None) def test_it_requires_api_token(self): self.client.login(username="alice@example.org", password="password") r = self.client.get("/integrations/add_pushover/") self.assertEqual(r.status_code, 404) def test_it_validates_priority(self): self.client.login(username="alice@example.org", password="password") session = self.client.session session["po_nonce"] = "n" session.save() params = "pushover_user_key=a&nonce=n&prio=abc" r = self.client.get("/integrations/add_pushover/?%s" % params) assert r.status_code == 400 def test_it_validates_nonce(self): self.client.login(username="alice@example.org", password="password") session = self.client.session session["po_nonce"] = "n" session.save() params = "pushover_user_key=a&nonce=INVALID&prio=0" r = self.client.get("/integrations/add_pushover/?%s" % params) assert r.status_code == 403