/* Copyright (c) Edgeless Systems GmbH SPDX-License-Identifier: AGPL-3.0-only */ package upgrade import ( "context" "net" "os" "path/filepath" "testing" "github.com/edgelesssys/constellation/v2/internal/versions/components" "github.com/edgelesssys/constellation/v2/upgrade-agent/upgradeproto" "github.com/stretchr/testify/require" "google.golang.org/grpc" ) // TestGRPCDialer is a regression test to ensure the upgrade client can connect to a UDS. func TestGRPCDialer(t *testing.T) { require := require.New(t) dir := t.TempDir() sockAddr := filepath.Join(dir, "test.socket") upgradeAgent := &fakeUpgradeAgent{} grpcServer := grpc.NewServer() upgradeproto.RegisterUpdateServer(grpcServer, upgradeAgent) listener, err := net.Listen("unix", sockAddr) require.NoError(err) go grpcServer.Serve(listener) t.Cleanup(grpcServer.Stop) fileInfo, err := os.Stat(sockAddr) require.NoError(err) require.Equal(os.ModeSocket, fileInfo.Mode()&os.ModeType) upgradeClient := newClientWithAddress(sockAddr) require.NoError(upgradeClient.Upgrade(context.Background(), []*components.Component{}, "v1.29.6")) } type fakeUpgradeAgent struct { upgradeproto.UnimplementedUpdateServer } func (s *fakeUpgradeAgent) ExecuteUpdate(_ context.Context, _ *upgradeproto.ExecuteUpdateRequest) (*upgradeproto.ExecuteUpdateResponse, error) { return &upgradeproto.ExecuteUpdateResponse{}, nil }