Exemplo n.º 1
0
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"
    )
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
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}",
    )
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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,
    )
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
    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))