|
|
|
|
@ -22,6 +22,7 @@ import ( |
|
|
|
|
"github.com/grafana/grafana/pkg/services/ssosettings" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/ssosettings/models" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/ssosettings/ssosettingstests" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/user" |
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
@ -796,7 +797,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
wg.Add(1) |
|
|
|
|
|
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings).Return(nil) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings, mock.Anything).Return(nil) |
|
|
|
|
reloadable.On("Reload", mock.Anything, mock.MatchedBy(func(settings models.SSOSettings) bool { |
|
|
|
|
defer wg.Done() |
|
|
|
|
return settings.Provider == provider && |
|
|
|
|
@ -830,7 +831,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
}, |
|
|
|
|
}, nil |
|
|
|
|
} |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings, &user.SignedInUser{}) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
// Wait for the goroutine first to assert the Reload call
|
|
|
|
|
@ -859,7 +860,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
env.reloadables[provider] = reloadable |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), settings, &user.SignedInUser{}) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -883,7 +884,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
// the reloadable is available for other provider
|
|
|
|
|
env.reloadables["github"] = reloadable |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), settings, &user.SignedInUser{}) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -904,10 +905,10 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings).Return(errors.New("validation failed")) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings, mock.Anything).Return(errors.New("validation failed")) |
|
|
|
|
env.reloadables[provider] = reloadable |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), &settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings, &user.SignedInUser{}) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -928,7 +929,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
|
|
|
|
|
env.fallbackStrategy.ExpectedIsMatch = false |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), settings, &user.SignedInUser{}) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -949,11 +950,11 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings).Return(nil) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings, mock.Anything).Return(nil) |
|
|
|
|
env.reloadables[provider] = reloadable |
|
|
|
|
env.secrets.On("Encrypt", mock.Anything, []byte(settings.Settings["client_secret"].(string)), mock.Anything).Return(nil, errors.New("encryption failed")).Once() |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), &settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings, &user.SignedInUser{}) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -981,13 +982,13 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings).Return(nil) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings, mock.Anything).Return(nil) |
|
|
|
|
reloadable.On("Reload", mock.Anything, mock.Anything).Return(nil).Maybe() |
|
|
|
|
env.reloadables[provider] = reloadable |
|
|
|
|
env.secrets.On("Decrypt", mock.Anything, []byte("current-client-secret"), mock.Anything).Return([]byte("encrypted-client-secret"), nil).Once() |
|
|
|
|
env.secrets.On("Encrypt", mock.Anything, []byte("encrypted-client-secret"), mock.Anything).Return([]byte("current-client-secret"), nil).Once() |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), &settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings, &user.SignedInUser{}) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
settings.Settings["client_secret"] = base64.RawStdEncoding.EncodeToString([]byte("current-client-secret")) |
|
|
|
|
@ -1011,7 +1012,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings).Return(nil) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings, mock.Anything).Return(nil) |
|
|
|
|
env.reloadables[provider] = reloadable |
|
|
|
|
env.secrets.On("Encrypt", mock.Anything, []byte(settings.Settings["client_secret"].(string)), mock.Anything).Return([]byte("encrypted-client-secret"), nil).Once() |
|
|
|
|
env.store.GetFn = func(ctx context.Context, provider string) (*models.SSOSettings, error) { |
|
|
|
|
@ -1022,7 +1023,7 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
return errors.New("failed to upsert settings") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), &settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings, &user.SignedInUser{}) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -1043,12 +1044,12 @@ func TestService_Upsert(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reloadable := ssosettingstests.NewMockReloadable(t) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings).Return(nil) |
|
|
|
|
reloadable.On("Validate", mock.Anything, settings, mock.Anything).Return(nil) |
|
|
|
|
reloadable.On("Reload", mock.Anything, mock.Anything).Return(errors.New("failed reloading new settings")).Maybe() |
|
|
|
|
env.reloadables[provider] = reloadable |
|
|
|
|
env.secrets.On("Encrypt", mock.Anything, []byte(settings.Settings["client_secret"].(string)), mock.Anything).Return([]byte("encrypted-client-secret"), nil).Once() |
|
|
|
|
|
|
|
|
|
err := env.service.Upsert(context.Background(), &settings) |
|
|
|
|
err := env.service.Upsert(context.Background(), &settings, &user.SignedInUser{}) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
settings.Settings["client_secret"] = base64.RawStdEncoding.EncodeToString([]byte("encrypted-client-secret")) |
|
|
|
|
|