_, 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"))