diff --git a/client/api_client.go b/client/api_client.go index 5200fba4..d136564a 100644 --- a/client/api_client.go +++ b/client/api_client.go @@ -116,6 +116,8 @@ type ApiClientInterface interface { CustomFlowAssign(assignments []CustomFlowAssignment) error CustomFlowUnassign(assignments []CustomFlowAssignment) error CustomFlowGetAssignments(assignments []CustomFlowAssignment) ([]CustomFlowAssignment, error) + SubscribeWorkflowTrigger(environmentId string, payload WorkflowTriggerEnvironments) error + UnsubscribeWorkflowTrigger(environmentId string, payload WorkflowTriggerEnvironments) error } func NewApiClient(client http.HttpClientInterface, defaultOrganizationId string) ApiClientInterface { diff --git a/client/api_client_mock.go b/client/api_client_mock.go index 3bfc9aba..5c855840 100644 --- a/client/api_client_mock.go +++ b/client/api_client_mock.go @@ -1259,6 +1259,20 @@ func (mr *MockApiClientInterfaceMockRecorder) SshKeys() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SshKeys", reflect.TypeOf((*MockApiClientInterface)(nil).SshKeys)) } +// SubscribeWorkflowTrigger mocks base method. +func (m *MockApiClientInterface) SubscribeWorkflowTrigger(arg0 string, arg1 WorkflowTriggerEnvironments) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SubscribeWorkflowTrigger", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// SubscribeWorkflowTrigger indicates an expected call of SubscribeWorkflowTrigger. +func (mr *MockApiClientInterfaceMockRecorder) SubscribeWorkflowTrigger(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubscribeWorkflowTrigger", reflect.TypeOf((*MockApiClientInterface)(nil).SubscribeWorkflowTrigger), arg0, arg1) +} + // Team mocks base method. func (m *MockApiClientInterface) Team(arg0 string) (Team, error) { m.ctrl.T.Helper() @@ -1466,6 +1480,20 @@ func (mr *MockApiClientInterfaceMockRecorder) Templates() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Templates", reflect.TypeOf((*MockApiClientInterface)(nil).Templates)) } +// UnsubscribeWorkflowTrigger mocks base method. +func (m *MockApiClientInterface) UnsubscribeWorkflowTrigger(arg0 string, arg1 WorkflowTriggerEnvironments) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UnsubscribeWorkflowTrigger", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// UnsubscribeWorkflowTrigger indicates an expected call of UnsubscribeWorkflowTrigger. +func (mr *MockApiClientInterfaceMockRecorder) UnsubscribeWorkflowTrigger(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnsubscribeWorkflowTrigger", reflect.TypeOf((*MockApiClientInterface)(nil).UnsubscribeWorkflowTrigger), arg0, arg1) +} + // UpdateUserProjectAssignment mocks base method. func (m *MockApiClientInterface) UpdateUserProjectAssignment(arg0, arg1 string, arg2 *UpdateUserProjectAssignmentPayload) (*UserProjectAssignment, error) { m.ctrl.T.Helper() diff --git a/client/workflow_triggers.go b/client/workflow_triggers.go index f99d6710..55cc2e93 100644 --- a/client/workflow_triggers.go +++ b/client/workflow_triggers.go @@ -8,9 +8,13 @@ type WorkflowTriggerUpsertPayload struct { DownstreamEnvironmentIds []string `json:"downstreamEnvironmentIds"` } +type WorkflowTriggerEnvironments struct { + DownstreamEnvironmentIds []string `json:"downstreamEnvironmentIds"` +} + func (client *ApiClient) WorkflowTrigger(environmentId string) ([]WorkflowTrigger, error) { var result []WorkflowTrigger - err := client.http.Get("environments/"+environmentId+"/downstream", nil, &result) + err := client.http.Get("/environments/"+environmentId+"/downstream", nil, &result) if err != nil { return []WorkflowTrigger{}, err } @@ -27,3 +31,11 @@ func (client *ApiClient) WorkflowTriggerUpsert(environmentId string, request Wor } return result, nil } + +func (client *ApiClient) SubscribeWorkflowTrigger(environmentId string, payload WorkflowTriggerEnvironments) error { + return client.http.Post("/environments/"+environmentId+"/downstream/subscribe", payload, nil) +} + +func (client *ApiClient) UnsubscribeWorkflowTrigger(environmentId string, payload WorkflowTriggerEnvironments) error { + return client.http.Post("/environments/"+environmentId+"/downstream/unsubscribe", payload, nil) +} diff --git a/client/workflow_triggers_test.go b/client/workflow_triggers_test.go index 82ded907..eae1dde3 100644 --- a/client/workflow_triggers_test.go +++ b/client/workflow_triggers_test.go @@ -41,7 +41,7 @@ var _ = Describe("Workflow Triggers", func() { Describe("WorkflowTrigger", func() { BeforeEach(func() { httpCall = mockHttpClient.EXPECT(). - Get("environments/"+environmentId+"/downstream", nil, gomock.Any()). + Get("/environments/"+environmentId+"/downstream", nil, gomock.Any()). Do(func(path string, request interface{}, response *[]WorkflowTrigger) { *response = mockTrigger }) @@ -52,4 +52,40 @@ var _ = Describe("Workflow Triggers", func() { Expect(triggers).To(Equal(mockTrigger)) }) }) + + Describe("SubscribeWorkflowTrigger", func() { + var err error + + subscribePayload := WorkflowTriggerEnvironments{ + DownstreamEnvironmentIds: []string{"1", "2"}, + } + + BeforeEach(func() { + httpCall = mockHttpClient.EXPECT().Post("/environments/"+environmentId+"/downstream/subscribe", subscribePayload, nil) + httpCall.Times(1) + err = apiClient.SubscribeWorkflowTrigger(environmentId, subscribePayload) + }) + + It("Should not return an error", func() { + Expect(err).To(BeNil()) + }) + }) + + Describe("UnsubscribeWorkflowTrigger", func() { + var err error + + unsubscribePayload := WorkflowTriggerEnvironments{ + DownstreamEnvironmentIds: []string{"1", "2"}, + } + + BeforeEach(func() { + httpCall = mockHttpClient.EXPECT().Post("/environments/"+environmentId+"/downstream/unsubscribe", unsubscribePayload, nil) + httpCall.Times(1) + err = apiClient.UnsubscribeWorkflowTrigger(environmentId, unsubscribePayload) + }) + + It("Should not return an error", func() { + Expect(err).To(BeNil()) + }) + }) })