-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2798b1f
commit b15ee6c
Showing
28 changed files
with
327 additions
and
491 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,14 +5,15 @@ defmodule Atomic.AccountsTest do | |
|
||
import Atomic.AccountsFixtures | ||
alias Atomic.Accounts.{User, UserToken} | ||
import Atomic.Factory | ||
|
||
describe "get_user_by_email/1" do | ||
test "does not return the user if the email does not exist" do | ||
refute Accounts.get_user_by_email("[email protected]") | ||
end | ||
|
||
test "returns the user if the email exists" do | ||
%{id: id} = user = user_fixture() | ||
%{id: id} = user = insert(:user) | ||
assert %User{id: ^id} = Accounts.get_user_by_email(user.email) | ||
end | ||
end | ||
|
@@ -23,27 +24,21 @@ defmodule Atomic.AccountsTest do | |
end | ||
|
||
test "does not return the user if the password is not valid" do | ||
user = user_fixture() | ||
user = insert(:user) | ||
refute Accounts.get_user_by_email_and_password(user.email, "invalid") | ||
end | ||
|
||
test "returns the user if the email and password are valid" do | ||
%{id: id} = user = user_fixture() | ||
%{id: id} = user = insert(:user) | ||
|
||
assert %User{id: ^id} = | ||
Accounts.get_user_by_email_and_password(user.email, valid_user_password()) | ||
end | ||
end | ||
|
||
describe "get_user!/1" do | ||
test "raises if id is invalid" do | ||
assert_raise Ecto.NoResultsError, fn -> | ||
Accounts.get_user!(-1) | ||
end | ||
end | ||
|
||
test "returns the user with the given id" do | ||
%{id: id} = user = user_fixture() | ||
%{id: id} = user = insert(:user) | ||
assert %User{id: ^id} = Accounts.get_user!(user.id) | ||
end | ||
end | ||
|
@@ -75,7 +70,7 @@ defmodule Atomic.AccountsTest do | |
end | ||
|
||
test "validates email uniqueness" do | ||
%{email: email} = user_fixture() | ||
%{email: email} = insert(:user) | ||
{:error, changeset} = Accounts.register_user(%{email: email}) | ||
assert "has already been taken" in errors_on(changeset).email | ||
|
||
|
@@ -85,9 +80,10 @@ defmodule Atomic.AccountsTest do | |
end | ||
|
||
test "registers users with a hashed password" do | ||
email = unique_user_email() | ||
{:ok, user} = Accounts.register_user(valid_user_attributes(email: email)) | ||
assert user.email == email | ||
user_attrs = params_for(:user) |> Map.put(:password, valid_user_password()) | ||
{:ok, user} = Accounts.register_user(user_attrs) | ||
|
||
assert user.email == user_attrs.email | ||
assert is_binary(user.hashed_password) | ||
assert is_nil(user.confirmed_at) | ||
assert is_nil(user.password) | ||
|
@@ -101,13 +97,13 @@ defmodule Atomic.AccountsTest do | |
end | ||
|
||
test "allows fields to be set" do | ||
email = unique_user_email() | ||
email = Faker.Internet.email() | ||
password = valid_user_password() | ||
|
||
changeset = | ||
Accounts.change_user_registration( | ||
%User{}, | ||
valid_user_attributes(email: email, password: password) | ||
params_for(:user, %{email: email, password: password}) | ||
) | ||
|
||
assert changeset.valid? | ||
|
@@ -126,7 +122,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "apply_user_email/3" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "requires email to change", %{user: user} do | ||
|
@@ -151,7 +147,7 @@ defmodule Atomic.AccountsTest do | |
end | ||
|
||
test "validates email uniqueness", %{user: user} do | ||
%{email: email} = user_fixture() | ||
%{email: email} = insert(:user) | ||
|
||
{:error, changeset} = | ||
Accounts.apply_user_email(user, valid_user_password(), %{email: email}) | ||
|
@@ -161,13 +157,13 @@ defmodule Atomic.AccountsTest do | |
|
||
test "validates current password", %{user: user} do | ||
{:error, changeset} = | ||
Accounts.apply_user_email(user, "invalid", %{email: unique_user_email()}) | ||
Accounts.apply_user_email(user, "invalid", %{email: Faker.Internet.email()}) | ||
|
||
assert %{current_password: ["is not valid"]} = errors_on(changeset) | ||
end | ||
|
||
test "applies the email without persisting it", %{user: user} do | ||
email = unique_user_email() | ||
email = Faker.Internet.email() | ||
{:ok, user} = Accounts.apply_user_email(user, valid_user_password(), %{email: email}) | ||
assert user.email == email | ||
assert Accounts.get_user!(user.id).email != email | ||
|
@@ -176,7 +172,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "deliver_update_email_instructions/3" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "sends token through notification", %{user: user} do | ||
|
@@ -195,8 +191,8 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "update_user_email/2" do | ||
setup do | ||
user = user_fixture() | ||
email = unique_user_email() | ||
user = insert(:user) | ||
email = Faker.Internet.email() | ||
|
||
token = | ||
extract_user_token(fn url -> | ||
|
@@ -256,7 +252,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "update_user_password/3" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "validates password", %{user: user} do | ||
|
@@ -312,7 +308,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "generate_user_session_token/1" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "generates a token", %{user: user} do | ||
|
@@ -324,7 +320,7 @@ defmodule Atomic.AccountsTest do | |
assert_raise Ecto.ConstraintError, fn -> | ||
Repo.insert!(%UserToken{ | ||
token: user_token.token, | ||
user_id: user_fixture().id, | ||
user_id: insert(:user).id, | ||
context: "session" | ||
}) | ||
end | ||
|
@@ -333,7 +329,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "get_user_by_session_token/1" do | ||
setup do | ||
user = user_fixture() | ||
user = insert(:user) | ||
token = Accounts.generate_user_session_token(user) | ||
%{user: user, token: token} | ||
end | ||
|
@@ -355,7 +351,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "delete_session_token/1" do | ||
test "deletes the token" do | ||
user = user_fixture() | ||
user = insert(:user) | ||
token = Accounts.generate_user_session_token(user) | ||
assert Accounts.delete_session_token(token) == :ok | ||
refute Accounts.get_user_by_session_token(token) | ||
|
@@ -364,7 +360,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "deliver_user_confirmation_instructions/2" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "sends token through notification", %{user: user} do | ||
|
@@ -383,7 +379,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "confirm_user/1" do | ||
setup do | ||
user = user_fixture() | ||
user = insert(:user) | ||
|
||
token = | ||
extract_user_token(fn url -> | ||
|
@@ -417,7 +413,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "deliver_user_reset_password_instructions/2" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "sends token through notification", %{user: user} do | ||
|
@@ -436,7 +432,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "get_user_by_reset_password_token/1" do | ||
setup do | ||
user = user_fixture() | ||
user = insert(:user) | ||
|
||
token = | ||
extract_user_token(fn url -> | ||
|
@@ -465,7 +461,7 @@ defmodule Atomic.AccountsTest do | |
|
||
describe "reset_user_password/2" do | ||
setup do | ||
%{user: user_fixture()} | ||
%{user: insert(:user)} | ||
end | ||
|
||
test "validates password", %{user: user} do | ||
|
Oops, something went wrong.