Exemple #1
0
func main() {
	// Create service
	service := goa.New("API")
	logger := log15.New()
	goa.Log = goalog15.New(logger)
	// Setup middleware
	service.Use(middleware.RequestID())
	service.Use(middleware.LogRequest(true))
	service.Use(middleware.Recover())

	cspec, err := cors.New(func() {
		cors.Origin("*", func() {
			cors.Resource("/*", func() {
				cors.Headers("Accept", "Content-Type", "Origin", "Authorization")
				cors.Methods("GET", "POST", "PUT", "DELETE", "OPTIONS")
				cors.MaxAge(600)
				cors.Credentials(true)
				cors.Vary("Http-Origin")
			})
		})
	})
	if err != nil {
		panic(err)
	}
	// mount the cors controller
	service.Use(cors.Middleware(cspec))
	cors.MountPreflightController(service, cspec)

	// Mount "authentication" controller
	c := NewAuthenticationController(service)
	app.MountAuthenticationController(service, c)
	// Mount "operands" controller
	c2 := NewOperandsController(service)
	app.MountOperandsController(service, c2)
	// Mount "ui" controller
	ui.MountController(service)
	// Mount Swagger spec provider controller
	swagger.MountController(service)

	// Start service, listen on port 8080
	service.ListenAndServe(":8080")
	fmt.Println("a ...interface{}")
}
				method = "GET"
				path = "/"
			})

			It("responds", func() {
				resp, err := http.Get(url)
				Ω(err).ShouldNot(HaveOccurred())
				Ω(resp.StatusCode).Should(Equal(200))
			})

			Context("using CORS that allows the request", func() {
				BeforeEach(func() {
					dsl = func() {
						cors.Origin("http://authorized.com", func() {
							cors.Resource("/", func() {
								cors.Methods("GET")
							})
						})
					}
				})

				It("sets the Acess-Control-Allow-Methods header", func() {
					req, err := http.NewRequest("GET", url, nil)
					Ω(err).ShouldNot(HaveOccurred())
					req.Header.Set("Origin", "http://authorized.com")
					resp, err := http.DefaultClient.Do(req)
					Ω(err).ShouldNot(HaveOccurred())
					Ω(resp.StatusCode).Should(Equal(200))
					Ω(resp.Header).Should(HaveKey("Access-Control-Allow-Methods"))
				})
		It("returns an empty spec", func() {
			Ω(spec).ShouldNot(BeNil())
			Ω(spec).Should(HaveLen(0))
		})
	})

	Context("Origin", func() {
		const origin = "ORIGIN"
		const path = "PATH"

		BeforeEach(func() {
			dsl = func() {
				cors.Origin(origin, func() {
					cors.Resource(path, func() {
						cors.Methods("GET")
					})
				})
			}
		})

		It("sets the resource origin", func() {
			Ω(spec).Should(HaveLen(1))
			Ω(spec[0]).ShouldNot(BeNil())
			Ω(spec[0].Origin).Should(Equal(origin))
			Ω(spec[0].Path).Should(Equal(path))
			Ω(spec[0].IsPathPrefix).Should(BeFalse())
		})

		Context("Headers", func() {
			headers := []string{"X-Foo", "X-Bar"}