err = rackhdapi.PublishWorkflow(cpiConfig, fakeWorkflowBytes)
					Expect(err).ToNot(HaveOccurred())

					body := rackhdapi.RunWorkflowRequestBody{
						Name:    fakeWorkflow.Name,
						Options: map[string]interface{}{"defaults": Options{OBMServiceName: &obm}},
					}

					err = rackhdapi.RunWorkflow(rackhdapi.WorkflowPoster, rackhdapi.WorkflowFetcher, cpiConfig, nodeID, body)
					Expect(err).To(HaveOccurred())
				})
			})

			Context("when the workflow does not complete in the configurable timeout", func() {
				It("returns an error", func() {
					cpiConfig.RunWorkflowTimeoutSeconds = 1

					dummyTask := helpers.LoadTask("../spec_assets/dummy_timeout_task.json")
					dummyTask.Name += guid

					dummyTaskBytes, err := json.Marshal(dummyTask)
					Expect(err).ToNot(HaveOccurred())

					err = rackhdapi.PublishTask(cpiConfig, dummyTaskBytes)
					Expect(err).ToNot(HaveOccurred())

					fakeWorkflow := helpers.LoadWorkflow("../spec_assets/dummy_failing_workflow.json")
					fakeWorkflow.Name += guid
					fakeWorkflow.Tasks[3].TaskName += guid

					fakeWorkflowBytes, err := json.Marshal(fakeWorkflow)