File size: 2,604 Bytes
c9c49ab | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | defmodule Plausible.Plugins.API.TokenTest do
use Plausible.DataCase, async: false
alias Plausible.Plugins.API.Token
@tag :ee_only
test "basic token properties" do
t1 = Token.generate()
t2 = Token.generate()
assert is_binary(t1.raw)
assert is_binary(t1.hash)
assert is_binary(t2.raw)
assert is_binary(t2.hash)
assert byte_size(t1.hash) == 32
assert byte_size(t2.hash) == 32
assert <<"plausible-plugin-test-", _::binary-size(40)>> = t1.raw
assert <<"plausible-plugin-test-", _::binary-size(40)>> = t2.raw
assert t1.raw != t2.raw
assert t1.hash != t2.hash
end
describe "prefix/0" do
@tag :ee_only
test "default prefix - full build" do
assert Token.prefix() == "plausible-plugin-test"
end
@tag :ce_build_only
test "selfhosted prefix" do
assert Token.prefix() == "plausible-plugin-selfhost"
end
@tag :ee_only
test "prod prefix" do
patch_env(:environment, "prod")
assert Token.prefix() == "plausible-plugin"
end
@tag :ee_only
test "staging prefix" do
patch_env(:environment, "staging")
assert Token.prefix() == "plausible-plugin-staging"
end
end
describe "insert_changeset/2" do
test "required fields" do
changeset = Token.insert_changeset(nil, %{raw: "", hash: ""}, %{})
refute changeset.valid?
assert [
description: {"can't be blank", _},
site: {"can't be blank", _},
token_hash: {"can't be blank", _},
hint: {"can't be blank", _}
] = changeset.errors
end
test "valid changeset" do
site = build(:site, id: 1_892_787)
changeset =
Token.insert_changeset(site, Token.generate(), %{
"description" => "My token"
})
assert changeset.valid?
assert Ecto.Changeset.get_field(changeset, :site).id == 1_892_787
end
end
test "last_used_humanize/1" do
now = NaiveDateTime.utc_now()
last_seen = fn shift ->
Token.last_used_humanize(%Token{last_used_at: NaiveDateTime.shift(now, shift)})
end
assert Token.last_used_humanize(%Token{}) == "Not yet"
assert last_seen.(minute: -1) == "Just recently"
assert last_seen.(minute: -4) == "Just recently"
assert last_seen.(minute: -6) == "Several minutes ago"
assert last_seen.(hour: -1) == "An hour ago"
assert last_seen.(hour: -7) == "Hours ago"
assert last_seen.(day: -1) == "Yesterday"
assert last_seen.(day: -3) == "Sometime this week"
assert last_seen.(month: -1) == "Long time ago"
end
end
|