expectedURL        string
			idLocator          id.InstanceIDLocator
			expectedInstanceID = "some-instance-id"
			actualInstanceID   string
			instanceIDErr      error
			nodeIP             string
			log                *gbytes.Buffer
		)

		JustBeforeEach(func() {
			log = gbytes.NewBuffer()
			logger := lager.NewLogger("provider")
			logger.RegisterSink(lager.NewWriterSink(log, lager.DEBUG))

			idLocator = id.DedicatedInstanceIDLocator(endpoint, clientUsername, clientPassword, logger)
			actualInstanceID, instanceIDErr = idLocator.LocateID("", nodeIP)

			expectedURL = fmt.Sprintf("%s?host=%s", endpoint, nodeIP)
		})

		Context("when the broker responds", func() {
			BeforeEach(func() {
				nodeIP = "8.8.8.8"

				authWrapper := auth.NewWrapper(brokerUsername, brokerPassword)

				instanceHandler := authWrapper.WrapFunc(redisinstance.NewHandler(&instanceFinder{
					InstanceID: expectedInstanceID,
					InstanceIP: nodeIP,
				}))
			redisConfigPath    string
			log                *gbytes.Buffer
		)

		BeforeEach(func() {
			log = gbytes.NewBuffer()
			logger := lager.NewLogger("provider")
			logger.RegisterSink(lager.NewWriterSink(log, lager.DEBUG))

			redisConfigPath = fmt.Sprintf("/var/vcap/store/redis/%s/redis.conf", expectedInstanceID)

			idLocator = id.SharedInstanceIDLocator(logger)
		})

		JustBeforeEach(func() {
			actualInstanceID, instanceIDErr = idLocator.LocateID(redisConfigPath, "")
		})

		It("does not return an error", func() {
			Expect(instanceIDErr).ToNot(HaveOccurred())
		})

		It("returns the instance ID based on the redis config path", func() {
			Expect(actualInstanceID).To(Equal(expectedInstanceID))
		})

		It("provides logging", func() {
			Expect(log).To(ContainSequence(
				Info(
					Action("provider.shared-instance-id"),
					Data("event", "starting", "path", redisConfigPath),