mirror of https://github.com/portainer/portainer
92 lines
3.5 KiB
Go
92 lines
3.5 KiB
Go
package datastore
|
|
|
|
import (
|
|
"testing"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
"github.com/portainer/portainer/api/datastore/migrator"
|
|
"github.com/portainer/portainer/api/internal/authorization"
|
|
)
|
|
|
|
const dummyLogoURL = "example.com"
|
|
|
|
// initTestingDBConn creates a settings service with raw database DB connection
|
|
// for unit testing usage only since using NewStore will cause cycle import inside migrator pkg
|
|
func initTestingSettingsService(dbConn portainer.Connection, preSetObj map[string]interface{}) error {
|
|
//insert a obj
|
|
if err := dbConn.UpdateObject("settings", []byte("SETTINGS"), preSetObj); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func setup(store *Store) error {
|
|
var err error
|
|
dummySettingsObj := map[string]interface{}{
|
|
"LogoURL": dummyLogoURL,
|
|
}
|
|
err = initTestingSettingsService(store.connection, dummySettingsObj)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func TestMigrateSettings(t *testing.T) {
|
|
_, store, teardown := MustNewTestStore(false)
|
|
defer teardown()
|
|
|
|
err := setup(store)
|
|
if err != nil {
|
|
t.Errorf("failed to complete testing setups, err: %v", err)
|
|
}
|
|
|
|
updatedSettings, err := store.SettingsService.Settings()
|
|
// SO -basically, this test _isn't_ testing migration, its testing golang type defaults.
|
|
if updatedSettings.LogoURL != dummyLogoURL { // ensure a pre-migrate setting isn't unset
|
|
t.Errorf("unexpected value changes in the updated settings, want LogoURL value: %s, got LogoURL value: %s", dummyLogoURL, updatedSettings.LogoURL)
|
|
}
|
|
if updatedSettings.OAuthSettings.SSO != false { // I recon golang defaulting will make this false
|
|
t.Errorf("unexpected default OAuth SSO setting, want: false, got: %t", updatedSettings.OAuthSettings.SSO)
|
|
}
|
|
if updatedSettings.OAuthSettings.LogoutURI != "" {
|
|
t.Errorf("unexpected default OAuth HideInternalAuth setting, want:, got: %s", updatedSettings.OAuthSettings.LogoutURI)
|
|
}
|
|
|
|
m := migrator.NewMigrator(&migrator.MigratorParameters{
|
|
DatabaseVersion: 29,
|
|
EndpointGroupService: store.EndpointGroupService,
|
|
EndpointService: store.EndpointService,
|
|
EndpointRelationService: store.EndpointRelationService,
|
|
ExtensionService: store.ExtensionService,
|
|
RegistryService: store.RegistryService,
|
|
ResourceControlService: store.ResourceControlService,
|
|
RoleService: store.RoleService,
|
|
ScheduleService: store.ScheduleService,
|
|
SettingsService: store.SettingsService,
|
|
StackService: store.StackService,
|
|
TagService: store.TagService,
|
|
TeamMembershipService: store.TeamMembershipService,
|
|
UserService: store.UserService,
|
|
VersionService: store.VersionService,
|
|
FileService: store.fileService,
|
|
DockerhubService: store.DockerHubService,
|
|
AuthorizationService: authorization.NewService(store),
|
|
})
|
|
if err := m.MigrateSettingsToDB30(); err != nil {
|
|
t.Errorf("failed to update settings: %v", err)
|
|
}
|
|
if err != nil {
|
|
t.Errorf("failed to retrieve the updated settings: %v", err)
|
|
}
|
|
if updatedSettings.LogoURL != dummyLogoURL {
|
|
t.Errorf("unexpected value changes in the updated settings, want LogoURL value: %s, got LogoURL value: %s", dummyLogoURL, updatedSettings.LogoURL)
|
|
}
|
|
if updatedSettings.OAuthSettings.SSO != false {
|
|
t.Errorf("unexpected default OAuth SSO setting, want: false, got: %t", updatedSettings.OAuthSettings.SSO)
|
|
}
|
|
if updatedSettings.OAuthSettings.LogoutURI != "" {
|
|
t.Errorf("unexpected default OAuth HideInternalAuth setting, want:, got: %s", updatedSettings.OAuthSettings.LogoutURI)
|
|
}
|
|
}
|