(t *testing.T)
| 1117 | } |
| 1118 | |
| 1119 | func TestAIProviders(t *testing.T) { |
| 1120 | t.Parallel() |
| 1121 | ctx := context.Background() |
| 1122 | |
| 1123 | //nolint:gosec // test fixture, not real credentials |
| 1124 | const settings = `{"_type":"bedrock","_version":1,"region":"us-west-2","model":"anthropic.claude-sonnet-4-5-20250929-v1:0","access_key":"AKIA-test","access_key_secret":"test-secret"}` |
| 1125 | |
| 1126 | insertProvider := func(t *testing.T, crypt *dbCrypt, ciphers []Cipher) database.AIProvider { |
| 1127 | t.Helper() |
| 1128 | provider := dbgen.AIProvider(t, crypt, database.AIProvider{ |
| 1129 | Name: "anthropic-bedrock", |
| 1130 | Type: database.AiProviderTypeAnthropic, |
| 1131 | BaseUrl: "https://bedrock-runtime.us-west-2.amazonaws.com/", |
| 1132 | Settings: sql.NullString{String: settings, Valid: true}, |
| 1133 | }) |
| 1134 | requireAIProviderDecrypted(t, provider, ciphers, settings) |
| 1135 | return provider |
| 1136 | } |
| 1137 | |
| 1138 | t.Run("InsertAIProvider", func(t *testing.T) { |
| 1139 | t.Parallel() |
| 1140 | db, crypt, ciphers := setup(t) |
| 1141 | provider := insertProvider(t, crypt, ciphers) |
| 1142 | requireAIProviderRawEncrypted(ctx, t, db, provider.ID, ciphers, settings) |
| 1143 | }) |
| 1144 | |
| 1145 | t.Run("InsertAIProviderEmptySettings", func(t *testing.T) { |
| 1146 | t.Parallel() |
| 1147 | db, crypt, _ := setup(t) |
| 1148 | provider := dbgen.AIProvider(t, crypt, database.AIProvider{ |
| 1149 | Name: "openai-empty", |
| 1150 | }, func(p *database.InsertAIProviderParams) { |
| 1151 | p.Settings = sql.NullString{} |
| 1152 | }) |
| 1153 | require.False(t, provider.SettingsKeyID.Valid) |
| 1154 | raw, err := db.GetAIProviderByID(ctx, provider.ID) |
| 1155 | require.NoError(t, err) |
| 1156 | require.False(t, raw.Settings.Valid) |
| 1157 | }) |
| 1158 | |
| 1159 | t.Run("GetAIProviderByID", func(t *testing.T) { |
| 1160 | t.Parallel() |
| 1161 | db, crypt, ciphers := setup(t) |
| 1162 | provider := insertProvider(t, crypt, ciphers) |
| 1163 | got, err := crypt.GetAIProviderByID(ctx, provider.ID) |
| 1164 | require.NoError(t, err) |
| 1165 | requireAIProviderDecrypted(t, got, ciphers, settings) |
| 1166 | requireAIProviderRawEncrypted(ctx, t, db, provider.ID, ciphers, settings) |
| 1167 | }) |
| 1168 | |
| 1169 | t.Run("GetAIProviderByName", func(t *testing.T) { |
| 1170 | t.Parallel() |
| 1171 | db, crypt, ciphers := setup(t) |
| 1172 | provider := insertProvider(t, crypt, ciphers) |
| 1173 | got, err := crypt.GetAIProviderByName(ctx, provider.Name) |
| 1174 | require.NoError(t, err) |
| 1175 | requireAIProviderDecrypted(t, got, ciphers, settings) |
| 1176 | requireAIProviderRawEncrypted(ctx, t, db, provider.ID, ciphers, settings) |
nothing calls this directly
no test coverage detected