Add tests to check permission for Index LiveViews.
continuous-integration/drone/push Build is passing Details

dev
KKlochko 1 month ago
parent 4688d09dcf
commit bdc6670475

@ -0,0 +1,168 @@
defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
use DecentralisedBookIndexWeb.LiveCase, async: true
alias DecentralisedBookIndex.Metadata
setup do
user = generate(user(role: :user))
moderator = generate(user(role: :moderator))
admin = generate(user(role: :admin))
%{
user: user,
moderator: moderator,
admin: admin
}
end
describe "Book Index /books" do
test "can be accessed by regular user", %{conn: conn, user: user} do
{:ok, _view, html} =
conn
|> log_in_user(user)
|> live("/books")
assert html =~ "Listing Books"
end
test "can be accessed by moderator", %{conn: conn, moderator: moderator} do
assert {:ok, _view, html} =
conn
|> log_in_user(moderator)
|> live("/books")
assert html =~ "Listing Books"
end
test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
|> live("/books")
assert html =~ "Listing Books"
end
end
describe "Author Index /author" do
test "can be accessed by regular user", %{conn: conn, user: user} do
{:ok, _view, html} =
conn
|> log_in_user(user)
|> live("/authors")
assert html =~ "Listing Authors"
end
test "can be accessed by moderator", %{conn: conn, moderator: moderator} do
assert {:ok, _view, html} =
conn
|> log_in_user(moderator)
|> live("/authors")
assert html =~ "Listing Authors"
end
test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
|> live("/authors")
assert html =~ "Listing Authors"
end
end
describe "Publisher Index /publishers" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(user)
|> live("/publishers")
end
test "can be accessed by moderator", %{conn: conn, moderator: moderator} do
assert {:ok, _view, html} =
conn
|> log_in_user(moderator)
|> live("/publishers")
assert html =~ "Listing Publishers"
end
test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
|> live("/publishers")
assert html =~ "Listing Publishers"
end
end
describe "Server Index /servers" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(user)
|> live("/servers")
end
test "can't be accessed by moderator", %{conn: conn, moderator: moderator} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(moderator)
|> live("/servers")
end
test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
|> live("/servers")
assert html =~ "Listing Servers"
end
end
describe "ObanWeb /oban" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(user)
|> live("/oban")
end
test "can't be accessed by moderator", %{conn: conn, moderator: moderator} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(moderator)
|> live("/oban")
end
end
describe "User Index /users" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(user)
|> live("/users")
end
test "can't be accessed by moderator", %{conn: conn, moderator: moderator} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(moderator)
|> live("/users")
end
test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
|> live("/users")
assert html =~ "Listing Users"
end
end
end
Loading…
Cancel
Save