It("fails the authentication", func() {
					Expect(authErr).To(MatchError("Invalid credentials"))
				})
			})
		})

		Context("when authentication is successful", func() {
			BeforeEach(func() {
				metadata.UserReturns("diego:some-guid/0")
				password = []byte("receptor-user:receptor-password")
			})

			It("gets information about the desired lrp referenced in the username", func() {
				Expect(receptorClient.GetDesiredLRPCallCount()).To(Equal(1))
				Expect(receptorClient.GetDesiredLRPArgsForCall(0)).To(Equal("some-guid"))
			})

			It("gets information about the the actual lrp from the username", func() {
				Expect(receptorClient.ActualLRPByProcessGuidAndIndexCallCount()).To(Equal(1))

				guid, index := receptorClient.ActualLRPByProcessGuidAndIndexArgsForCall(0)
				Expect(guid).To(Equal("some-guid"))
				Expect(index).To(Equal(0))
			})

			It("saves container information in the critical options of the permissions", func() {
				expectedConfig := `{
					"address": "1.2.3.4:3333",
					"host_fingerprint": "host-fingerprint",
					"private_key": "pem-encoded-key",
				instanceTwo := appInfo.ActualInstances[2]
				Expect(instanceTwo.Index).To(Equal(2))
				Expect(instanceTwo.Ports).To(BeEmpty())
				Expect(instanceTwo.State).To(Equal("UNCLAIMED"))
				Expect(instanceTwo.PlacementError).To(Equal("not enough resources. eek."))
				Expect(instanceTwo.HasMetrics).To(BeFalse())

				instanceThree := appInfo.ActualInstances[3]
				Expect(instanceThree.Index).To(Equal(3))
				Expect(instanceThree.Ports).To(BeEmpty())
				Expect(instanceThree.State).To(Equal("CRASHED"))
				Expect(instanceThree.CrashCount).To(Equal(7))
				Expect(instanceThree.HasMetrics).To(BeFalse())

				Expect(fakeReceptorClient.GetDesiredLRPCallCount()).To(Equal(1))
				Expect(fakeReceptorClient.GetDesiredLRPArgsForCall(0)).To(Equal("peekaboo-app"))

				Expect(fakeReceptorClient.ActualLRPsByProcessGuidCallCount()).To(Equal(1))
				Expect(fakeReceptorClient.ActualLRPsByProcessGuidArgsForCall(0)).To(Equal("peekaboo-app"))

				Expect(fakeNoaaConsumer.GetContainerMetricsCallCount()).To(Equal(1))
				appGuid, token := fakeNoaaConsumer.GetContainerMetricsArgsForCall(0)
				Expect(appGuid).To(Equal("peekaboo-app"))
				Expect(token).To(BeEmpty())
			})

			Describe("Monitors", func() {
				It("returns AppInfo Monitor for a port monitor", func() {
					getDesiredLRPResponse.Monitor = models.WrapAction(&models.RunAction{
						Path: "/tmp/healthcheck",
						Args: []string{
				It("fails to authenticate", func() {
					Expect(err).To(Equal(authenticators.InvalidDomainErr))
				})
			})
		})

		Context("when a client has valid username and password", func() {
			It("fetches the app from CC using the bearer token", func() {
				Expect(err).NotTo(HaveOccurred())
				Expect(fakeCC.ReceivedRequests()).To(HaveLen(1))
			})

			It("gets information about the desired lrp referenced in the username", func() {
				Expect(receptorClient.GetDesiredLRPCallCount()).To(Equal(1))
				Expect(receptorClient.GetDesiredLRPArgsForCall(0)).To(Equal("app-guid-app-version"))
			})

			It("gets information about the the actual lrp from the username", func() {
				Expect(receptorClient.ActualLRPByProcessGuidAndIndexCallCount()).To(Equal(1))

				guid, index := receptorClient.ActualLRPByProcessGuidAndIndexArgsForCall(0)
				Expect(guid).To(Equal("app-guid-app-version"))
				Expect(index).To(Equal(1))
			})

			It("saves container information in the critical options of the permissions", func() {
				expectedConfig := `{
								"address": "1.2.3.4:3333",
								"host_fingerprint": "host-fingerprint",
								"private_key": "pem-encoded-key",