(t *testing.T)
| 68 | } |
| 69 | |
| 70 | func 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 | } |
| 111 | func TestGetAPIKey_NotFound(t *testing.T) { |
| 112 | db, mock, err := sqlmock.New() |
| 113 | assert.NoError(t, err) |
nothing calls this directly
no test coverage detected