package iris // Contains tests for render/rest & render/template import ( "encoding/xml" "strconv" "testing" ) type renderTestInformationType struct { XMLName xml.Name `xml:"info"` FirstAttr string `xml:"first,attr"` SecondAttr string `xml:"second,attr"` Name string `xml:"name",json:"name"` Birth string `xml:"birth",json:"birth"` Stars int `xml:"stars",json:"stars"` } func TestRenderRest(t *testing.T) { initDefault() dataContents := []byte("Some binary data here.") textContents := "Plain text here" JSONPContents := map[string]string{"hello": "jsonp"} JSONPCallback := "callbackName" JSONXMLContents := renderTestInformationType{ XMLName: xml.Name{Local: "info", Space: "info"}, // only need to verify that later FirstAttr: "this is the first attr", SecondAttr: "this is the second attr", Name: "Iris web framework", Birth: "13 March 2016", Stars: 4064, } markdownContents := "# Hello dynamic markdown from Iris" Get("/data", func(ctx *Context) { ctx.Data(StatusOK, dataContents) }) Get("/text", func(ctx *Context) { ctx.Text(StatusOK, textContents) }) Get("/jsonp", func(ctx *Context) { ctx.JSONP(StatusOK, JSONPCallback, JSONPContents) }) Get("/json", func(ctx *Context) { ctx.JSON(StatusOK, JSONXMLContents) }) Get("/xml", func(ctx *Context) { ctx.XML(StatusOK, JSONXMLContents) }) Get("/markdown", func(ctx *Context) { ctx.Markdown(StatusOK, markdownContents) }) e := Tester(t) dataT := e.GET("/data").Expect().Status(StatusOK) dataT.Header("Content-Type").Equal("application/octet-stream") dataT.Body().Equal(string(dataContents)) textT := e.GET("/text").Expect().Status(StatusOK) textT.Header("Content-Type").Equal("text/plain; charset=UTF-8") textT.Body().Equal(textContents) JSONPT := e.GET("/jsonp").Expect().Status(StatusOK) JSONPT.Header("Content-Type").Equal("application/javascript; charset=UTF-8") JSONPT.Body().Equal(JSONPCallback + `({"hello":"jsonp"});`) JSONT := e.GET("/json").Expect().Status(StatusOK) JSONT.Header("Content-Type").Equal("application/json; charset=UTF-8") JSONT.JSON().Object().Equal(JSONXMLContents) XMLT := e.GET("/xml").Expect().Status(StatusOK) XMLT.Header("Content-Type").Equal("text/xml; charset=UTF-8") XMLT.Body().Equal(`<` + JSONXMLContents.XMLName.Local + ` first="` + JSONXMLContents.FirstAttr + `" second="` + JSONXMLContents.SecondAttr + `">` + JSONXMLContents.Name + `` + JSONXMLContents.Birth + `` + strconv.Itoa(JSONXMLContents.Stars) + ``) markdownT := e.GET("/markdown").Expect().Status(StatusOK) markdownT.Header("Content-Type").Equal("text/html; charset=UTF-8") markdownT.Body().Equal("

" + markdownContents[2:] + "

\n") }