Auto-indexing service and GraphQL API for AT Protocol Records
at main 72 lines 2.2 kB view raw
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}