api_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package api
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "net/http"
  6. "net/http/httptest"
  7. "path/filepath"
  8. "testing"
  9. "github.com/remogatto/prettytest"
  10. "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/config"
  11. "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/renderer"
  12. )
  13. var (
  14. server *httptest.Server
  15. teacherUrl string
  16. )
  17. // Start of setup
  18. type testSuite struct {
  19. prettytest.Suite
  20. }
  21. func exp(name string) string {
  22. path := filepath.Join("testdata/expectations", name+".html")
  23. exp, err := ioutil.ReadFile(path)
  24. if err != nil {
  25. panic(err)
  26. }
  27. return string(exp)
  28. }
  29. func TestRunner(t *testing.T) {
  30. prettytest.Run(
  31. t,
  32. new(testSuite),
  33. )
  34. }
  35. func (t *testSuite) BeforeAll() {
  36. config.LogLevel = config.LOG_LEVEL_OFF
  37. config.DocumentRootDir = "./testdata/documents"
  38. rend := renderer.NewJSONRenderer()
  39. renderer.Use(rend)
  40. }
  41. func (t *testSuite) TestGetDocumentsFromFS() {
  42. documents := getDocumentsFromFS()
  43. t.Equal(2, len(documents))
  44. t.Equal("Document 1", documents[0].Config.Name)
  45. t.Equal("Document 2", documents[1].Config.Name)
  46. }
  47. func (t *testSuite) TestDocumentsHandler() {
  48. var data struct {
  49. Documents []Document
  50. }
  51. req, err := http.NewRequest("GET", "/documents", nil)
  52. t.Nil(err)
  53. rr := httptest.NewRecorder()
  54. documentsHandler().ServeHTTP(rr, req)
  55. t.Equal(http.StatusOK, rr.Code)
  56. err = json.Unmarshal(rr.Body.Bytes(), &data)
  57. t.Nil(err)
  58. t.Equal(2, len(data.Documents))
  59. t.Equal("Document 1", data.Documents[0].Config.Name)
  60. }
  61. // func (t *testSuite) TestGetToken() {
  62. // tokenUrl := fmt.Sprintf("%s/get-token", server.URL)
  63. // resp, err := http.Get(tokenUrl)
  64. // defer resp.Body.Close()
  65. // t.Nil(err)
  66. // _, err = ioutil.ReadAll(resp.Body)
  67. // t.Nil(err)
  68. // t.Equal(http.StatusOK, resp.StatusCode)
  69. // }
  70. // func (t *testSuite) TestGetTeacher() {
  71. // token, err := getToken()
  72. // t.Nil(err)
  73. // if !t.Failed() {
  74. // teacher := orm.Teacher{}
  75. // teacherUrl = fmt.Sprintf("%s/teachers/andrea.fazzi", server.URL)
  76. // resp, err := sendAuthenticatedRequest("GET", teacherUrl, token)
  77. // t.Nil(err)
  78. // if !t.Failed() {
  79. // defer resp.Body.Close()
  80. // body, err := ioutil.ReadAll(resp.Body)
  81. // t.Nil(err)
  82. // t.Equal(http.StatusOK, resp.StatusCode)
  83. // if !t.Failed() {
  84. // err = json.Unmarshal(body, &teacher)
  85. // t.Equal("Andrea", teacher.Name)
  86. // t.Equal("FAZZI", teacher.Surname)
  87. // }
  88. // }
  89. // }
  90. // }
  91. // func getToken() ([]byte, error) {
  92. // resp, err := http.Get(fmt.Sprintf("%s/get-token", server.URL))
  93. // defer resp.Body.Close()
  94. // if err != nil {
  95. // return nil, err
  96. // }
  97. // token, err := ioutil.ReadAll(resp.Body)
  98. // if err != nil {
  99. // return nil, err
  100. // }
  101. // return token, nil
  102. // }
  103. // func sendAuthenticatedRequest(method string, url string, token []byte) (*http.Response, error) {
  104. // req, err := http.NewRequest(method, url, nil)
  105. // if err != nil {
  106. // return nil, err
  107. // }
  108. // req.Header.Set("Authorization", fmt.Sprintf("bearer %v", string(token)))
  109. // resp, err := http.DefaultClient.Do(req)
  110. // if err != nil {
  111. // return nil, err
  112. // }
  113. // return resp, nil
  114. // }