Context("with error status code", func() {
				It("returns the status as error", func() {
					client.UpdatePermissionsInReturns(&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"))
					Expect(logger.LogMessages()).To(ContainElement(ContainSubstring("Failed to provision a service: my-service-id")))
				})
			})
		})

		It("creates policy", func() {
			broker.Provision("my-service-id", brokerapi.ProvisionDetails{}, false)
			Expect(client.PutPolicyCallCount()).To(Equal(1))

			vhost, policyName, policy := client.PutPolicyArgsForCall(0)
			Expect(vhost).To(Equal("my-service-id"))
			Expect(policyName).To(Equal(config.Rabbitmq.Policy.Name))
			Expect(policy.Definition).To(Equal(config.Rabbitmq.Policy.Definition))
			Expect(policy.Priority).To(Equal(config.Rabbitmq.Policy.Priority))

		})

		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")))
			})