Skip to content

Commit

Permalink
fix: some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
chasers committed Dec 13, 2023
1 parent 85d2cc2 commit 8727f03
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/logflare/auth/cache.ex
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ defmodule Logflare.Auth.Cache do
}
end

@spec verify_access_token(OauthAccessToken.t() | String.t()) ::
{:ok, User.t()} | {:error, term()}
def verify_access_token(access_token_or_api_key),
do: apply_repo_fun(__ENV__.function, [access_token_or_api_key])

@spec verify_access_token(OauthAccessToken.t() | String.t(), String.t() | [String.t()]) ::
{:ok, User.t()} | {:error, term()}
def verify_access_token(access_token_or_api_key, scopes),
Expand Down
55 changes: 55 additions & 0 deletions test/logflare/auth/cache_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
defmodule Logflare.Auth.CacheTest do
use Logflare.DataCase
alias Logflare.Auth
alias Logflare.Factory
alias Logflare.Partners.Partner

setup do
user = Factory.insert(:user)
[user: user, team: Factory.insert(:team, user: user), partner: Factory.insert(:partner)]
end

test "verify_access_token/2 public scope is cached", %{user: user} do
# no scope set
{:ok, key} = Auth.create_access_token(user)
assert {:ok, _} = Auth.Cache.verify_access_token(key.token, ~w(public))
assert {:ok, _} = Auth.Cache.verify_access_token(key.token, "public")
assert {:ok, _} = Auth.Cache.verify_access_token(key.token)

# scope is set
{:ok, key} = Auth.create_access_token(user, %{scopes: "public"})
assert {:ok, _} = Auth.Cache.verify_access_token(key.token, ~w(public))
assert {:ok, _} = Auth.Cache.verify_access_token(key.token, "public")
assert {:ok, _} = Auth.Cache.verify_access_token(key.token)
end

test "verify_access_token/2 private scope is cached", %{user: user} do
# no scope set
{:ok, key} = Auth.create_access_token(user)
assert {:error, _} = Auth.Cache.verify_access_token(key.token, ~w(private))

# public scope set
{:ok, key} = Auth.create_access_token(user, %{scopes: "public"})
assert {:error, _} = Auth.Cache.verify_access_token(key.token, ~w(private))

# scope is set
{:ok, key} = Auth.create_access_token(user, %{scopes: "private"})
assert {:ok, _} = Auth.Cache.verify_access_token(key.token, ~w(public))
assert {:ok, _} = Auth.Cache.verify_access_token(key.token, ~w(private))
end

test "verify_access_token/2 partner scope is cached", %{partner: partner} do
key = access_token_fixture(partner)
assert {:ok, %Partner{}} = Auth.Cache.verify_access_token(key, ~w(partner))
assert {:ok, %Partner{}} = Auth.Cache.verify_access_token(key.token, ~w(partner))

# If scope is missing, should be unauthorized
assert {:error, :unauthorized} = Auth.Cache.verify_access_token(key)
end

defp access_token_fixture(user_or_team_or_partner) do
{:ok, key} = Auth.create_access_token(user_or_team_or_partner)
key
end

end

0 comments on commit 8727f03

Please sign in to comment.