MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / TestGetAPIKey_Success

Function TestGetAPIKey_Success

database/api_key_test.go:70–110  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

68}
69
70func TestGetAPIKey_Success(t *testing.T) {
71 db, mock, err := sqlmock.New()
72 assert.NoError(t, err)
73 defer func() { _ = db.Close() }()
74
75 ds := Datasource{Conn: db}
76
77 key := "test-api-key"
78 keyPrefix := getKeyPrefix(key)
79 hashedKey, err := hashAPIKey(key)
80 assert.NoError(t, err)
81 apiKeyID := "api_key_123"
82 name := "Test API Key"
83 ownerID := "owner123"
84 scopes := []string{"read", "write"}
85 expiresAt := time.Now().Add(24 * time.Hour)
86 createdAt := time.Now().Add(-1 * time.Hour)
87 lastUsedAt := time.Now().Add(-30 * time.Minute)
88
89 row := sqlmock.NewRows([]string{"api_key_id", "key", "name", "owner_id", "scopes", "expires_at", "created_at", "last_used_at", "is_revoked", "revoked_at"}).
90 AddRow(apiKeyID, hashedKey, name, ownerID, pq.StringArray(scopes), expiresAt, createdAt, lastUsedAt, false, nil)
91
92 expectedQuery := regexp.QuoteMeta("SELECT api_key_id, key, name, owner_id, scopes, expires_at, created_at, last_used_at, is_revoked, revoked_at FROM ledgerforge.api_keys WHERE key_prefix = $1")
93 mock.ExpectQuery(expectedQuery).
94 WithArgs(keyPrefix).
95 WillReturnRows(row)
96
97 apiKey, err := ds.GetAPIKey(context.Background(), key)
98 assert.NoError(t, err)
99 assert.NotNil(t, apiKey)
100 assert.Equal(t, apiKeyID, apiKey.APIKeyID)
101 assert.Equal(t, hashedKey, apiKey.Key)
102 assert.Equal(t, name, apiKey.Name)
103 assert.Equal(t, ownerID, apiKey.OwnerID)
104 assert.Equal(t, scopes, apiKey.Scopes)
105 assert.False(t, apiKey.IsRevoked)
106 assert.Nil(t, apiKey.RevokedAt)
107
108 err = mock.ExpectationsWereMet()
109 assert.NoError(t, err)
110}
111func TestGetAPIKey_NotFound(t *testing.T) {
112 db, mock, err := sqlmock.New()
113 assert.NoError(t, err)

Callers

nothing calls this directly

Calls 4

GetAPIKeyMethod · 0.95
getKeyPrefixFunction · 0.85
hashAPIKeyFunction · 0.85
CloseMethod · 0.45

Tested by

no test coverage detected