fix: reuse saved credential for connection test
This commit is contained in:
@@ -158,7 +158,11 @@ func (s *Service) TestConnection(ctx context.Context, req domain.SaveConfigReque
|
||||
if err := config.Validate(cfg); err != nil {
|
||||
return domain.TestConnectionResult{}, err
|
||||
}
|
||||
client, err := s.remoteMaker(ctx, cfg, requestSecret(req))
|
||||
secret, err := s.resolveSecret(req)
|
||||
if err != nil {
|
||||
return domain.TestConnectionResult{}, err
|
||||
}
|
||||
client, err := s.remoteMaker(ctx, cfg, secret)
|
||||
if err != nil {
|
||||
return domain.TestConnectionResult{}, err
|
||||
}
|
||||
@@ -471,6 +475,13 @@ func requestSecret(req domain.SaveConfigRequest) string {
|
||||
return req.Password
|
||||
}
|
||||
|
||||
func (s *Service) resolveSecret(req domain.SaveConfigRequest) (string, error) {
|
||||
if secret := requestSecret(req); secret != "" {
|
||||
return secret, nil
|
||||
}
|
||||
return s.secrets.Get(req.Config.Gitea.CredentialKey, credentialUser(req.Config))
|
||||
}
|
||||
|
||||
func credentialUser(cfg domain.Config) string {
|
||||
if cfg.Gitea.AuthType == config.AuthToken {
|
||||
return "token"
|
||||
|
||||
@@ -73,6 +73,24 @@ func TestListRemoteSkillsMergesDownloadedStatus(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestTestConnectionFallsBackToSavedSecret(t *testing.T) {
|
||||
svc, _, _, remote, _, _ := newTestService(t)
|
||||
saveValidConfig(t, svc)
|
||||
cfg, err := svc.LoadConfig()
|
||||
if err != nil {
|
||||
t.Fatalf("LoadConfig returned error: %v", err)
|
||||
}
|
||||
|
||||
_, err = svc.TestConnection(context.Background(), domain.SaveConfigRequest{Config: cfg})
|
||||
if err != nil {
|
||||
t.Fatalf("TestConnection returned error: %v", err)
|
||||
}
|
||||
|
||||
if remote.lastSecret != "secret" {
|
||||
t.Fatalf("remote maker got secret %q, want saved secret", remote.lastSecret)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstallSkillUpdatesStateAfterTargetInstall(t *testing.T) {
|
||||
svc, _, _, _, _, target := newTestService(t)
|
||||
saveValidConfig(t, svc)
|
||||
@@ -230,7 +248,10 @@ func newTestService(t *testing.T) (*Service, Paths, *fakeSecretStore, *fakeRemot
|
||||
Secrets: secrets,
|
||||
Git: git,
|
||||
Targets: target,
|
||||
RemoteMaker: func(context.Context, domain.Config, string) (RemoteClient, error) { return remote, nil },
|
||||
RemoteMaker: func(_ context.Context, _ domain.Config, secret string) (RemoteClient, error) {
|
||||
remote.lastSecret = secret
|
||||
return remote, nil
|
||||
},
|
||||
Opener: fakeOpener{},
|
||||
})
|
||||
return svc, paths, secrets, remote, git, target
|
||||
@@ -279,7 +300,8 @@ func (f *fakeSecretStore) Delete(service, user string) error {
|
||||
}
|
||||
|
||||
type fakeRemoteClient struct {
|
||||
skills []domain.RemoteSkill
|
||||
skills []domain.RemoteSkill
|
||||
lastSecret string
|
||||
}
|
||||
|
||||
func (f *fakeRemoteClient) ListOrgSkills(context.Context, string) ([]domain.RemoteSkill, error) {
|
||||
|
||||
Reference in New Issue
Block a user