package routebuildermdl import ( "bytes" "fmt" "mime/multipart" "net/http" "net/http/httptest" "testing" "github.com/tidwall/gjson" "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/servicebuildermdl" "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl" "github.com/stretchr/testify/assert" "github.com/gin-gonic/gin" ) var router *gin.Engine func DummyService(data *gjson.Result, pricipalObj servicebuildermdl.Principal) (interface{}, error) { return "success", nil } func RDummyService(data *gjson.Result, pricipalObj servicebuildermdl.Principal) (interface{}, error) { fmt.Println(pricipalObj) return "success", nil } func RBDummyService(data *gjson.Result, pricipalObj servicebuildermdl.Principal) (interface{}, error) { return "success", nil } func MultiparService(form *multipart.Form, pricipalObj servicebuildermdl.Principal) (interface{}, error) { return "success", nil } type testBl struct { servicebuildermdl.AbstractBusinessLogicHolder } func GetBLHolder() *testBl { test := testBl{} test.New(&servicebuildermdl.Principal{}) return &test } // func MasterService() { // // test := GetBLHolder() // // sb := servicebuildermdl.GetSB("MasterService", &test.AbstractBusinessLogicHolder). // // AddStep("Test -1", "", nil, nil, nil) // // RegisterMasterService("MasterService", sb, true, true) // } func init() { router = gin.New() o := router.Group("/o") r := router.Group("/r") c := r.Group("/c") Init(o, r, c, "mysupersecretpassword") CreateResponseHeader("DummyService"). EnableReponseCache(). AddMethod("test", nil). SetResponseHeader() CreateResponseHeader("RDummyService").SetResponseHeader() RegisterNormalService("DummyService", DummyService, false, false) RegisterNormalService("RDummyService", RDummyService, true, false) RegisterNormalService("RBDummyService", RBDummyService, true, true) RegisterFormBasedService("MultiparService", MultiparService, true, true) CreateResponseHeader("DummyService"). DisableReponseCache(). SetResponseHeader() // MasterService() } 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") req.Header.Set("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJzYW5kZWVwc3MiLCJncm91cHMiOlsiYWRtaW4iXX0.chD9SRf_UqnV9eT5PQ-z52iA7iOFWB4Ck0BuJVF5Sgo") 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 Test2_RestrictedHandler(t *testing.T) { errormdl.IsTestingNegetiveCaseOn2 = true 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) errormdl.IsTestingNegetiveCaseOn2 = true 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) } func Test3_MultipartHandler(t *testing.T) { errormdl.IsTestingNegetiveCaseOn1 = 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.IsTestingNegetiveCaseOn1 = false assert.Equal(t, resp.Code, 417) } func Test4_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, 417) } func Test_MasterService(t *testing.T) { req, _ := http.NewRequest("POST", "/r/c/mql", nil) req.Header.Set("Service-Header", "MasterService") resp := httptest.NewRecorder() router.ServeHTTP(resp, req) assert.Equal(t, resp.Code, 417) }