_, err := broker.Bind("my-instance", "my-binding", brokerapi.BindDetails{})
		Expect(err).NotTo(HaveOccurred())
		Expect(binder.BindingForCallCount()).To(Equal(1))
		Expect(client.ProtocolPortsCallCount()).To(Equal(1))
		configArg, credentialsArg, instanceIdArg, protocolsArg := binder.BindingForArgsForCall(0)
		Expect(configArg).To(Equal(expectedConfig))
		Expect(credentialsArg).To(Equal(rabbitbroker.Credentials{Username: "******", Password: "******"}))
		Expect(instanceIdArg).To(Equal("my-instance"))
		Expect(protocolsArg).To(Equal(protocols))
	})

	It("grants permisions for the binding user", func() {
		_, err := broker.Bind("my-instance", "my-binding", brokerapi.BindDetails{})
		Expect(err).NotTo(HaveOccurred())

		Expect(client.UpdatePermissionsInCallCount()).To(Equal(1))
		vhost, username, permissions := client.UpdatePermissionsInArgsForCall(0)

		Expect(vhost).To(Equal("my-instance"))
		expectedUsername, _ := client.PutUserArgsForCall(0)
		Expect(username).To(Equal(expectedUsername))
		Expect(permissions.Configure).To(Equal(".*"))
		Expect(permissions.Read).To(Equal(".*"))
		Expect(permissions.Write).To(Equal(".*"))
	})

	Context("when the user creation fails", func() {
		It("returns  the error", func() {
			client.PutUserReturns(nil, fmt.Errorf("user-creation-failed"))
			_, err := broker.Bind("my-instance", "my-binding", brokerapi.BindDetails{})
			Expect(err).To(MatchError("user-creation-failed"))