Update to refactor tests which check permission for LiveViews.
continuous-integration/drone/push Build is passing Details

dev
KKlochko 1 month ago
parent f406239b16
commit 88a8eba322

@ -15,7 +15,8 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end
describe "Book Index /books" do
test "can be accessed by regular user", %{conn: conn, user: user} do
test "can be accessed by any user", %{conn: conn, users: users} do
for user <- users do
{:ok, _view, html} =
conn
|> log_in_user(user)
@ -23,23 +24,6 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
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
@ -64,13 +48,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/books/new")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -90,13 +79,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, book: book} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/books/#{book.id}/edit")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin, book: book} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin,
book: book
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -109,7 +104,8 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end
describe "Author Index /authors" do
test "can be accessed by regular user", %{conn: conn, user: user} do
test "can be accessed by any user", %{conn: conn, users: users} do
for user <- users do
{:ok, _view, html} =
conn
|> log_in_user(user)
@ -117,23 +113,6 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
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
@ -158,13 +137,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/authors/new")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -184,13 +168,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, author: author} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/authors/#{author.id}/edit")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin, author: author} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin,
author: author
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -204,13 +194,20 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
describe "Publisher Index /publishers" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
conn
|> log_in_user(user)
|> live("/publishers")
end
end
test "can be accessed by moderator", %{conn: conn, moderator: moderator} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin
} do
for user <- [moderator, admin] do
assert {:ok, _view, html} =
conn
|> log_in_user(moderator)
@ -218,14 +215,6 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
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
@ -237,13 +226,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, publisher: publisher} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/publishers/#{publisher.id}")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin, publisher: publisher} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin,
publisher: publisher
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -259,13 +254,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/publishers/new")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -285,13 +285,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, publisher: publisher} do
for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/publishers/#{publisher.id}/edit")
end
end
test "can be accessed by moderator and admin", %{conn: conn, moderator: moderator, admin: admin, publisher: publisher} do
test "can be accessed by moderator and admin", %{
conn: conn,
moderator: moderator,
admin: admin,
publisher: publisher
} do
for user <- [moderator, admin] do
{:ok, _view, html} =
conn
@ -304,21 +310,21 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end
describe "Server Index /servers" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
test "can't be accessed by regular user and moderator", %{
conn: conn,
user: user,
moderator: moderator
} do
for user <- [nil, user, moderator] 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
for user <- [admin] do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
@ -327,15 +333,22 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
assert html =~ "Listing Servers"
end
end
end
describe "Server Show /servers/:id" do
setup do
%{server: generate(dbi_server())}
end
test "can't be accessed by non-admin user", %{conn: conn, user: user, moderator: moderator, server: server} do
test "can't be accessed by non-admin user", %{
conn: conn,
user: user,
moderator: moderator,
server: server
} do
for user <- [nil, user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/servers/#{server.id}")
@ -358,6 +371,7 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by non-admin user", %{conn: conn, user: user, moderator: moderator} do
for user <- [nil, user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/servers/new")
@ -381,9 +395,15 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
%{server: generate(dbi_server())}
end
test "can't be accessed by non-admin user", %{conn: conn, user: user, moderator: moderator, server: server} do
test "can't be accessed by non-admin user", %{
conn: conn,
user: user,
moderator: moderator,
server: server
} do
for user <- [nil, user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/servers/#{server.id}/edit")
@ -403,37 +423,36 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end
describe "ObanWeb /oban" do
test "can't be accessed by regular user", %{conn: conn, user: user} do
test "can't be accessed by regular user and moderator", %{
conn: conn,
user: user,
moderator: moderator
} do
for user <- [nil, user, moderator] 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
test "can't be accessed by regular user and moderator", %{
conn: conn,
user: user,
moderator: moderator
} do
for user <- [nil, user, moderator] 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
for user <- [admin] do
assert {:ok, _view, html} =
conn
|> log_in_user(admin)
@ -442,11 +461,17 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
assert html =~ "Listing Users"
end
end
end
describe "User Show /users/:id" do
test "can't be accessed by non-admin user", %{conn: conn, user: regular_user, moderator: moderator} do
test "can't be accessed by non-admin user", %{
conn: conn,
user: regular_user,
moderator: moderator
} do
for user <- [nil, regular_user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/users/#{regular_user.id}")
@ -466,9 +491,14 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end
describe "User Edit /users/:id/edit" do
test "can't be accessed by non-admin user", %{conn: conn, user: regular_user, moderator: moderator} do
test "can't be accessed by non-admin user", %{
conn: conn,
user: regular_user,
moderator: moderator
} do
for user <- [nil, regular_user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user)
|> live("/users/#{regular_user.id}/edit")
@ -486,5 +516,4 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end
end
end
end

Loading…
Cancel
Save