import json from django.contrib.auth import get_user_model from django.test import Client, TestCase from django.urls import reverse from webpush.models import PushInformation, SubscriptionInfo class TestAcceptSubscription(TestCase): def setUp(self): self.client = Client() self.user = get_user_model().objects.create( username="john", email="jlennon@beatles.com", password="glass onion" ) self.client.force_login(self.user) def tearDown(self): self.user.delete() def test_accept_sub(self): payload = { "status_type": "subscribe", "subscription": { "endpoint": "https://example.com", "keys": {"auth": "barfoo", "p256dh": "foobar"}, }, "browser": "firefox", } url = reverse("save_webpush_info") response = self.client.post( url, data=json.dumps(payload), content_type="application/json" ) self.assertEqual(response.status_code, 201) sub_info = SubscriptionInfo.objects.get() self.assertEqual(sub_info.browser, "firefox") self.assertEqual(sub_info.endpoint, "https://example.com") self.assertEqual(sub_info.auth, "barfoo") self.assertEqual(sub_info.p256dh, "foobar") push_info = PushInformation.objects.get() self.assertEqual(push_info.user, self.user) self.assertEqual(push_info.subscription, sub_info)