}) Context("when policy creations fails", func() { It("logs and returns the error", func() { client.PutPolicyReturns(nil, fmt.Errorf("create-policy-failed")) _, err := broker.Provision("my-service-id", brokerapi.ProvisionDetails{}, false) Expect(err).To(MatchError("create-policy-failed")) Expect(logger.LogMessages()).To(ContainElement(ContainSubstring("Failed to provision a service: my-service-id"))) }) It("should clean up", func() { client.PutPolicyReturns(nil, fmt.Errorf("create-policy-failed")) broker.Provision("my-service-id", brokerapi.ProvisionDetails{}, false) Expect(client.DeleteVhostCallCount()).To(Equal(1)) Expect(client.DeleteVhostArgsForCall(0)).To(Equal("my-service-id")) }) }) Context("when the creating policy is disabled", func() { It("does not create a policy", func() { config.Rabbitmq.Policy.Enabled = false _, err := broker.Provision("my-service-id", brokerapi.ProvisionDetails{}, false) Expect(client.PutPolicyCallCount()).To(Equal(0)) Expect(err).NotTo(HaveOccurred()) }) Context("with error status code", func() { It("returns the status as error", func() { client.PutPolicyReturns(&http.Response{StatusCode: http.StatusInternalServerError}, nil) _, err := broker.Provision("my-service-id", brokerapi.ProvisionDetails{}, false) Expect(err).To(MatchError("http request failed with status code: 500"))