func TestMuxSimpleParty(t *testing.T) { iris.ResetDefault() h := func(c *iris.Context) { c.WriteString(c.HostString() + c.PathString()) } if testEnableSubdomain { subdomainParty := iris.Party(testSubdomain + ".") { subdomainParty.Get("/", h) subdomainParty.Get("/path1", h) subdomainParty.Get("/path2", h) subdomainParty.Get("/namedpath/:param1/something/:param2", h) subdomainParty.Get("/namedpath/:param1/something/:param2/else", h) } } // simple p := iris.Party("/party1") { p.Get("/", h) p.Get("/path1", h) p.Get("/path2", h) p.Get("/namedpath/:param1/something/:param2", h) p.Get("/namedpath/:param1/something/:param2/else", h) } iris.Default.Config.VHost = "0.0.0.0:8080" // iris.Default.Config.Tester.Debug = true // iris.Default.Config.Tester.ExplicitURL = true e := httptest.New(iris.Default, t) request := func(reqPath string) { e.Request("GET", reqPath). Expect(). Status(iris.StatusOK).Body().Equal(iris.Default.Config.VHost + reqPath) } // run the tests request("/party1/") request("/party1/path1") request("/party1/path2") request("/party1/namedpath/theparam1/something/theparam2") request("/party1/namedpath/theparam1/something/theparam2/else") if testEnableSubdomain { es := subdomainTester(e) subdomainRequest := func(reqPath string) { es.Request("GET", reqPath). Expect(). Status(iris.StatusOK).Body().Equal(testSubdomainHost() + reqPath) } subdomainRequest("/") subdomainRequest("/path1") subdomainRequest("/path2") subdomainRequest("/namedpath/theparam1/something/theparam2") subdomainRequest("/namedpath/theparam1/something/theparam2/else") } }
func TestMuxAPIWithParty(t *testing.T) { iris.ResetDefault() siteParty := iris.Party("sites/:site") middlewareResponseText := "I assume that you are authenticated\n" siteParty.API("/users", testUserAPI{}, func(ctx *iris.Context) { ctx.Set("user", "username") ctx.Next() }, func(ctx *iris.Context) { if ctx.Get("user") == "username" { ctx.Write(middlewareResponseText) ctx.Next() } else { ctx.SetStatusCode(iris.StatusUnauthorized) } }) e := httptest.New(iris.Default, t) siteID := "1" apiPath := "/sites/" + siteID + "/users" userID := "4077" formname := "kataras" e.GET(apiPath).Expect().Status(iris.StatusOK).Body().Equal(middlewareResponseText + "Get Users\n") e.GET(apiPath + "/" + userID).Expect().Status(iris.StatusOK).Body().Equal(middlewareResponseText + "Get By " + userID + "\n") e.PUT(apiPath).WithFormField("name", formname).Expect().Status(iris.StatusOK).Body().Equal(middlewareResponseText + "Put, name: " + formname + "\n") e.POST(apiPath+"/"+userID).WithFormField("name", formname).Expect().Status(iris.StatusOK).Body().Equal(middlewareResponseText + "Post By " + userID + ", name: " + formname + "\n") e.DELETE(apiPath + "/" + userID).Expect().Status(iris.StatusOK).Body().Equal(middlewareResponseText + "Delete By " + userID + "\n") }
func TestContextSubdomain(t *testing.T) { iris.ResetDefault() iris.Default.Config.VHost = "mydomain.com:9999" //Default.Config.Tester.ListeningAddr = "mydomain.com:9999" // Default.Config.Tester.ExplicitURL = true iris.Party("mysubdomain.").Get("/mypath", func(ctx *iris.Context) { ctx.Write(ctx.Subdomain()) }) e := httptest.New(iris.Default, t) e.GET("/").WithURL("http://mysubdomain.mydomain.com:9999").Expect().Status(iris.StatusNotFound) e.GET("/mypath").WithURL("http://mysubdomain.mydomain.com:9999").Expect().Status(iris.StatusOK).Body().Equal("mysubdomain") //e.GET("http://mysubdomain.mydomain.com:9999").Expect().Status(StatusNotFound) //e.GET("http://mysubdomain.mydomain.com:9999/mypath").Expect().Status(iris.StatusOK).Body().Equal("mysubdomain") }
func TestContextSessions(t *testing.T) { t.Parallel() values := map[string]interface{}{ "Name": "iris", "Months": "4", "Secret": "dsads£2132215£%%Ssdsa", } iris.ResetDefault() iris.Default.Config.Sessions.Cookie = "mycustomsessionid" writeValues := func(ctx *iris.Context) { sessValues := ctx.Session().GetAll() ctx.JSON(iris.StatusOK, sessValues) } if testEnableSubdomain { iris.Party(testSubdomain+".").Get("/get", func(ctx *iris.Context) { writeValues(ctx) }) } iris.Post("set", func(ctx *iris.Context) { vals := make(map[string]interface{}, 0) if err := ctx.ReadJSON(&vals); err != nil { t.Fatalf("Cannot readjson. Trace %s", err.Error()) } for k, v := range vals { ctx.Session().Set(k, v) } }) iris.Get("/get", func(ctx *iris.Context) { writeValues(ctx) }) iris.Get("/clear", func(ctx *iris.Context) { ctx.Session().Clear() writeValues(ctx) }) iris.Get("/destroy", func(ctx *iris.Context) { ctx.SessionDestroy() writeValues(ctx) // the cookie and all values should be empty }) // request cookie should be empty iris.Get("/after_destroy", func(ctx *iris.Context) { }) iris.Default.Config.VHost = "mydomain.com" e := httptest.New(iris.Default, t) e.POST("/set").WithJSON(values).Expect().Status(iris.StatusOK).Cookies().NotEmpty() e.GET("/get").Expect().Status(iris.StatusOK).JSON().Object().Equal(values) if testEnableSubdomain { es := subdomainTester(e) es.Request("GET", "/get").Expect().Status(iris.StatusOK).JSON().Object().Equal(values) } // test destroy which also clears first d := e.GET("/destroy").Expect().Status(iris.StatusOK) d.JSON().Null() // This removed: d.Cookies().Empty(). Reason: // httpexpect counts the cookies setted or deleted at the response time, but cookie is not removed, to be really removed needs to SetExpire(now-1second) so, // test if the cookies removed on the next request, like the browser's behavior. e.GET("/after_destroy").Expect().Status(iris.StatusOK).Cookies().Empty() // set and clear again e.POST("/set").WithJSON(values).Expect().Status(iris.StatusOK).Cookies().NotEmpty() e.GET("/clear").Expect().Status(iris.StatusOK).JSON().Object().Empty() }