PrivateInstanceIndex: "index", Port: 1111, StaleThresholdInSeconds: 120, Uris: []route.Uri{"test.example.com", "test2.example.com"}, Tags: map[string]string{"key": "value"}, } data, err := json.Marshal(msg) Expect(err).NotTo(HaveOccurred()) err = natsClient.Publish("router.register", data) Expect(err).ToNot(HaveOccurred()) Eventually(registry.RegisterCallCount).Should(Equal(2)) for i := 0; i < registry.RegisterCallCount(); i++ { uri, endpoint := registry.RegisterArgsForCall(i) Expect(msg.Uris).To(ContainElement(uri)) Expect(endpoint.ApplicationId).To(Equal(msg.App)) Expect(endpoint.Tags).To(Equal(msg.Tags)) Expect(endpoint.PrivateInstanceId).To(Equal(msg.PrivateInstanceID)) Expect(endpoint.PrivateInstanceIndex).To(Equal(msg.PrivateInstanceIndex)) Expect(endpoint.RouteServiceUrl).To(Equal(msg.RouteServiceURL)) Expect(endpoint.CanonicalAddr()).To(ContainSubstring(msg.Host)) } }) Context("when the message cannot be unmarshaled", func() { It("does not update the registry", func() { err := natsClient.Publish("router.register", []byte(` `)) Expect(err).ToNot(HaveOccurred())