Skip to content

Commit

Permalink
Called playbook action from decomposer and updated test
Browse files Browse the repository at this point in the history
  • Loading branch information
MaartendeKruijf committed Apr 12, 2024
1 parent 94d9d78 commit 5885099
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 5 deletions.
13 changes: 8 additions & 5 deletions internal/decomposer/decomposer.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,12 @@ func (decomposer *Decomposer) ExecuteStep(step cacao.Step, scopeVariables cacao.
variables.Merge(scopeVariables)
variables.Merge(step.StepVariables)

metadata := execution.Metadata{
ExecutionId: decomposer.details.ExecutionId,
PlaybookId: decomposer.details.PlaybookId,
StepId: step.ID,
}

switch step.Type {
case cacao.StepTypeAction:
actionMetadata := action.PlaybookStepMetadata{
Expand All @@ -140,12 +146,9 @@ func (decomposer *Decomposer) ExecuteStep(step cacao.Step, scopeVariables cacao.
Agent: decomposer.playbook.AgentDefinitions[step.Agent],
Variables: variables,
}
metadata := execution.Metadata{
ExecutionId: decomposer.details.ExecutionId,
PlaybookId: decomposer.details.PlaybookId,
StepId: step.ID,
}
return decomposer.actionExecutor.Execute(metadata, actionMetadata)
case cacao.StepTypePlaybookAction:
return decomposer.playbookActionExecutor.Execute(metadata, step, variables)
default:
// NOTE: This currently silently handles unknown step types. Should we return an error instead?
return cacao.NewVariables(), nil
Expand Down
59 changes: 59 additions & 0 deletions test/unittest/decomposer/decomposer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -364,3 +364,62 @@ func TestExecuteIllegalMultiStep(t *testing.T) {
assert.Equal(t, returnedId.ExecutionId, id)
mock_action_executor2.AssertExpectations(t)
}

func TestExecutePlaybookAction(t *testing.T) {
mock_action_executor := new(mock_executor.Mock_Action_Executor)
mock_playbook_action_executor := new(mock_playbook_action_executor.Mock_PlaybookActionExecutor)
uuid_mock := new(mock_guid.Mock_Guid)

expectedVariables := cacao.Variable{
Type: "string",
Name: "var1",
Value: "testing",
}

decomposer := decomposer.New(mock_action_executor,
mock_playbook_action_executor,
uuid_mock)

step1 := cacao.Step{
Type: "playbook-action",
ID: "playbook-action--test",
Name: "ssh-tests",
StepVariables: cacao.NewVariables(expectedVariables),
PlaybookID: "playbook--1",
OnCompletion: "end--test",
}

end := cacao.Step{
Type: "end",
ID: "end--test",
Name: "end step",
}

playbook := cacao.Playbook{
ID: "test",
Type: "test",
Name: "playbook-test",
WorkflowStart: step1.ID,
Workflow: map[string]cacao.Step{step1.ID: step1, end.ID: end},
}

executionId, _ := uuid.Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
metaStep1 := execution.Metadata{ExecutionId: executionId, PlaybookId: "test", StepId: step1.ID}

uuid_mock.On("New").Return(executionId)

mock_playbook_action_executor.On("Execute",
metaStep1,
step1,
cacao.NewVariables(expectedVariables)).Return(cacao.NewVariables(cacao.Variable{Name: "return", Value: "value"}), nil)

details, err := decomposer.Execute(playbook)
uuid_mock.AssertExpectations(t)
fmt.Println(err)
assert.Equal(t, err, nil)
assert.Equal(t, details.ExecutionId, executionId)
mock_action_executor.AssertExpectations(t)
value, found := details.Variables.Find("return")
assert.Equal(t, found, true)
assert.Equal(t, value.Value, "value")
}

0 comments on commit 5885099

Please sign in to comment.