mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-07 16:11:29 +00:00
8637131f80
Phase 13 verification surfaced gofmt-formatting drift in 6 files across the bundle's new code: - internal/api/handler/metrics.go (struct field alignment) - internal/connector/target/k8ssecret/validate_only_test.go (alignment) - internal/connector/target/nginx/nginx.go (alignment) - internal/connector/target/postfix/postfix.go (alignment) - internal/connector/target/ssh/validate_only_test.go (alignment) - internal/service/deploy_counters.go (alignment) Pure mechanical gofmt -w fixes; no behavior changes. CI's make verify gate (which runs `go fmt ./...`) didn't catch these because go fmt is more lenient than gofmt -l, but golangci-lint v2.11.4 + the explicit gofmt step in Phase 13 verification did. Phase 13 full-matrix verification all green: - gofmt -l: empty across all bundle-touched files - go vet ./internal/deploy/... ./internal/connector/target/... ./internal/service/ ./internal/api/handler/ ./cmd/agent/: clean - golangci-lint v2.11.4 (the version CI runs): 0 issues - go test -race -count=1 across deploy + nginx + apache + haproxy + agent + service: all green - INTEGRATION=1 go test -tags integration -run Deploy ./deploy/test/...: 4/4 e2e tests green Phase 14 next: release prep — Active Focus update, release notes, Reddit-beat draft, final tag handoff to operator.
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package ssh
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/shankar0123/certctl/internal/connector/target"
|
|
)
|
|
|
|
// Phase 9 of the deploy-hardening I master bundle: SSH ValidateOnly
|
|
// real implementation tests.
|
|
|
|
type stubSSHClient struct {
|
|
connectErr error
|
|
}
|
|
|
|
func (s *stubSSHClient) Connect(_ context.Context) error { return s.connectErr }
|
|
func (s *stubSSHClient) Close() error { return nil }
|
|
func (s *stubSSHClient) WriteFile(_ string, _ []byte, _ os.FileMode) error { return nil }
|
|
func (s *stubSSHClient) Execute(_ context.Context, _ string) (string, error) { return "", nil }
|
|
func (s *stubSSHClient) StatFile(_ string) (int64, error) { return 0, nil }
|
|
|
|
func TestSSH_ValidateOnly_Connect_Succeeds(t *testing.T) {
|
|
c := NewWithClient(&Config{Host: "h", User: "u"}, &stubSSHClient{}, nil)
|
|
if err := c.ValidateOnly(context.Background(), target.DeploymentRequest{}); err != nil {
|
|
t.Errorf("got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSSH_ValidateOnly_Connect_Fails(t *testing.T) {
|
|
c := NewWithClient(&Config{Host: "h", User: "u"}, &stubSSHClient{connectErr: errors.New("conn refused")}, nil)
|
|
err := c.ValidateOnly(context.Background(), target.DeploymentRequest{})
|
|
if err == nil {
|
|
t.Fatal("expected error")
|
|
}
|
|
if errors.Is(err, target.ErrValidateOnlyNotSupported) {
|
|
t.Error("got sentinel, want wrapped error")
|
|
}
|
|
}
|
|
|
|
func TestSSH_ValidateOnly_NilClient_Sentinel(t *testing.T) {
|
|
c := &Connector{config: &Config{Host: "h"}}
|
|
if err := c.ValidateOnly(context.Background(), target.DeploymentRequest{}); !errors.Is(err, target.ErrValidateOnlyNotSupported) {
|
|
t.Errorf("got %v", err)
|
|
}
|
|
}
|