diff --git a/.vscode/launch.json b/.vscode/launch.json index b399bdf7d..28f0f177a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "type": "go", "request": "launch", "mode": "auto", - "program": "${workspaceFolder}/cmd/app/main.go", + "program": "${workspaceFolder}/cmd/app/", "envFile": "${workspaceFolder}/.env", "cwd": "${workspaceFolder}" } diff --git a/internal/controller/httpapi/v1/error.go b/internal/controller/httpapi/v1/error.go index 2d3d9cb04..b336b6044 100644 --- a/internal/controller/httpapi/v1/error.go +++ b/internal/controller/httpapi/v1/error.go @@ -23,6 +23,7 @@ type response struct { func ErrorResponse(c *gin.Context, err error) { var ( validatorErr validator.ValidationErrors + cancelledError dto.CanceledError nfErr sqldb.NotFoundError notValidErr dto.NotValidError dbErr sqldb.DatabaseError @@ -38,6 +39,8 @@ func ErrorResponse(c *gin.Context, err error) { switch { case errors.As(err, &netErr): netErrorHandle(c, netErr) + case errors.As(err, &cancelledError): + cancelledErrorHandle(c, cancelledError) case errors.As(err, ¬ValidErr): notValidErrorHandle(c, notValidErr) case errors.As(err, &validatorErr): @@ -71,6 +74,10 @@ func netErrorHandle(c *gin.Context, netErr net.Error) { msg := netErr.Error() c.AbortWithStatusJSON(http.StatusGatewayTimeout, response{Error: msg, Message: msg}) } +func cancelledErrorHandle(c *gin.Context, cancelError dto.CanceledError) { + msg := cancelError.Error() + c.AbortWithStatusJSON(http.StatusBadRequest, response{Error: msg, Message: msg}) +} func notValidErrorHandle(c *gin.Context, err dto.NotValidError) { msg := err.Console.FriendlyMessage() diff --git a/internal/entity/dto/v1/canceled.go b/internal/entity/dto/v1/canceled.go new file mode 100644 index 000000000..49cf46811 --- /dev/null +++ b/internal/entity/dto/v1/canceled.go @@ -0,0 +1,20 @@ +package dto + +import ( + "github.com/device-management-toolkit/console/pkg/consoleerrors" +) + +type CanceledError struct { + Console consoleerrors.InternalError +} + +func (e CanceledError) Error() string { + return e.Console.Error() +} + +func (e CanceledError) Wrap(function, call string, err error) error { + _ = e.Console.Wrap(function, call, err) + e.Console.Message = "Canceled: " + err.Error() + + return e +} diff --git a/internal/mocks/devicemanagement_mocks.go b/internal/mocks/devicemanagement_mocks.go index 11a564515..1487437ac 100644 --- a/internal/mocks/devicemanagement_mocks.go +++ b/internal/mocks/devicemanagement_mocks.go @@ -61,18 +61,18 @@ func (mr *MockWSMANMockRecorder) DestroyWsmanClient(device any) *gomock.Call { } // SetupWsmanClient mocks base method. -func (m *MockWSMAN) SetupWsmanClient(device entity.Device, isRedirection, logMessages bool) (wsman.Management, error) { +func (m *MockWSMAN) SetupWsmanClient(ctx context.Context, device entity.Device, isRedirection, logMessages bool) (wsman.Management, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetupWsmanClient", device, isRedirection, logMessages) + ret := m.ctrl.Call(m, "SetupWsmanClient", ctx, device, isRedirection, logMessages) ret0, _ := ret[0].(wsman.Management) ret1, _ := ret[1].(error) return ret0, ret1 } // SetupWsmanClient indicates an expected call of SetupWsmanClient. -func (mr *MockWSMANMockRecorder) SetupWsmanClient(device, isRedirection, logMessages any) *gomock.Call { +func (mr *MockWSMANMockRecorder) SetupWsmanClient(ctx, device, isRedirection, logMessages any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetupWsmanClient", reflect.TypeOf((*MockWSMAN)(nil).SetupWsmanClient), device, isRedirection, logMessages) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetupWsmanClient", reflect.TypeOf((*MockWSMAN)(nil).SetupWsmanClient), ctx, device, isRedirection, logMessages) } // Worker mocks base method. diff --git a/internal/usecase/devices/alarms.go b/internal/usecase/devices/alarms.go index c555a0506..37e92a7f9 100644 --- a/internal/usecase/devices/alarms.go +++ b/internal/usecase/devices/alarms.go @@ -22,12 +22,11 @@ func (uc *UseCase) GetAlarmOccurrences(c context.Context, guid string) ([]dto.Al if err != nil { return nil, err } - if item == nil || item.GUID == "" { return nil, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return nil, err } @@ -64,7 +63,7 @@ func (uc *UseCase) CreateAlarmOccurrences(c context.Context, guid string, alarm alarm.InstanceID = alarm.ElementName - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.AddAlarmOutput{}, err } @@ -89,7 +88,7 @@ func (uc *UseCase) DeleteAlarmOccurrences(c context.Context, guid, instanceID st return ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return err } diff --git a/internal/usecase/devices/alarms_test.go b/internal/usecase/devices/alarms_test.go index 1f9eb10ff..a6e22f0f8 100644 --- a/internal/usecase/devices/alarms_test.go +++ b/internal/usecase/devices/alarms_test.go @@ -54,7 +54,7 @@ func TestGetAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(*device, false, true). + SetupWsmanClient(gomock.Any(), *device, false, true). Return(hmm, nil) hmm.EXPECT(). GetAlarmOccurrences(). @@ -84,7 +84,7 @@ func TestGetAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetAlarmOccurrences(). @@ -103,7 +103,7 @@ func TestGetAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(*device, false, true). + SetupWsmanClient(gomock.Any(), *device, false, true). Return(hmm, nil) hmm.EXPECT(). GetAlarmOccurrences(). @@ -176,7 +176,7 @@ func TestCreateAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(*device, false, true). + SetupWsmanClient(gomock.Any(), *device, false, true). Return(man2, nil) man2.EXPECT(). CreateAlarmOccurrences(occ.InstanceID, occ.StartTime, 1, occ.DeleteOnCompletion). @@ -206,7 +206,7 @@ func TestCreateAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(*device, false, true). + SetupWsmanClient(gomock.Any(), *device, false, true). Return(man2, nil) man2.EXPECT(). CreateAlarmOccurrences(occ.InstanceID, occ.StartTime, 1, occ.DeleteOnCompletion). @@ -267,7 +267,7 @@ func TestDeleteAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(*device, false, true). + SetupWsmanClient(gomock.Any(), *device, false, true). Return(man2, nil) man2.EXPECT(). DeleteAlarmOccurrences(""). @@ -295,7 +295,7 @@ func TestDeleteAlarmOccurrences(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(*device, false, true). + SetupWsmanClient(gomock.Any(), *device, false, true). Return(man2, nil) man2.EXPECT(). DeleteAlarmOccurrences(""). diff --git a/internal/usecase/devices/certificates.go b/internal/usecase/devices/certificates.go index 098f1bca8..aaa72334a 100644 --- a/internal/usecase/devices/certificates.go +++ b/internal/usecase/devices/certificates.go @@ -169,7 +169,7 @@ func (uc *UseCase) GetCertificates(c context.Context, guid string) (dto.Security return dto.SecuritySettings{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.SecuritySettings{}, err } @@ -266,7 +266,7 @@ func (uc *UseCase) GetDeviceCertificate(c context.Context, guid string) (dto.Cer return dto.Certificate{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.Certificate{}, err } @@ -376,7 +376,7 @@ func (uc *UseCase) AddCertificate(c context.Context, guid string, certInfo dto.C cleanedCert := strings.ReplaceAll(base64.StdEncoding.EncodeToString(block.Bytes), "\r\n", "") - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return "", err } @@ -442,7 +442,7 @@ func (uc *UseCase) DeleteCertificate(c context.Context, guid, instanceID string) } // If the certificate is not associated with any profiles and is not read-only, proceed with deletion - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return err } diff --git a/internal/usecase/devices/certificates_test.go b/internal/usecase/devices/certificates_test.go index 4397e2f18..f0ec517cd 100644 --- a/internal/usecase/devices/certificates_test.go +++ b/internal/usecase/devices/certificates_test.go @@ -54,7 +54,7 @@ func TestGetCertificates(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetCertificates(). @@ -82,7 +82,7 @@ func TestGetCertificates(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetCertificates(). @@ -198,7 +198,7 @@ func TestGetCertificates(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetCertificates(). @@ -293,7 +293,7 @@ func TestAddCertificate(t *testing.T) { }, mock: func(m *mocks.MockWSMAN, man *mocks.MockManagement) { m.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man, nil) man.EXPECT(). AddTrustedRootCert(gomock.Any()). @@ -388,7 +388,7 @@ func TestDeleteCertificate(t *testing.T) { repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates }, mockWsman: func(wsmanMock *mocks.MockWSMAN, management *mocks.MockManagement) { - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil) management.EXPECT().GetCertificates().Return(wsman.Certificates{}, errors.New("wsman error")) }, err: errors.New("wsman error"), @@ -400,7 +400,7 @@ func TestDeleteCertificate(t *testing.T) { repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates }, mockWsman: func(wsmanMock *mocks.MockWSMAN, management *mocks.MockManagement) { - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil) // Return empty certificates response management.EXPECT().GetCertificates().Return(wsman.Certificates{}, nil) }, @@ -413,7 +413,7 @@ func TestDeleteCertificate(t *testing.T) { repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates }, mockWsman: func(wsmanMock *mocks.MockWSMAN, management *mocks.MockManagement) { - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil) // Return certificate with associated profiles certificates := wsman.Certificates{ PublicKeyCertificateResponse: publickey.RefinedPullResponse{ @@ -440,7 +440,7 @@ func TestDeleteCertificate(t *testing.T) { repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates }, mockWsman: func(wsmanMock *mocks.MockWSMAN, management *mocks.MockManagement) { - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil) // Return read-only certificate certificates := wsman.Certificates{ PublicKeyCertificateResponse: publickey.RefinedPullResponse{ @@ -467,7 +467,7 @@ func TestDeleteCertificate(t *testing.T) { repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates }, mockWsman: func(wsmanMock *mocks.MockWSMAN, management *mocks.MockManagement) { - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil).Times(2) // Called twice: once for GetCertificates, once for DeleteCertificate + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil).Times(2) // Called twice: once for GetCertificates, once for DeleteCertificate // Return valid certificate that can be deleted certificates := wsman.Certificates{ PublicKeyCertificateResponse: publickey.RefinedPullResponse{ @@ -495,7 +495,7 @@ func TestDeleteCertificate(t *testing.T) { repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates }, mockWsman: func(wsmanMock *mocks.MockWSMAN, management *mocks.MockManagement) { - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil).Times(2) // Called twice: once for GetCertificates, once for DeleteCertificate + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil).Times(2) // Called twice: once for GetCertificates, once for DeleteCertificate // Return valid certificate that can be deleted certificates := wsman.Certificates{ PublicKeyCertificateResponse: publickey.RefinedPullResponse{ @@ -567,7 +567,7 @@ func TestDeleteCertificate_Integration(t *testing.T) { useCase, wsmanMock, management, repo := initCertificateTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil).Times(2) // Called twice: once by DeleteCertificate, once by GetCertificates - wsmanMock.EXPECT().SetupWsmanClient(*device, false, true).Return(management, nil).Times(2) // Called twice: once for GetCertificates, once for DeleteCertificate setup + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), *device, false, true).Return(management, nil).Times(2) // Called twice: once for GetCertificates, once for DeleteCertificate setup // Mock GetCertificates to return a certificate that can be deleted certificates := wsman.Certificates{ diff --git a/internal/usecase/devices/connections.go b/internal/usecase/devices/connections.go index 0c95a99f8..43ecf5100 100644 --- a/internal/usecase/devices/connections.go +++ b/internal/usecase/devices/connections.go @@ -18,7 +18,7 @@ func (uc *UseCase) GetTLSSettingData(c context.Context, guid string) ([]dto.Sett return nil, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return nil, err } diff --git a/internal/usecase/devices/connections_test.go b/internal/usecase/devices/connections_test.go index 7cae15919..b2a914b8d 100644 --- a/internal/usecase/devices/connections_test.go +++ b/internal/usecase/devices/connections_test.go @@ -47,7 +47,7 @@ func TestGetTLSSettings(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetTLSSettingData(). @@ -98,7 +98,7 @@ func TestGetTLSSettings(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetTLSSettingData(). diff --git a/internal/usecase/devices/consent.go b/internal/usecase/devices/consent.go index e55a36315..d4f3caffa 100644 --- a/internal/usecase/devices/consent.go +++ b/internal/usecase/devices/consent.go @@ -17,7 +17,7 @@ func (uc *UseCase) CancelUserConsent(c context.Context, guid string) (dto.UserCo return dto.UserConsentMessage{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.UserConsentMessage{}, err } @@ -57,7 +57,7 @@ func (uc *UseCase) GetUserConsentCode(c context.Context, guid string) (dto.UserC return dto.UserConsentMessage{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.UserConsentMessage{}, err } @@ -97,7 +97,7 @@ func (uc *UseCase) SendConsentCode(c context.Context, userConsent dto.UserConsen return dto.UserConsentMessage{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.UserConsentMessage{}, err } diff --git a/internal/usecase/devices/consent_test.go b/internal/usecase/devices/consent_test.go index 54c9fc56e..5515e334d 100644 --- a/internal/usecase/devices/consent_test.go +++ b/internal/usecase/devices/consent_test.go @@ -67,7 +67,7 @@ func TestCancelUserConsent(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). CancelUserConsentRequest(). @@ -102,7 +102,7 @@ func TestCancelUserConsent(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). CancelUserConsentRequest(). @@ -178,7 +178,7 @@ func TestGetUserConsentCode(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetUserConsentCode(). @@ -211,7 +211,7 @@ func TestGetUserConsentCode(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetUserConsentCode(). @@ -282,7 +282,7 @@ func TestSendConsentCode(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). SendConsentCode(123456). @@ -315,7 +315,7 @@ func TestSendConsentCode(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). SendConsentCode(123456). diff --git a/internal/usecase/devices/features.go b/internal/usecase/devices/features.go index ba572058f..83207c08c 100644 --- a/internal/usecase/devices/features.go +++ b/internal/usecase/devices/features.go @@ -50,7 +50,7 @@ func (uc *UseCase) GetFeatures(c context.Context, guid string) (settingsResults return settingsResults, settingsResultsV2, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.Features{}, dtov2.Features{}, err } @@ -192,7 +192,7 @@ func (uc *UseCase) SetFeatures(c context.Context, guid string, features dto.Feat return settingsResults, settingsResultsV2, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return settingsResults, settingsResultsV2, err } diff --git a/internal/usecase/devices/features_test.go b/internal/usecase/devices/features_test.go index 3c2143259..0dbb0212f 100644 --- a/internal/usecase/devices/features_test.go +++ b/internal/usecase/devices/features_test.go @@ -151,7 +151,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -232,7 +232,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -338,7 +338,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -429,7 +429,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -449,7 +449,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -487,7 +487,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -539,7 +539,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -588,7 +588,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -637,7 +637,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -691,7 +691,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -761,7 +761,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -838,7 +838,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -913,7 +913,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -1011,7 +1011,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -1111,7 +1111,7 @@ func TestGetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTRedirectionService(). @@ -1284,7 +1284,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1395,7 +1395,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1508,7 +1508,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1528,7 +1528,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1549,7 +1549,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1671,7 +1671,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1706,7 +1706,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1766,7 +1766,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1844,7 +1844,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1912,7 +1912,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). @@ -1960,7 +1960,7 @@ func TestSetFeatures(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). RequestAMTRedirectionServiceStateChange(true, true). diff --git a/internal/usecase/devices/info.go b/internal/usecase/devices/info.go index 203d78842..59b52cbef 100644 --- a/internal/usecase/devices/info.go +++ b/internal/usecase/devices/info.go @@ -22,7 +22,7 @@ func (uc *UseCase) GetVersion(c context.Context, guid string) (v1 dto.Version, v return v1, v2, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return v1, v2, err } @@ -73,7 +73,7 @@ func (uc *UseCase) GetHardwareInfo(c context.Context, guid string) (dto.Hardware return dto.HardwareInfo{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.HardwareInfo{}, err } @@ -112,7 +112,7 @@ func (uc *UseCase) GetDiskInfo(c context.Context, guid string) (dto.DiskInfo, er return dto.DiskInfo{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.DiskInfo{}, err } @@ -142,7 +142,7 @@ func (uc *UseCase) GetAuditLog(c context.Context, startIndex int, guid string) ( return dto.AuditLog{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.AuditLog{}, err } @@ -169,7 +169,7 @@ func (uc *UseCase) GetEventLog(c context.Context, startIndex, maxReadRecords int return dto.EventLogs{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.EventLogs{}, err } @@ -223,7 +223,7 @@ func (uc *UseCase) GetGeneralSettings(c context.Context, guid string) (dto.Gener return dto.GeneralSettings{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.GeneralSettings{}, err } diff --git a/internal/usecase/devices/info_test.go b/internal/usecase/devices/info_test.go index 4ea01f1ff..73bc74053 100644 --- a/internal/usecase/devices/info_test.go +++ b/internal/usecase/devices/info_test.go @@ -94,7 +94,7 @@ func TestGetVersion(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTVersion(). @@ -181,7 +181,7 @@ func TestGetVersion(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTVersion(). @@ -202,7 +202,7 @@ func TestGetVersion(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAMTVersion(). @@ -276,7 +276,7 @@ func TestGetHardwareInfo(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetHardwareInfo(). @@ -302,7 +302,7 @@ func TestGetHardwareInfo(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetHardwareInfo(). @@ -364,7 +364,7 @@ func TestGetHardwareInfo(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetHardwareInfo(). @@ -413,7 +413,7 @@ func TestGetAuditLog(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAuditLog(1). @@ -447,7 +447,7 @@ func TestGetAuditLog(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetAuditLog(1). @@ -496,7 +496,7 @@ func TestGetEventLog(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetEventLog(1, 10). @@ -527,7 +527,7 @@ func TestGetEventLog(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetEventLog(1, 10). @@ -576,7 +576,7 @@ func TestGetGeneralSettings(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetGeneralSettings(). @@ -607,7 +607,7 @@ func TestGetGeneralSettings(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetGeneralSettings(). @@ -657,7 +657,7 @@ func TestGetDiskInfo(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetDiskInfo(). @@ -679,7 +679,7 @@ func TestGetDiskInfo(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetDiskInfo(). @@ -758,7 +758,7 @@ func TestGetDiskInfo(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetDiskInfo(). diff --git a/internal/usecase/devices/interfaces.go b/internal/usecase/devices/interfaces.go index 1fe76e625..576dd4fdb 100644 --- a/internal/usecase/devices/interfaces.go +++ b/internal/usecase/devices/interfaces.go @@ -16,7 +16,7 @@ import ( type ( WSMAN interface { - SetupWsmanClient(device entity.Device, isRedirection, logMessages bool) (wsmanAPI.Management, error) + SetupWsmanClient(ctx context.Context, device entity.Device, isRedirection, logMessages bool) (wsmanAPI.Management, error) DestroyWsmanClient(device dto.Device) Worker() } diff --git a/internal/usecase/devices/kvm.go b/internal/usecase/devices/kvm.go index bc8265152..4e5d3204d 100644 --- a/internal/usecase/devices/kvm.go +++ b/internal/usecase/devices/kvm.go @@ -22,7 +22,7 @@ func (uc *UseCase) GetKVMScreenSettings(c context.Context, guid string) (dto.KVM return dto.KVMScreenSettings{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.KVMScreenSettings{}, err } @@ -83,7 +83,7 @@ func (uc *UseCase) SetKVMScreenSettings(c context.Context, guid string, reqData return dto.KVMScreenSettings{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.KVMScreenSettings{}, err } diff --git a/internal/usecase/devices/kvm_test.go b/internal/usecase/devices/kvm_test.go index 8cdee9ea4..0c235eaf5 100644 --- a/internal/usecase/devices/kvm_test.go +++ b/internal/usecase/devices/kvm_test.go @@ -41,7 +41,7 @@ func TestGetKVMScreenSettings(t *testing.T) { device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) // Respond with a minimal struct; not validating shape here management.EXPECT().GetIPSScreenSettingData().Return(screensetting.Response{}, nil) // Implementation also reads KVM redirection settings to determine default screen @@ -58,7 +58,7 @@ func TestSetKVMScreenSettings_Success(t *testing.T) { device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) // Mock the KVM redirection settings calls with proper response kvmResp := kvmredirection.Response{} @@ -74,7 +74,7 @@ func TestSetKVMScreenSettings_Success(t *testing.T) { // Mock the subsequent call to GetKVMScreenSettings repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) // GetKVMScreenSettings will call both ScreenSettingData and KVMRedirectionSettingData management.EXPECT().GetIPSScreenSettingData().Return(screensetting.Response{}, nil) management.EXPECT().GetIPSKVMRedirectionSettingData().Return(kvmredirection.Response{}, nil) @@ -90,7 +90,7 @@ func TestGetKVMScreenSettings_DisplaysMapping(t *testing.T) { device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) resp := screensetting.Response{} resp.Body.PullResponse.ScreenSettingDataItems = []screensetting.ScreenSettingDataResponse{ @@ -130,7 +130,7 @@ func TestGetKVMScreenSettings_RoleAssignmentOnlyForActiveDisplays(t *testing.T) device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) // Test case where tertiary and quaternary indices are 0 (not assigned) resp := screensetting.Response{} @@ -208,7 +208,7 @@ func TestGetKVMScreenSettings_ErrorCases(t *testing.T) { device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) management.EXPECT().GetIPSScreenSettingData().Return(screensetting.Response{}, errors.New("wsman error")) _, err := useCase.GetKVMScreenSettings(context.Background(), device.GUID) @@ -246,7 +246,7 @@ func TestSetKVMScreenSettings_ErrorCases(t *testing.T) { device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) management.EXPECT().GetIPSKVMRedirectionSettingData().Return(kvmredirection.Response{}, errors.New("redirection error")) _, err := useCase.SetKVMScreenSettings(context.Background(), device.GUID, dto.KVMScreenSettingsRequest{}) @@ -260,7 +260,7 @@ func TestSetKVMScreenSettings_ErrorCases(t *testing.T) { device := &entity.Device{GUID: "guid", TenantID: "tenant"} useCase, wsmanMock, management, repo := initKVMScreenTest(t) repo.EXPECT().GetByID(context.Background(), device.GUID, "").Return(device, nil) - wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(management, nil) + wsmanMock.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(management, nil) kvmResp := kvmredirection.Response{} kvmResp.Body.PullResponse.KVMRedirectionSettingsItems = []kvmredirection.KVMRedirectionSettingsResponse{{}} diff --git a/internal/usecase/devices/linkpreference.go b/internal/usecase/devices/linkpreference.go index f089a453d..c5f8af926 100644 --- a/internal/usecase/devices/linkpreference.go +++ b/internal/usecase/devices/linkpreference.go @@ -29,7 +29,7 @@ func (uc *UseCase) SetLinkPreference(c context.Context, guid string, req dto.Lin return dto.LinkPreferenceResponse{}, ErrValidationUseCase.Wrap("SetLinkPreference", "validate timeout", "timeout max value is 65535") } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.LinkPreferenceResponse{}, err } diff --git a/internal/usecase/devices/linkpreference_test.go b/internal/usecase/devices/linkpreference_test.go index cde718118..c50c87ec3 100644 --- a/internal/usecase/devices/linkpreference_test.go +++ b/internal/usecase/devices/linkpreference_test.go @@ -60,7 +60,7 @@ func TestSetLinkPreference(t *testing.T) { request: request, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(wsman.Management(man2), nil) man2.EXPECT(). SetLinkPreference(uint32(1), uint32(300)). @@ -82,7 +82,7 @@ func TestSetLinkPreference(t *testing.T) { }, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(wsman.Management(man2), nil) man2.EXPECT(). SetLinkPreference(uint32(2), uint32(60)). @@ -113,7 +113,7 @@ func TestSetLinkPreference(t *testing.T) { request: request, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). SetLinkPreference(uint32(1), uint32(300)). @@ -132,7 +132,7 @@ func TestSetLinkPreference(t *testing.T) { request: request, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). SetLinkPreference(uint32(1), uint32(300)). @@ -151,7 +151,7 @@ func TestSetLinkPreference(t *testing.T) { request: request, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). SetLinkPreference(uint32(1), uint32(300)). diff --git a/internal/usecase/devices/network.go b/internal/usecase/devices/network.go index 068232d20..47fe969ee 100644 --- a/internal/usecase/devices/network.go +++ b/internal/usecase/devices/network.go @@ -20,7 +20,7 @@ func (uc *UseCase) GetNetworkSettings(c context.Context, guid string) (dto.Netwo return dto.NetworkSettings{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.NetworkSettings{}, err } diff --git a/internal/usecase/devices/network_test.go b/internal/usecase/devices/network_test.go index f8215d1c8..eba0a04cc 100644 --- a/internal/usecase/devices/network_test.go +++ b/internal/usecase/devices/network_test.go @@ -51,7 +51,7 @@ func TestGetNetworkSettings(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetNetworkSettings(). @@ -152,7 +152,7 @@ func TestGetNetworkSettings(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(man2, nil) man2.EXPECT(). GetNetworkSettings(). diff --git a/internal/usecase/devices/power.go b/internal/usecase/devices/power.go index a7f447a03..415a2ab21 100644 --- a/internal/usecase/devices/power.go +++ b/internal/usecase/devices/power.go @@ -53,7 +53,7 @@ func (uc *UseCase) SendPowerAction(c context.Context, guid string, action int) ( return power.PowerActionResponse{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return power.PowerActionResponse{}, err } @@ -131,7 +131,7 @@ func (uc *UseCase) GetPowerState(c context.Context, guid string) (dto.PowerState return dto.PowerState{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.PowerState{}, err } @@ -165,7 +165,7 @@ func (uc *UseCase) GetPowerCapabilities(c context.Context, guid string) (dto.Pow return dto.PowerCapabilities{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return dto.PowerCapabilities{}, err } @@ -285,7 +285,7 @@ func (uc *UseCase) SetBootOptions(c context.Context, guid string, bootSetting dt return power.PowerActionResponse{}, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return power.PowerActionResponse{}, err } @@ -598,7 +598,7 @@ func (uc *UseCase) GetBootSourceSetting(c context.Context, guid string) ([]dto.B return nil, ErrNotFound } - device, err := uc.device.SetupWsmanClient(*item, false, true) + device, err := uc.device.SetupWsmanClient(c, *item, false, true) if err != nil { return nil, err } diff --git a/internal/usecase/devices/power_test.go b/internal/usecase/devices/power_test.go index 93945914c..f4ece34e3 100644 --- a/internal/usecase/devices/power_test.go +++ b/internal/usecase/devices/power_test.go @@ -77,7 +77,7 @@ func TestSendPowerAction(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). SendPowerAction(0). @@ -96,7 +96,7 @@ func TestSendPowerAction(t *testing.T) { action: 2, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetOSPowerSavingState(). @@ -121,7 +121,7 @@ func TestSendPowerAction(t *testing.T) { action: 500, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetOSPowerSavingState(). @@ -143,7 +143,7 @@ func TestSendPowerAction(t *testing.T) { action: 501, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetOSPowerSavingState(). @@ -177,7 +177,7 @@ func TestSendPowerAction(t *testing.T) { action: 0, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). SendPowerAction(0). @@ -196,7 +196,7 @@ func TestSendPowerAction(t *testing.T) { action: 2, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). SendPowerAction(2). @@ -221,7 +221,7 @@ func TestSendPowerAction(t *testing.T) { action: 500, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetOSPowerSavingState(). @@ -243,7 +243,7 @@ func TestSendPowerAction(t *testing.T) { action: 501, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetOSPowerSavingState(). @@ -296,7 +296,7 @@ func TestGetPowerState(t *testing.T) { name: "success", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetPowerState(). @@ -331,7 +331,7 @@ func TestGetPowerState(t *testing.T) { name: "GetPowerState fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetPowerState(). @@ -349,7 +349,7 @@ func TestGetPowerState(t *testing.T) { name: "GetOSPowerSavingState fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetPowerState(). @@ -402,7 +402,7 @@ func TestGetPowerCapabilities(t *testing.T) { name: "success", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetAMTVersion(). @@ -445,7 +445,7 @@ func TestGetPowerCapabilities(t *testing.T) { name: "GetPowerCapabilities fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetPowerCapabilities(). @@ -536,7 +536,7 @@ func TestSetBootOptions(t *testing.T) { name: "success", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -580,7 +580,7 @@ func TestSetBootOptions(t *testing.T) { name: "GetBootData fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -598,7 +598,7 @@ func TestSetBootOptions(t *testing.T) { name: "First ChangeBootOrder fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -619,7 +619,7 @@ func TestSetBootOptions(t *testing.T) { name: "SetBootData fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -643,7 +643,7 @@ func TestSetBootOptions(t *testing.T) { name: "SetBootConfigRole fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -670,7 +670,7 @@ func TestSetBootOptions(t *testing.T) { name: "Second ChangeBootOrder fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -700,7 +700,7 @@ func TestSetBootOptions(t *testing.T) { name: "SendPowerAction fails", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -787,7 +787,7 @@ func TestSetBootOptions_CCMRestriction(t *testing.T) { }, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetSetupAndConfiguration(). @@ -813,7 +813,7 @@ func TestSetBootOptions_CCMRestriction(t *testing.T) { }, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetSetupAndConfiguration(). @@ -857,7 +857,7 @@ func TestSetBootOptions_CCMRestriction(t *testing.T) { }, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -896,7 +896,7 @@ func TestSetBootOptions_CCMRestriction(t *testing.T) { }, manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { man.EXPECT(). - SetupWsmanClient(gomock.Any(), false, true). + SetupWsmanClient(gomock.Any(), gomock.Any(), false, true). Return(hmm, nil) hmm.EXPECT(). GetBootData(). @@ -997,7 +997,7 @@ func TestGetBootSourceSetting(t *testing.T) { { name: "success", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { - man.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(hmm, nil) + man.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(hmm, nil) hmm.EXPECT().GetCIMBootSourceSetting().Return(settingsResponse, nil) }, repoMock: func(repo *mocks.MockDeviceManagementRepository) { @@ -1018,7 +1018,7 @@ func TestGetBootSourceSetting(t *testing.T) { { name: "GetCIMBootSourceSetting error", manMock: func(man *mocks.MockWSMAN, hmm *mocks.MockManagement) { - man.EXPECT().SetupWsmanClient(gomock.Any(), false, true).Return(hmm, nil) + man.EXPECT().SetupWsmanClient(gomock.Any(), gomock.Any(), false, true).Return(hmm, nil) hmm.EXPECT().GetCIMBootSourceSetting().Return(settingsResponse, ErrGeneral) }, repoMock: func(repo *mocks.MockDeviceManagementRepository) { diff --git a/internal/usecase/devices/repo.go b/internal/usecase/devices/repo.go index c0844314c..503816adf 100644 --- a/internal/usecase/devices/repo.go +++ b/internal/usecase/devices/repo.go @@ -14,9 +14,11 @@ import ( ) var ( + ErrDomainsUseCase = consoleerrors.CreateConsoleError("DevicesUseCase") + ErrDatabase = sqldb.DatabaseError{Console: consoleerrors.CreateConsoleError("DevicesUseCase")} + ErrNotFound = sqldb.NotFoundError{Console: consoleerrors.CreateConsoleError("DevicesUseCase")} + ErrCancelled = dto.CanceledError{Console: consoleerrors.CreateConsoleError("DevicesUseCase")} ErrDeviceUseCase = consoleerrors.CreateConsoleError("DevicesUseCase") - ErrDatabase = sqldb.DatabaseError{Console: consoleerrors.CreateConsoleError("DevicesUseCase")} - ErrNotFound = sqldb.NotFoundError{Console: consoleerrors.CreateConsoleError("DevicesUseCase")} ) // History - getting translate history from store. diff --git a/internal/usecase/devices/wsman/message.go b/internal/usecase/devices/wsman/message.go index 709b26ed6..e20d7c53b 100644 --- a/internal/usecase/devices/wsman/message.go +++ b/internal/usecase/devices/wsman/message.go @@ -1,6 +1,7 @@ package wsman import ( + "context" gotls "crypto/tls" "errors" "net" @@ -127,7 +128,7 @@ func (g GoWSMANMessages) Worker() { } } -func (g GoWSMANMessages) SetupWsmanClient(device entity.Device, isRedirection, logAMTMessages bool) (Management, error) { +func (g GoWSMANMessages) SetupWsmanClient(ctx context.Context, device entity.Device, isRedirection, logAMTMessages bool) (Management, error) { resultChan := make(chan *ConnectionEntry) errChan := make(chan error, 1) // Queue the request @@ -179,6 +180,8 @@ func (g GoWSMANMessages) SetupWsmanClient(device entity.Device, isRedirection, l return nil, err case result := <-resultChan: return result, nil + case <-ctx.Done(): + return nil, ctx.Err() } }