mirror of
https://github.com/hanzo-fi/payments.git
synced 2026-10-30 20:31:20 +00:00
- go.mod module path + all self-imports: github.com/formancehq/payments -> github.com/hanzo-fi/payments (1590 .go files / 3152 refs; 20 modules: root, pkg/client, pkg/domain, 18 ce/plugins). External dep kept: formancehq/go-libs. - plugins: each ce/plugins/* consumed a *published* pkg/domain; added local 'replace .../pkg/domain => ../../../pkg/domain' (consistent with root) so every standalone plugin module builds in-monorepo. compile-plugin.sh MOD var rebranded too. - branding: README, LICENSE (dual MIT+EE; upstream copyright retained + Hanzo added), goreleaser (release images -> registry.hanzo.ai/hanzo-fi, OCI labels, homepage), proto go_package, renovate, speakeasy gen.yaml, connector-template *.gotpl. - CI: removed Numary/Formance workflows + composite action; added canonical hanzo.yml + cicd.yml (hanzoai/ci, gated HANZO_CI_ENABLED) + secretless ci.yml (go build/vet). - kept as data/compat keys: wire capability enums ALLOW_FORMANCE_*, generated SDK type client.Formance, domain field FormanceRedirectURL, OTEL_SERVICE_NAME, upstream base image. - verified: go build ./... (default + -tags ee) + all 20 nested modules green.
546 lines
17 KiB
Go
546 lines
17 KiB
Go
package workflow
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/hanzo-fi/payments/internal/connectors/engine/activities"
|
|
"github.com/hanzo-fi/payments/pkg/domain/models"
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/mock"
|
|
"go.temporal.io/sdk/temporal"
|
|
)
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_Success() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
connection := &models.OpenBankingConnection{
|
|
ConnectionID: connectionID,
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
DataUpdatedAt: s.env.Now().UTC(),
|
|
Status: models.ConnectionStatusActive,
|
|
AccessToken: &models.Token{
|
|
Token: "access-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
openBankingForwardedUser := &models.OpenBankingForwardedUser{
|
|
ConnectorID: s.connectorID,
|
|
AccessToken: &models.Token{
|
|
Token: "auth-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
&activities.StorageOpenBankingConnectionsGetFromConnectionIDResult{
|
|
Connection: connection,
|
|
PSUID: psuID,
|
|
}, nil,
|
|
)
|
|
|
|
// Mock open banking forwarded user retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingForwardedUsersGetActivity, mock.Anything, psuID, s.connectorID).Once().Return(openBankingForwardedUser, nil)
|
|
|
|
// Mock plugin delete user connection (multiple calls for retries)
|
|
s.env.OnActivity(activities.PluginDeleteUserConnectionActivity, mock.Anything, mock.Anything).Return(&models.DeleteUserConnectionResponse{}, nil)
|
|
|
|
// Mock child workflow execution
|
|
s.env.OnWorkflow(RunDeleteOpenBankingConnectionData, mock.Anything, mock.Anything).Return(nil)
|
|
|
|
// Mock connection deletion
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsDeleteActivity, mock.Anything, psuID, s.connectorID, connectionID).Once().Return(nil)
|
|
|
|
// Mock task success update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.NoError(err)
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_StoragePaymentServiceUsersGet_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
// Mock PSU retrieval error
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(
|
|
nil, temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_StorageOpenBankingConnectionsGetFromConnectionID_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval error
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
nil, temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_StorageOpenBankingForwardedUserGet_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
connection := &models.OpenBankingConnection{
|
|
ConnectionID: connectionID,
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
DataUpdatedAt: s.env.Now().UTC(),
|
|
Status: models.ConnectionStatusActive,
|
|
AccessToken: &models.Token{
|
|
Token: "access-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
&activities.StorageOpenBankingConnectionsGetFromConnectionIDResult{
|
|
Connection: connection,
|
|
PSUID: psuID,
|
|
}, nil,
|
|
)
|
|
|
|
// Mock open banking forwarded user retrieval error
|
|
s.env.OnActivity(activities.StorageOpenBankingForwardedUsersGetActivity, mock.Anything, psuID, s.connectorID).Once().Return(
|
|
nil, temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_PluginDeleteUserConnection_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
connection := &models.OpenBankingConnection{
|
|
ConnectionID: connectionID,
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
DataUpdatedAt: s.env.Now().UTC(),
|
|
Status: models.ConnectionStatusActive,
|
|
AccessToken: &models.Token{
|
|
Token: "access-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
openBankingForwardedUser := &models.OpenBankingForwardedUser{
|
|
ConnectorID: s.connectorID,
|
|
AccessToken: &models.Token{
|
|
Token: "auth-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
&activities.StorageOpenBankingConnectionsGetFromConnectionIDResult{
|
|
Connection: connection,
|
|
PSUID: psuID,
|
|
}, nil,
|
|
)
|
|
|
|
// Mock open banking forwarded user retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingForwardedUsersGetActivity, mock.Anything, psuID, s.connectorID).Once().Return(openBankingForwardedUser, nil)
|
|
|
|
// Mock plugin delete user connection error (multiple calls for retries)
|
|
s.env.OnActivity(activities.PluginDeleteUserConnectionActivity, mock.Anything, mock.Anything).Return(
|
|
nil, temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_ChildWorkflow_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
connection := &models.OpenBankingConnection{
|
|
ConnectionID: connectionID,
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
DataUpdatedAt: s.env.Now().UTC(),
|
|
Status: models.ConnectionStatusActive,
|
|
AccessToken: &models.Token{
|
|
Token: "access-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
openBankingForwardedUser := &models.OpenBankingForwardedUser{
|
|
ConnectorID: s.connectorID,
|
|
AccessToken: &models.Token{
|
|
Token: "auth-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
&activities.StorageOpenBankingConnectionsGetFromConnectionIDResult{
|
|
Connection: connection,
|
|
PSUID: psuID,
|
|
}, nil,
|
|
)
|
|
|
|
// Mock open banking forwarded user retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingForwardedUsersGetActivity, mock.Anything, psuID, s.connectorID).Once().Return(openBankingForwardedUser, nil)
|
|
|
|
// Mock plugin delete user connection
|
|
s.env.OnActivity(activities.PluginDeleteUserConnectionActivity, mock.Anything, mock.Anything).Return(&models.DeleteUserConnectionResponse{}, nil)
|
|
|
|
// Mock child workflow execution error
|
|
s.env.OnWorkflow(RunDeleteOpenBankingConnectionData, mock.Anything, mock.Anything).Return(
|
|
temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_StorageOpenBankingConnectionDelete_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
connection := &models.OpenBankingConnection{
|
|
ConnectionID: connectionID,
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
DataUpdatedAt: s.env.Now().UTC(),
|
|
Status: models.ConnectionStatusActive,
|
|
AccessToken: &models.Token{
|
|
Token: "access-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
openBankingForwardedUser := &models.OpenBankingForwardedUser{
|
|
ConnectorID: s.connectorID,
|
|
AccessToken: &models.Token{
|
|
Token: "auth-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
&activities.StorageOpenBankingConnectionsGetFromConnectionIDResult{
|
|
Connection: connection,
|
|
PSUID: psuID,
|
|
}, nil,
|
|
)
|
|
|
|
// Mock open banking forwarded user retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingForwardedUsersGetActivity, mock.Anything, psuID, s.connectorID).Once().Return(openBankingForwardedUser, nil)
|
|
|
|
// Mock plugin delete user connection
|
|
s.env.OnActivity(activities.PluginDeleteUserConnectionActivity, mock.Anything, mock.Anything).Return(&models.DeleteUserConnectionResponse{}, nil)
|
|
|
|
// Mock child workflow execution
|
|
s.env.OnWorkflow(RunDeleteOpenBankingConnectionData, mock.Anything, mock.Anything).Return(nil)
|
|
|
|
// Mock connection deletion error
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsDeleteActivity, mock.Anything, psuID, s.connectorID, connectionID).Once().Return(
|
|
temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_TaskErrorUpdate_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
// Mock PSU retrieval error
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(
|
|
nil, temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
// Mock task error update error
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(
|
|
temporal.NewNonRetryableApplicationError("task-update-error", "task-update-error", errors.New("task-update-error")),
|
|
)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "task-update-error")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_DeleteConnection_TaskSuccessUpdate_Error() {
|
|
taskID := models.TaskID{
|
|
Reference: "test-task",
|
|
ConnectorID: s.connectorID,
|
|
}
|
|
psuID := uuid.New()
|
|
connectionID := "test-connection-id"
|
|
|
|
psu := &models.PaymentServiceUser{
|
|
ID: psuID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
}
|
|
|
|
connection := &models.OpenBankingConnection{
|
|
ConnectionID: connectionID,
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now().UTC(),
|
|
DataUpdatedAt: s.env.Now().UTC(),
|
|
Status: models.ConnectionStatusActive,
|
|
AccessToken: &models.Token{
|
|
Token: "access-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
openBankingForwardedUser := &models.OpenBankingForwardedUser{
|
|
ConnectorID: s.connectorID,
|
|
AccessToken: &models.Token{
|
|
Token: "auth-token",
|
|
},
|
|
Metadata: map[string]string{
|
|
"bank": "test-bank",
|
|
},
|
|
}
|
|
|
|
// Mock PSU retrieval
|
|
s.env.OnActivity(activities.StoragePaymentServiceUsersGetActivity, mock.Anything, psuID).Once().Return(psu, nil)
|
|
|
|
// Mock connection retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsGetFromConnectionIDActivity, mock.Anything, s.connectorID, connectionID).Once().Return(
|
|
&activities.StorageOpenBankingConnectionsGetFromConnectionIDResult{
|
|
Connection: connection,
|
|
PSUID: psuID,
|
|
}, nil,
|
|
)
|
|
|
|
// Mock open banking forwarded user retrieval
|
|
s.env.OnActivity(activities.StorageOpenBankingForwardedUsersGetActivity, mock.Anything, psuID, s.connectorID).Once().Return(openBankingForwardedUser, nil)
|
|
|
|
// Mock plugin delete user connection
|
|
s.env.OnActivity(activities.PluginDeleteUserConnectionActivity, mock.Anything, mock.Anything).Return(&models.DeleteUserConnectionResponse{}, nil)
|
|
|
|
// Mock child workflow execution
|
|
s.env.OnWorkflow(RunDeleteOpenBankingConnectionData, mock.Anything, mock.Anything).Return(nil)
|
|
|
|
// Mock connection deletion
|
|
s.env.OnActivity(activities.StorageOpenBankingConnectionsDeleteActivity, mock.Anything, psuID, s.connectorID, connectionID).Once().Return(nil)
|
|
|
|
// Mock task success update error
|
|
s.env.OnActivity(activities.StorageTasksStoreActivity, mock.Anything, mock.Anything).Once().Return(
|
|
temporal.NewNonRetryableApplicationError("task-update-error", "task-update-error", errors.New("task-update-error")),
|
|
)
|
|
|
|
s.env.ExecuteWorkflow(RunDeleteConnection, DeleteConnection{
|
|
TaskID: taskID,
|
|
ConnectorID: s.connectorID,
|
|
PsuID: psuID,
|
|
ConnectionID: connectionID,
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "task-update-error")
|
|
}
|