コード例 #1
0
def test_validate_email_lowercase_domain():
    """
	The registration serializer should not change an email address with a lowercase domain.
	"""
    email = "*****@*****.**"
    serializer = serializers.EmailSerializer()

    assert serializer.validate_email(email) == email
コード例 #2
0
def test_validate_email_mixed_case_domain():
    """
	If the domain portion of the email is mixed case. it should be
	converted to lowercase.
	"""
    email = "*****@*****.**"
    expected = "*****@*****.**"
    serializer = serializers.EmailSerializer()

    assert serializer.validate_email(email) == expected
コード例 #3
0
def test_validate_create_primary():
    """
	Attempting to create a primary email address should not be valid. It
	should only be valid to mark a verified email address as the primary
	unless this is the user's first email.
	"""
    data = {"email": "*****@*****.**", "is_primary": True}
    serializer = serializers.EmailSerializer(data=data)

    assert not serializer.is_valid()
    assert set(serializer.errors.keys()) == {"is_primary"}
コード例 #4
0
def test_validate_changed_email(email_factory):
    """
	If a bound serializer attempts to change the email address of its
	instance it should not be valid
	"""
    email = email_factory(email="*****@*****.**")
    data = {"email": "*****@*****.**"}

    serializer = serializers.EmailSerializer(email, data=data)

    assert not serializer.is_valid()
    assert set(serializer.errors.keys()) == {"email"}
コード例 #5
0
def test_validate_make_unverified_primary(email_factory):
    """
	attempting to mark an existing but unverified email address 
	as the primary should be valid.
	"""
    email = email_factory(is_primary=False, is_verified=False)
    data = {"is_primary": True}

    serializer = serializers.EmailSerializer(email, data=data, partial=True)

    assert not serializer.is_valid()
    assert set(serializer.errors.keys()) == {"is_primary"}
コード例 #6
0
def test_update_is_primary_false(email_factory):
    """
	Updating 'is_primary' to false should not call set_primary.
	"""
    email = email_factory(is_primary=True, is_verified=True)
    data = {"is_primary": False}

    serializer = serializers.EmailSerializer(email, data=data, partial=True)
    assert serializer.is_valid()
    with mock.patch.object(email, "set_primary",
                           autospec=True) as mock_set_primary:
        email = serializer.save()

    assert mock_set_primary.call_count == 0
コード例 #7
0
def test_create_non_primary(email_factory, user_factory):
    """
	If the user already has a primary email address, the created email
	should not be marked as the user's primary.
	"""
    user = user_factory()
    email_factory(is_primary=True, user=user)

    data = {"email": "*****@*****.**"}

    serializer = serializers.EmailSerializer(data=data)
    assert serializer.is_valid()

    email = serializer.save(user=user)

    assert email.email == data["email"]
    assert not email.is_primary
def test_create_email(api_client, user_factory):
    """
    Sending a POST request with valid data to the view should create a
    new email address associated with the account.
    """
    user = user_factory()
    api_client.force_authenticate(user=user)

    data = {"email": "*****@*****.**"}

    response = api_client.post(url, data)

    assert response.status_code == status.HTTP_201_CREATED

    serializer = serializers.EmailSerializer(user.email_addresses.get())

    assert response.data == serializer.data
コード例 #9
0
def test_create(user_factory):
    """
	Test creating a new email address from the serializer.

	Creating a new email address should also send a confirmation email
	for the provided address. If the user does not have a primary email, 
	the created one should be marked as the primary.
	"""
    user = user_factory()
    data = {"email": "*****@*****.**"}

    serializer = serializers.EmailSerializer(data=data)
    assert serializer.is_valid()

    email = serializer.save(user=user)

    assert email.email == data["email"]
    assert email.is_primary
コード例 #10
0
def test_create_duplicate(mock_duplicate_notification, email_factory,
                          user_factory):
    """
	Attempting to add an email address that already exists should send a notification
	to the existing email.
	"""
    email = email_factory()
    user = user_factory()

    data = {"email": email.email}

    serializer = serializers.EmailSerializer(data=data)
    assert serializer.is_valid(), serializer.errors

    serializer.save(user=user)

    assert mock_duplicate_notification.call_count == 1
    assert mock_duplicate_notification.call_args[0] == (email, )
コード例 #11
0
def test_get(api_client, email_factory):
    """
	Sending a GET request to the view with the ID of an email address
	owned by the requesting user should return the given email address'
	information.
	"""
    email = email_factory()
    api_client.force_authenticate(user=email.user)

    url = reverse("rest-social-email-auth:email-detail",
                  kwargs={"pk": email.pk})
    response = api_client.get(url)

    assert response.status_code == status.HTTP_200_OK

    serializer = serializers.EmailSerializer(email)

    assert response.data == serializer.data
コード例 #12
0
def test_update(api_client, email_factory):
    """
	Sending a PATCH request to the view should allow for updating the
	email adddress associated with the endpoint.
	"""
    email = email_factory(is_primary=False, is_verified=True)
    data = {"is_primary": True}

    api_client.force_authenticate(user=email.user)

    url = reverse("rest-social-email-auth:email-detail",
                  kwargs={"pk": email.pk})
    response = api_client.patch(url, data)

    assert response.status_code == status.HTTP_200_OK

    email.refresh_from_db()
    serializer = serializers.EmailSerializer(email)

    assert response.data == serializer.data
コード例 #13
0
def test_list_emails(api_client, email_factory, user_factory):
    """
    Sending a GET request to the view should return the requesting
    user's emails.
    """
    user = user_factory()
    email_factory(user=user)
    email_factory(user=user)

    # Create email address for other user
    email_factory()

    serializer = serializers.EmailSerializer(user.email_addresses.all(),
                                             many=True)

    api_client.force_authenticate(user=user)

    response = api_client.get(url)

    assert response.status_code == status.HTTP_200_OK
    assert response.data == serializer.data