-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathelixir_auth_github_test.exs
More file actions
85 lines (69 loc) · 2.74 KB
/
elixir_auth_github_test.exs
File metadata and controls
85 lines (69 loc) · 2.74 KB
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
defmodule ElixirAuthGithubTest do
use ExUnit.Case
doctest ElixirAuthGithub
import ElixirAuthGithub
defp setup_test_environment_variables do
System.put_env([{"GITHUB_CLIENT_ID", "TEST_ID"}, {"GITHUB_CLIENT_SECRET", "TEST_SECRET"}])
end
test "login_url/0 returns authorize URL with client_id appended" do
assert ElixirAuthGithub.login_url() ==
"https://github.com/login/oauth/authorize?client_id=" <> client_id()
end
test "login_url/1 with state returns authorize URL with client_id" do
url =
"https://github.com/login/oauth/authorize?client_id=" <>
client_id() <> "&state=california"
assert ElixirAuthGithub.login_url(%{state: "california"}) == url
end
test "test login_url_with_scope/1 with all valid scopes" do
url =
"https://github.com/login/oauth/authorize?client_id=" <>
client_id() <> "&scope=user%20user:email"
assert ElixirAuthGithub.login_url(%{scopes: ["user", "user:email"]}) == url
end
test "test login_url/1 with all valid scopes and state" do
url =
"https://github.com/login/oauth/authorize?client_id=" <>
client_id() <> "&scope=user%20user:email" <> "&state=california"
assert ElixirAuthGithub.login_url(%{scopes: ["user", "user:email"], state: "california"}) ==
url
end
test "test login_url/1 with some invalid scopes (should be :ok)" do
url =
"https://github.com/login/oauth/authorize?client_id=" <>
client_id() <> "&scope=user%20user:email"
scopes = ["user", "user:email"]
assert ElixirAuthGithub.login_url(%{scopes: scopes}) == url
end
test "github_auth returns a user and token" do
setup_test_environment_variables()
{:ok, res} = ElixirAuthGithub.github_auth("12345")
assert res.login == "test_user"
assert res.id == "19"
end
test "github_auth returns scope string" do
setup_test_environment_variables()
{:ok, res} = ElixirAuthGithub.github_auth("12345")
assert res.scope == "user"
end
test "catch-all mock HTTP.post! returns scope string" do
setup_test_environment_variables()
{:ok, res} = ElixirAuthGithub.github_auth("123456")
assert res.scope == "user"
end
test "github_auth returns an error with a bad code" do
setup_test_environment_variables()
assert ElixirAuthGithub.github_auth("1234") ==
{:error, %{"error" => "error"}}
end
test "github_auth returns an error with a bad code 123" do
setup_test_environment_variables()
res = ElixirAuthGithub.github_auth("123")
assert res == {:error, %{"error" => "test error"}}
end
test "fetch primary email for user" do
setup_test_environment_variables()
{:ok, res} = ElixirAuthGithub.github_auth("42")
assert res.email == "private_email@gmail.com"
end
end