Ejemplo n.º 1
0
	})

	It("handles valid credentials", func() {
		req.Header.Add("Authorization", authString)

		auth := httpauth.BasicMiddleware(spec)(handler)
		Ω(auth(ctx)).ShouldNot(HaveOccurred())
		Ω(ctx.ResponseStatus()).Should(Equal(http.StatusOK))
		Ω(rw.Body).Should(Equal([]byte("\"ok\"\n")))
	})

	It("handles invalid credentials", func() {
		auth := httpauth.BasicMiddleware(spec)(handler)
		Ω(auth(ctx)).ShouldNot(HaveOccurred())
		Ω(ctx.ResponseStatus()).Should(Equal(http.StatusUnauthorized))
		Ω(ctx.Header()).Should(HaveKey("Www-Authenticate"))
		Ω(ctx.Header().Get("Www-Authenticate")).Should(Equal(`Basic realm="Restricted"`))
		Ω(rw.Body).Should(ContainSubstring("Unauthorized"))
	})

	It("sets a custom realm", func() {
		spec.Realm = "Custom"

		auth := httpauth.BasicMiddleware(spec)(handler)
		Ω(auth(ctx)).ShouldNot(HaveOccurred())
		Ω(ctx.ResponseStatus()).Should(Equal(http.StatusUnauthorized))
		Ω(ctx.Header()).Should(HaveKey("Www-Authenticate"))
		Ω(ctx.Header().Get("Www-Authenticate")).Should(Equal(`Basic realm="Custom"`))
		Ω(rw.Body).Should(ContainSubstring("Unauthorized"))
	})
})
Ejemplo n.º 2
0
			Ω(rwo).ShouldNot(BeNil())
			Ω(rwo).Should(BeAssignableToTypeOf(&TestResponseWriter{}))
			trw := rwo.(*TestResponseWriter)
			Ω(trw.Status).Should(Equal(42))
		})
	})

	Describe("Request", func() {
		It("returns nil if not initialized", func() {
			Ω(ctx.Request()).Should(BeNil())
		})
	})

	Describe("Header", func() {
		It("returns nil if not initialized", func() {
			Ω(ctx.Header()).Should(BeNil())
		})
	})

	Describe("ResponseStatus", func() {
		It("returns 0 if not initialized", func() {
			Ω(ctx.ResponseStatus()).Should(Equal(0))
		})
	})

	Describe("ResponseLength", func() {
		It("returns 0 if not initialized", func() {
			Ω(ctx.ResponseLength()).Should(Equal(0))
		})
	})
Ejemplo n.º 3
0
// unauthorized sets the appropriate WWW-Authenticate header prior to sending an
// Unauthorized HTTP response.
func unauthorized(ctx *goa.Context, spec *Specification) error {
	ctx.Header().Set("WWW-Authenticate", fmt.Sprintf("Basic realm=%q", spec.Realm))
	// return ctx.Respond(http.StatusUnauthorized, http.StatusText(http.StatusUnauthorized))
	return ctx.Respond(http.StatusUnauthorized, map[string]interface{}{"ID": -1, "Title": "Unauthorized", "Msg": "Unauthorized Request"})
}