forked from
slices.network/quickslice
Auto-indexing service and GraphQL API for AT Protocol Records
1import database/repositories/oauth_authorization_code
2import database/types.{OAuthAuthorizationCode, S256}
3import gleam/option.{None, Some}
4import gleeunit/should
5import test_helpers
6
7pub fn insert_and_get_authorization_code_test() {
8 // Create table using schema function
9 let assert Ok(exec) = test_helpers.create_test_db()
10 let assert Ok(_) = test_helpers.create_all_tables(exec)
11
12 let code =
13 OAuthAuthorizationCode(
14 code: "test-code-123",
15 client_id: "client-1",
16 user_id: "did:plc:test",
17 session_id: Some("session-1"),
18 session_iteration: Some(1),
19 redirect_uri: "http://localhost/callback",
20 scope: Some("atproto"),
21 code_challenge: Some("challenge"),
22 code_challenge_method: Some(S256),
23 nonce: Some("nonce-1"),
24 created_at: 1000,
25 expires_at: 2000,
26 used: False,
27 )
28
29 let assert Ok(Nil) = oauth_authorization_code.insert(exec, code)
30 let assert Ok(Some(retrieved)) =
31 oauth_authorization_code.get(exec, "test-code-123")
32
33 retrieved.code |> should.equal("test-code-123")
34 retrieved.client_id |> should.equal("client-1")
35 retrieved.used |> should.equal(False)
36}
37
38pub fn mark_code_used_test() {
39 let assert Ok(exec) = test_helpers.create_test_db()
40 let assert Ok(_) = test_helpers.create_all_tables(exec)
41
42 let code =
43 OAuthAuthorizationCode(
44 code: "test-code-456",
45 client_id: "client-1",
46 user_id: "did:plc:test",
47 session_id: None,
48 session_iteration: None,
49 redirect_uri: "http://localhost/callback",
50 scope: None,
51 code_challenge: None,
52 code_challenge_method: None,
53 nonce: None,
54 created_at: 1000,
55 expires_at: 2000,
56 used: False,
57 )
58
59 let assert Ok(Nil) = oauth_authorization_code.insert(exec, code)
60 let assert Ok(Nil) = oauth_authorization_code.mark_used(exec, "test-code-456")
61 let assert Ok(Some(retrieved)) =
62 oauth_authorization_code.get(exec, "test-code-456")
63
64 retrieved.used |> should.equal(True)
65}
66
67pub fn get_nonexistent_code_returns_none_test() {
68 let assert Ok(exec) = test_helpers.create_test_db()
69 let assert Ok(_) = test_helpers.create_all_tables(exec)
70
71 let assert Ok(None) = oauth_authorization_code.get(exec, "nonexistent")
72}