123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package api
- import (
- "bytes"
- "encoding/json"
- "net/http"
- "net/http/httptest"
- "testing"
- "time"
- "github.com/jinzhu/gorm"
- "github.com/remogatto/prettytest"
- "gogs.carducci-dante.gov.it/karmen/core/config"
- "gogs.carducci-dante.gov.it/karmen/core/orm"
- )
- var (
- token string
- )
- // Start of setup
- type testSuite struct {
- prettytest.Suite
- }
- func TestRunner(t *testing.T) {
- prettytest.Run(
- t,
- new(testSuite),
- )
- }
- func (t *testSuite) BeforeAll() {
- var (
- db *gorm.DB
- err error
- )
- connected := false
- for !connected {
- time.Sleep(10 * time.Second)
- db, err = orm.New("karmen:karmen@/karmen_test?charset=utf8&parseTime=True&loc=Local")
- if err != nil {
- time.Sleep(5 * time.Second)
- continue
- }
- connected = true
- }
- orm.Use(db)
- orm.AutoMigrate()
- err = config.ReadFile("testdata/config.yaml", config.Config)
- if err != nil {
- panic(err)
- }
- config.Config.LogLevel = config.LOG_LEVEL_OFF
- req, err := http.NewRequest("GET", "/get_token", nil)
- if err != nil {
- panic(err)
- }
- req.SetBasicAuth("admin", "admin")
- rr := httptest.NewRecorder()
- tokenHandler().ServeHTTP(rr, req)
- var data struct {
- Token string
- UserID string
- }
- if err := json.Unmarshal(rr.Body.Bytes(), &data); err != nil {
- panic(err)
- }
- token = data.Token
- }
- func (t *testSuite) TestGetTeachersJSON() {
- var teachers []*orm.Teacher
- req, err := http.NewRequest("GET", "/teachers?format=json", nil)
- if err != nil {
- panic(err)
- }
- pattern := PathPattern{
- "/api/%s",
- "/%s?format=json&tpl_layout=base&tpl_content=%s",
- []string{"GET"},
- }
- rr := httptest.NewRecorder()
- modelHandler("teachers", pattern).ServeHTTP(rr, req)
- t.Equal(http.StatusOK, rr.Code)
- if !t.Failed() {
- err := json.Unmarshal(rr.Body.Bytes(), &teachers)
- t.Nil(err)
- if !t.Failed() {
- t.Equal("AGOSTINO", teachers[0].Surname)
- }
- }
- }
- func (t *testSuite) TestPostTeacherJSON() {
- teacher := new(orm.Teacher)
- teacher.Name = "Mario"
- teacher.Surname = "ROSSI"
- data, err := json.Marshal(teacher)
- t.Nil(err)
- req, err := http.NewRequest("POST", "/teachers/add?format=json", bytes.NewBuffer(data))
- if err != nil {
- panic(err)
- }
- pattern := PathPattern{
- "/api/%s/add",
- "/%s?format=json&tpl_layout=base&tpl_content=%s",
- []string{"POST"},
- }
- rr := httptest.NewRecorder()
- modelHandler("teachers", pattern).ServeHTTP(rr, req)
- t.Equal(http.StatusOK, rr.Code)
- // if !t.Failed() {
- // err := json.Unmarshal(rr.Body.Bytes(), &teachers)
- // t.Nil(err)
- // if !t.Failed() {
- // t.Equal("AGOSTINO", teachers[0].Surname)
- // }
- // }
- }
|