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,31 +15,15 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end end
describe "Book Index /books" do 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
{:ok, _view, html} = for user <- users do
conn {:ok, _view, html} =
|> log_in_user(user) conn
|> live("/books") |> 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" assert html =~ "Listing Books"
end
end end
end end
@ -64,13 +48,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user} do test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/books/new") |> log_in_user(user)
|> live("/books/new")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -90,13 +79,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, book: book} do test "can't be accessed by regular user", %{conn: conn, user: user, book: book} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/books/#{book.id}/edit") |> log_in_user(user)
|> live("/books/#{book.id}/edit")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -109,31 +104,15 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end end
describe "Author Index /authors" do 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
{:ok, _view, html} = for user <- users do
conn {:ok, _view, html} =
|> log_in_user(user) conn
|> live("/authors") |> 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" assert html =~ "Listing Authors"
end
end end
end end
@ -158,13 +137,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user} do test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/authors/new") |> log_in_user(user)
|> live("/authors/new")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -184,13 +168,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, author: author} do test "can't be accessed by regular user", %{conn: conn, user: user, author: author} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/authors/#{author.id}/edit") |> log_in_user(user)
|> live("/authors/#{author.id}/edit")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -204,28 +194,27 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
describe "Publisher Index /publishers" do describe "Publisher Index /publishers" do
test "can't be accessed by regular user", %{conn: conn, user: user} do test "can't be accessed by regular user", %{conn: conn, user: user} do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = for user <- [nil, user] do
conn assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
|> log_in_user(user) conn
|> live("/publishers") |> log_in_user(user)
end |> 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 end
test "can be accessed by admin", %{conn: conn, admin: admin} do test "can be accessed by moderator and admin", %{
assert {:ok, _view, html} = conn: conn,
conn moderator: moderator,
|> log_in_user(admin) admin: admin
|> live("/publishers") } do
for user <- [moderator, admin] do
assert {:ok, _view, html} =
conn
|> log_in_user(moderator)
|> live("/publishers")
assert html =~ "Listing Publishers" assert html =~ "Listing Publishers"
end
end end
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 test "can't be accessed by regular user", %{conn: conn, user: user, publisher: publisher} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/publishers/#{publisher.id}") |> log_in_user(user)
|> live("/publishers/#{publisher.id}")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -259,13 +254,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user} do test "can't be accessed by regular user", %{conn: conn, user: user} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/publishers/new") |> log_in_user(user)
|> live("/publishers/new")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -285,13 +285,19 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by regular user", %{conn: conn, user: user, publisher: publisher} do test "can't be accessed by regular user", %{conn: conn, user: user, publisher: publisher} do
for user <- [nil, user] do for user <- [nil, user] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/publishers/#{publisher.id}/edit") |> log_in_user(user)
|> live("/publishers/#{publisher.id}/edit")
end end
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 for user <- [moderator, admin] do
{:ok, _view, html} = {:ok, _view, html} =
conn conn
@ -304,27 +310,28 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end end
describe "Server Index /servers" do 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", %{
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = conn: conn,
conn user: user,
|> log_in_user(user) moderator: moderator
|> live("/servers") } do
end for user <- [nil, user, moderator] do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
test "can't be accessed by moderator", %{conn: conn, moderator: moderator} do conn
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = |> log_in_user(user)
conn |> live("/servers")
|> log_in_user(moderator) end
|> live("/servers")
end end
test "can be accessed by admin", %{conn: conn, admin: admin} do test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} = for user <- [admin] do
conn assert {:ok, _view, html} =
|> log_in_user(admin) conn
|> live("/servers") |> log_in_user(admin)
|> live("/servers")
assert html =~ "Listing Servers" assert html =~ "Listing Servers"
end
end end
end end
@ -333,12 +340,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
%{server: generate(dbi_server())} %{server: generate(dbi_server())}
end 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 for user <- [nil, user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/servers/#{server.id}") |> log_in_user(user)
|> live("/servers/#{server.id}")
end end
end end
@ -358,9 +371,10 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
test "can't be accessed by non-admin user", %{conn: conn, user: user, moderator: moderator} do test "can't be accessed by non-admin user", %{conn: conn, user: user, moderator: moderator} do
for user <- [nil, user, moderator] do for user <- [nil, user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/servers/new") |> log_in_user(user)
|> live("/servers/new")
end end
end end
@ -381,12 +395,18 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
%{server: generate(dbi_server())} %{server: generate(dbi_server())}
end 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 for user <- [nil, user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/servers/#{server.id}/edit") |> log_in_user(user)
|> live("/servers/#{server.id}/edit")
end end
end end
@ -403,53 +423,58 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end end
describe "ObanWeb /oban" do 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", %{
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = conn: conn,
conn user: user,
|> log_in_user(user) moderator: moderator
|> live("/oban") } do
end for user <- [nil, user, moderator] do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
test "can't be accessed by moderator", %{conn: conn, moderator: moderator} do conn
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = |> log_in_user(user)
conn |> live("/oban")
|> log_in_user(moderator) end
|> live("/oban")
end end
end end
describe "User Index /users" do 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", %{
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = conn: conn,
conn user: user,
|> log_in_user(user) moderator: moderator
|> live("/users") } do
end for user <- [nil, user, moderator] do
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} =
test "can't be accessed by moderator", %{conn: conn, moderator: moderator} do conn
assert {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} = |> log_in_user(user)
conn |> live("/users")
|> log_in_user(moderator) end
|> live("/users")
end end
test "can be accessed by admin", %{conn: conn, admin: admin} do test "can be accessed by admin", %{conn: conn, admin: admin} do
assert {:ok, _view, html} = for user <- [admin] do
conn assert {:ok, _view, html} =
|> log_in_user(admin) conn
|> live("/users") |> log_in_user(admin)
|> live("/users")
assert html =~ "Listing Users" assert html =~ "Listing Users"
end
end end
end end
describe "User Show /users/:id" do 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 for user <- [nil, regular_user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/users/#{regular_user.id}") |> log_in_user(user)
|> live("/users/#{regular_user.id}")
end end
end end
@ -466,12 +491,17 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end end
describe "User Edit /users/:id/edit" do 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 for user <- [nil, regular_user, moderator] do
{:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}} {:error, {:redirect, %{flash: %{"error" => "Unauthorized!"}, to: "/"}}}
conn
|> log_in_user(user) conn
|> live("/users/#{regular_user.id}/edit") |> log_in_user(user)
|> live("/users/#{regular_user.id}/edit")
end end
end end
@ -486,5 +516,4 @@ defmodule DecentralisedBookIndexWeb.LiveViewsPermissions do
end end
end end
end end
end end

Loading…
Cancel
Save