package routebuildermdl import ( "bytes" "mime/multipart" "net/http" "net/http/httptest" "testing" "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl" "github.com/stretchr/testify/assert" "github.com/gin-gonic/gin" ) var router *gin.Engine func DummyService(data []byte) (interface{}, error) { return "success", nil } func RDummyService(data []byte) (interface{}, error) { return "success", nil } func RBDummyService(data []byte) (interface{}, error) { return "success", nil } func MultiparService(form *multipart.Form) (interface{}, error) { return "success", nil } func init() { router = gin.New() o := router.Group("/o") r := router.Group("/r") c := r.Group("/c") Init(o, r, c) RegisterNormalService("DummyService", DummyService, false, false) RegisterNormalService("RDummyService", RDummyService, true, false) RegisterNormalService("RBDummyService", RBDummyService, true, true) RegisterFormBasedService("MultiparService", MultiparService, true, true) } func Test_OpenHandler(t *testing.T) { login := ` { "loginId": "demo", "password": "demo" } ` req, _ := http.NewRequest("POST", "/o/mql", bytes.NewBuffer([]byte(login))) req.Header.Set("Service-Header", "DummyService") resp := httptest.NewRecorder() router.ServeHTTP(resp, req) assert.Equal(t, resp.Code, 200) } func Test_RestrictedHandler(t *testing.T) { login := ` { "loginId": "demo", "password": "demo" } ` req, _ := http.NewRequest("POST", "/r/mql", bytes.NewBuffer([]byte(login))) req.Header.Set("Service-Header", "RDummyService") resp := httptest.NewRecorder() router.ServeHTTP(resp, req) assert.Equal(t, resp.Code, 200) } func Test_RoleBasedHandler(t *testing.T) { login := ` { "loginId": "demo", "password": "demo" } ` req, _ := http.NewRequest("POST", "/r/c/mql", bytes.NewBuffer([]byte(login))) req.Header.Set("Service-Header", "RBDummyService") resp := httptest.NewRecorder() router.ServeHTTP(resp, req) assert.Equal(t, resp.Code, 200) } func Test1_RestrictedHandler(t *testing.T) { login := ` { "loginId": "demo", "password": "demo" } ` req, _ := http.NewRequest("POST", "/r/c/mql", bytes.NewBuffer([]byte(login))) req.Header.Set("Service-Header", "RDummyService") resp := httptest.NewRecorder() router.ServeHTTP(resp, req) assert.Equal(t, resp.Code, 417) } func Test1_MultipartHandler(t *testing.T) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) part, _ := writer.CreateFormFile("file", "tmp.json") part.Write([]byte("tmp data")) writer.Close() req, _ := http.NewRequest("POST", "/r/c/mql", body) req.Header.Set("Service-Header", "MultiparService") req.Header.Add("Content-Type", writer.FormDataContentType()) resp := httptest.NewRecorder() router.ServeHTTP(resp, req) assert.Equal(t, resp.Code, 200) } func Test2_MultipartHandler(t *testing.T) { errormdl.IsTestingNegetiveCaseOn = true body := &bytes.Buffer{} writer := multipart.NewWriter(body) part, _ := writer.CreateFormFile("file", "tmp.json") part.Write([]byte("tmp data")) writer.Close() req, _ := http.NewRequest("POST", "/r/c/mql", body) req.Header.Set("Service-Header", "MultiparService") req.Header.Add("Content-Type", writer.FormDataContentType()) resp := httptest.NewRecorder() router.ServeHTTP(resp, req) errormdl.IsTestingNegetiveCaseOn = false assert.Equal(t, resp.Code, 417) }