83 lines
2.1 KiB
Go
83 lines
2.1 KiB
Go
package services
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"cs-ai-agent/internal/models"
|
|
"cs-ai-agent/internal/pkg/dto"
|
|
"cs-ai-agent/internal/pkg/dto/request"
|
|
"cs-ai-agent/internal/pkg/enums"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/mlogclub/simple/sqls"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/schema"
|
|
)
|
|
|
|
func TestUpdateAIConfigKeepsAPIKeyWhenRequestAPIKeyBlank(t *testing.T) {
|
|
db := setupAIConfigServiceTestDB(t)
|
|
item := &models.AIConfig{
|
|
Name: "old",
|
|
Provider: enums.AIProviderOpenAI,
|
|
BaseURL: "https://old.example.com",
|
|
APIKey: "sk-existing",
|
|
ModelType: enums.AIModelTypeLLM,
|
|
ModelName: "old-model",
|
|
TimeoutMS: 30000,
|
|
AuditFields: models.AuditFields{CreatedAt: time.Now(), UpdatedAt: time.Now()},
|
|
}
|
|
if err := db.Create(item).Error; err != nil {
|
|
t.Fatalf("create ai config error = %v", err)
|
|
}
|
|
|
|
err := AIConfigService.UpdateAIConfig(request.UpdateAIConfigRequest{
|
|
ID: item.ID,
|
|
CreateAIConfigRequest: request.CreateAIConfigRequest{
|
|
Name: "new",
|
|
Provider: enums.AIProviderOpenAI,
|
|
BaseURL: "https://new.example.com",
|
|
APIKey: " ",
|
|
ModelType: enums.AIModelTypeLLM,
|
|
ModelName: "new-model",
|
|
TimeoutMS: 120000,
|
|
},
|
|
}, &dto.AuthPrincipal{UserID: 1, Username: "admin"})
|
|
if err != nil {
|
|
t.Fatalf("UpdateAIConfig() error = %v", err)
|
|
}
|
|
|
|
var updated models.AIConfig
|
|
if err := db.First(&updated, item.ID).Error; err != nil {
|
|
t.Fatalf("get updated ai config error = %v", err)
|
|
}
|
|
if updated.APIKey != "sk-existing" {
|
|
t.Fatalf("expected api key to be preserved, got %q", updated.APIKey)
|
|
}
|
|
}
|
|
|
|
func setupAIConfigServiceTestDB(t *testing.T) *gorm.DB {
|
|
t.Helper()
|
|
|
|
db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=shared"), &gorm.Config{
|
|
NamingStrategy: schema.NamingStrategy{
|
|
TablePrefix: "t_",
|
|
SingularTable: true,
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("open sqlite error = %v", err)
|
|
}
|
|
t.Cleanup(func() {
|
|
sqlDB, err := db.DB()
|
|
if err == nil {
|
|
_ = sqlDB.Close()
|
|
}
|
|
})
|
|
if err := db.AutoMigrate(&models.AIConfig{}); err != nil {
|
|
t.Fatalf("auto migrate error = %v", err)
|
|
}
|
|
sqls.SetDB(db)
|
|
return db
|
|
}
|