(t *testing.T)
| 204 | } |
| 205 | |
| 206 | func TestRevokeAPIKey_DatabaseError(t *testing.T) { |
| 207 | db, mock, err := sqlmock.New() |
| 208 | assert.NoError(t, err) |
| 209 | defer func() { _ = db.Close() }() |
| 210 | |
| 211 | ds := Datasource{Conn: db} |
| 212 | |
| 213 | apiKeyID := "api_key_123" |
| 214 | ownerID := "owner123" |
| 215 | hashedKey := "some-hashed-key-value" |
| 216 | |
| 217 | // Expect the SELECT query first (succeeds) |
| 218 | selectRow := sqlmock.NewRows([]string{"key"}). |
| 219 | AddRow(hashedKey) |
| 220 | |
| 221 | mock.ExpectQuery("SELECT.*FROM ledgerforge.api_keys.*WHERE api_key_id.*AND owner_id.*"). |
| 222 | WithArgs(apiKeyID, ownerID). |
| 223 | WillReturnRows(selectRow) |
| 224 | |
| 225 | // Expect the UPDATE query (fails with database error) |
| 226 | mock.ExpectExec("UPDATE ledgerforge.api_keys.*SET is_revoked.*WHERE api_key_id.*AND owner_id.*"). |
| 227 | WithArgs(sqlmock.AnyArg(), apiKeyID, ownerID). |
| 228 | WillReturnError(sql.ErrConnDone) |
| 229 | |
| 230 | err = ds.RevokeAPIKey(context.Background(), apiKeyID, ownerID) |
| 231 | assert.Error(t, err) |
| 232 | assert.Equal(t, sql.ErrConnDone, err) |
| 233 | |
| 234 | err = mock.ExpectationsWereMet() |
| 235 | assert.NoError(t, err) |
| 236 | } |
| 237 | |
| 238 | func TestUpdateLastUsed_Success(t *testing.T) { |
| 239 | db, mock, err := sqlmock.New() |
nothing calls this directly
no test coverage detected