Beispiel #1
0
		})

		Describe(".ReadRoutes", func() {
			It("Returns a empty list of routes", func() {
				routes, err := etcd.ReadRoutes()
				Expect(err).NotTo(HaveOccurred())
				Expect(routes).To(Equal([]db.Route{}))
			})

			Context("when only one entry is present", func() {
				BeforeEach(func() {
					route.Route = "next-route"
					route.IP = "9.8.7.6"
					route.Port = 12345

					err := etcd.SaveRoute(route)
					Expect(err).NotTo(HaveOccurred())
				})

				It("Returns a list with one route", func() {
					routes, err := etcd.ReadRoutes()
					Expect(err).NotTo(HaveOccurred())

					Expect(routes).To(ContainElement(route))
				})
			})

			Context("when multiple entries present", func() {
				var (
					route2 db.Route
				)
Beispiel #2
0
						Expect(routes).To(HaveLen(2))
						Expect(routes).To(ContainElement(route))
						Expect(routes).To(ContainElement(route2))
					})
				})
			})

			Describe("SaveRoute", func() {
				Context("when there's no existing entry", func() {
					BeforeEach(func() {
						keyNotFoundError := client.Error{Code: client.ErrorCodeKeyNotFound}
						fakeKeysAPI.GetReturns(nil, keyNotFoundError)
					})

					It("Creates a route if none exist", func() {
						err := fakeEtcd.SaveRoute(route)
						Expect(err).NotTo(HaveOccurred())
						Expect(fakeKeysAPI.GetCallCount()).To(Equal(1))
						Expect(fakeKeysAPI.SetCallCount()).To(Equal(1))
						_, _, json, _ := fakeKeysAPI.SetArgsForCall(0)
						Expect(json).To(ContainSubstring("\"index\":0"))
					})
				})

				Context("when an entry already exists", func() {
					BeforeEach(func() {
						route.ModificationTag = models.ModificationTag{Guid: "guid", Index: 5}
						routeJson, err := json.Marshal(&route)
						Expect(err).ToNot(HaveOccurred())
						fakeResp := &client.Response{Node: &client.Node{Value: string(routeJson)}}
						fakeKeysAPI.GetReturns(fakeResp, nil)