def test_stripe_subscription_canceled_sends_ga_tracking( mock1, track_event_mock_signals, client ): mock1.return_value = SimpleNamespace( type="customer.subscription.deleted", data=SimpleNamespace( object=SimpleNamespace(customer="cus_mock_testuser", id="sub_123456789") ), ) create_user( save=True, username="******", email="*****@*****.**", stripe_customer_id="cus_mock_testuser", ) response = client.post( reverse("api.v1.stripe_hooks"), content_type="application/json", data={}, ) assert response.status_code == 200 track_event_mock_signals.assert_called_with( CATEGORY_MONTHLY_PAYMENTS, ACTION_SUBSCRIPTION_CANCELED, "webhook" )
def setUp(self): username = "******" password = "******" email = "*****@*****.**" self.user = create_user(username=username, email=email, password=password, save=True) self.client.login(username=username, password=password) # Give self.user (tester23) keys permissions add_perm = Permission.objects.get(codename="add_key") del_perm = Permission.objects.get(codename="delete_key") self.user.user_permissions.add(add_perm) self.user.user_permissions.add(del_perm) self._cache_bust_user_perms() username2 = "someone" password2 = "somepass" email2 = "*****@*****.**" self.user2 = create_user(username=username2, email=email2, password=password2, save=True) self.key1 = Key(user=self.user, description="Test Key 1") self.key1.save() self.key2 = Key(user=self.user, description="Test Key 2") self.key2.save() self.key3 = Key(user=self.user2, description="Test Key 3") self.key3.save()
def test_stripe_payment_succeeded_sends_ga_tracking( mock1, track_event_mock_signals, mock2, client, settings ): settings.GOOGLE_ANALYTICS_ACCOUNT = "UA-XXXX-1" settings.GOOGLE_ANALYTICS_TRACKING_RAISE_ERRORS = True mock1.return_value = SimpleNamespace( type="invoice.payment_succeeded", data=SimpleNamespace( object=SimpleNamespace( customer="cus_mock_testuser", created=1583842724, invoice_pdf="https://developer.mozilla.org/mock-invoice-pdf-url", ) ), ) create_user( save=True, username="******", email="*****@*****.**", stripe_customer_id="cus_mock_testuser", ) response = client.post( reverse("api.v1.stripe_hooks"), content_type="application/json", data={}, ) assert response.status_code == 200 track_event_mock_signals.assert_called_with( CATEGORY_MONTHLY_PAYMENTS, ACTION_SUBSCRIPTION_CREATED, f"{settings.CONTRIBUTION_AMOUNT_USD:.2f}", )
def setUp(self): username = "******" password = "******" email = "*****@*****.**" self.user = create_user(username=username, email=email, password=password, save=True) self.client.login(username=username, password=password)
def user_auth_key(): u = create_user(username="******", email="*****@*****.**", save=True) key = Key(user=u) secret = key.generate_secret() key.save() return Object( user=u, key=key, secret=secret, )
def test_sendinblue_unsubscribe(mock_check_sendinblue, client): mock_check_sendinblue.return_value = False email = "*****@*****.**" user = create_user( save=True, username="******", email=email, is_newsletter_subscribed=True, ) response = client.post( reverse("api.v1.sendinblue_hooks"), content_type="application/json", data={"event": "unsubscribe", "email": email}, ) assert response.status_code == 200 user.refresh_from_db() assert not user.is_newsletter_subscribed
def test_stripe_payment_succeeded_sends_invoice_mail( construct_stripe_event, retrieve_subscription, download_url ): construct_stripe_event.return_value = SimpleNamespace( type="invoice.payment_succeeded", data=SimpleNamespace( object=SimpleNamespace( number="test_invoice_001", total=700, customer="cus_mock_testuser", created=1583842724, invoice_pdf="https://developer.mozilla.org/mock-invoice-pdf-url", ) ), ) retrieve_subscription.return_value = { "next_payment_at": 1583842724, "brand": "MagicCard", } download_url.return_value = bytes("totally not a pdf", "utf-8") testuser = create_user( save=True, username="******", email="*****@*****.**", stripe_customer_id="cus_mock_testuser", ) response = Client().post( reverse("api.v1.stripe_hooks"), content_type="application/json", data={}, ) assert response.status_code == 200 assert len(mail.outbox) == 1 payment_email = mail.outbox[0] assert payment_email.to == [testuser.email] assert "Receipt" in payment_email.subject assert "Invoice number: test_invoice_001" in payment_email.body assert "You supported MDN with a $7.00 monthly subscription" in payment_email.body assert "Manage monthly subscription" in payment_email.body
def test_stripe_subscription_canceled(mock1, client): mock1.return_value = SimpleNamespace( type="customer.subscription.deleted", data=SimpleNamespace(object=SimpleNamespace( customer="cus_mock_testuser", id="sub_123456789")), ) testuser = create_user( save=True, username="******", email="*****@*****.**", stripe_customer_id="cus_mock_testuser", ) UserSubscription.set_active(testuser, "sub_123456789") response = client.post( reverse("api.v1.stripe_hooks"), content_type="application/json", data={}, ) assert response.status_code == 200 (user_subscription, ) = UserSubscription.objects.filter(user=testuser) assert user_subscription.canceled
def test_permissions(self): """ Ensure that the negative and positive permissions for adding attachments work. """ # Get the negative and positive permissions ct = ContentType.objects.get(app_label="attachments", model="attachment") p1 = Permission.objects.get(codename="disallow_add_attachment", content_type=ct) p2 = Permission.objects.get(codename="add_attachment", content_type=ct) # Create a group with the negative permission. g1, created = Group.objects.get_or_create(name="cannot_attach") g1.permissions.set([p1]) g1.save() # Create a group with the positive permission. g2, created = Group.objects.get_or_create(name="can_attach") g2.permissions.set([p2]) g2.save() # User with no explicit permission is allowed u2 = create_user(username="******", save=True) self.assertTrue(allow_add_attachment_by(u2)) # User in group with negative permission is disallowed u3 = create_user(username="******", save=True) u3.groups.set([g1]) u3.save() self.assertTrue(not allow_add_attachment_by(u3)) # Superusers can do anything, despite group perms u1 = create_user(username="******", is_superuser=True, save=True) u1.groups.set([g1]) u1.save() self.assertTrue(allow_add_attachment_by(u1)) # User with negative permission is disallowed u4 = create_user(username="******", save=True) u4.user_permissions.add(p1) u4.save() self.assertTrue(not allow_add_attachment_by(u4)) # User with positive permission overrides group u5 = create_user(username="******", save=True) u5.groups.set([g1]) u5.user_permissions.add(p2) u5.save() self.assertTrue(allow_add_attachment_by(u5)) # Group with positive permission takes priority u6 = create_user(username="******", save=True) u6.groups.set([g1, g2]) u6.save() self.assertTrue(allow_add_attachment_by(u6)) # positive permission takes priority, period. u7 = create_user(username="******", save=True) u7.user_permissions.add(p1) u7.user_permissions.add(p2) u7.save() self.assertTrue(allow_add_attachment_by(u7))