Add tests to check permission for Index LiveViews.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
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…
Reference in new issue