Update to refactor tests which check permission for LiveViews.
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user