|
|
|
@ -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
|
|
|
|
|