Packages

An Elixir driver for ArangoDB, version published by mpoeter.

Current section

Files

Jump to
my_arangoex test arangoex user_test.exs
Raw

test/arangoex/user_test.exs

defmodule UserTest do
use MyArangoex.TestCase
doctest MyArangoex
import MyArangoex.TestHelper
alias MyArangoex.User
test "lists users" do
{:ok, users} = User.users(test_endpoint())
names =
users
|> Enum.map(fn c -> c.user end)
|> Enum.sort
assert names == ["root"]
end
test "creates a user" do
new_username = Faker.Lorem.word
{:ok, original_users} = User.users(test_endpoint())
{:ok, user} = User.create(test_endpoint(), %User{user: new_username})
{:ok, after_users} = User.users(test_endpoint())
assert [user] == after_users -- original_users
assert user.user== new_username
end
test "removes a user" do
new_user = %User{user: Faker.Lorem.word}
# create one to remove
{:ok, _} = User.create(test_endpoint(), new_user)
{:ok, users} = User.users(test_endpoint())
assert new_user.user in Enum.map(users, & &1.user)
# remove and make sure it's gone
{:ok, _} = User.remove(test_endpoint(), new_user)
{:ok, users} = User.users(test_endpoint())
refute new_user.user in Enum.map(users, & &1.user)
end
test "looks up user information" do
new_user = %User{user: Faker.Lorem.word}
{:ok, _} = User.create(test_endpoint(), new_user)
assert {:ok, %User{} = fetched_user} = User.user(test_endpoint(), new_user)
assert fetched_user.user == new_user.user
end
test "updates a user" do
user_name = Faker.Lorem.word
user_pass = ""
user = %MyArangoex.User{user: user_name, passwd: user_pass, active: false}
{:ok, user} = User.create(test_endpoint(), user)
extra = %{"foo" => 1, "bar" => 2}
{:ok, updated_user} = User.update(test_endpoint(), user, extra: extra, active: true)
assert %User{user: ^user_name, active: true, extra: ^extra} = updated_user
end
test "replaces a user" do
user_name = Faker.Lorem.word
user_pass = ""
user = %MyArangoex.User{user: user_name, passwd: user_pass, active: false}
{:ok, user} = User.create(test_endpoint(), user)
extra = %{"foo" => 1, "bar" => 2}
{:ok, replaced_user} = User.replace(test_endpoint(), user, extra: extra, active: true)
assert %User{user: ^user_name, active: true, extra: ^extra} = replaced_user
end
test "lists accessible databases", ctx do
{:ok, dbs} = User.databases(test_endpoint(), %User{user: "root"})
assert "_system" in Map.keys(dbs)
assert ctx.db.name in Map.keys(dbs)
{:ok, _} = User.create(test_endpoint(), %MyArangoex.User{user: "johnny"})
{:ok, dbs} = User.databases(test_endpoint(), %User{user: "johnny"})
assert dbs == %{}
end
test "grant and revoke database access", ctx do
johnny = %User{user: "johnny"}
db_name = ctx.db.name
{:ok, _} = User.create(test_endpoint(), johnny)
{:ok, dbs} = User.databases(test_endpoint(), johnny)
refute db_name in Map.keys(dbs)
{:ok, _} = User.grant(test_endpoint(), johnny, ctx.db)
assert {:ok, %{^db_name => "rw"}} = User.databases(test_endpoint(), johnny)
{:ok, _} = User.revoke(test_endpoint(), johnny, ctx.db)
assert {:ok, %{^db_name => "none"}} = User.databases(test_endpoint(), johnny)
end
end