github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/it/impl_httpconventions_test.go (about) 1 /* 2 * Copyright (c) 2022-present unTill Pro, Ltd. 3 */ 4 5 package sys_it 6 7 import ( 8 "errors" 9 "net/http" 10 "testing" 11 12 "github.com/stretchr/testify/require" 13 14 "github.com/voedger/voedger/pkg/istructs" 15 coreutils "github.com/voedger/voedger/pkg/utils" 16 "github.com/voedger/voedger/pkg/vit" 17 ) 18 19 func TestBasicUsage_HTTPConventions(t *testing.T) { 20 require := require.New(t) 21 vit.MockQryExec = func(input string, callback istructs.ExecQueryCallback) error { 22 rr := &rr{res: input} 23 require.NoError(callback(rr)) 24 return errors.New("test error") 25 } 26 vit.MockCmdExec = func(input string, args istructs.ExecCommandArgs) error { 27 return errors.New("test error") 28 } 29 vit := vit.NewVIT(t, &vit.SharedConfig_App1) 30 defer vit.TearDown() 31 ws := vit.WS(istructs.AppQName_test1_app1, "test_ws") 32 33 t.Run("query", func(t *testing.T) { 34 body := `{"args": {"Input": "world"},"elements": [{"fields": ["Res"]}]}` 35 resp := vit.PostWS(ws, "q.app1pkg.MockQry", body, coreutils.ExpectSysError500()) 36 require.Equal("world", resp.SectionRow()[0]) 37 require.Equal(coreutils.ApplicationJSON, resp.HTTPResp.Header["Content-Type"][0]) 38 require.Equal(http.StatusOK, resp.HTTPResp.StatusCode) 39 require.Equal(http.StatusInternalServerError, resp.SysError.HTTPStatus) 40 require.Empty(resp.SysError.Data) 41 require.Empty(resp.SysError.QName) 42 resp.Println() 43 }) 44 45 t.Run("command", func(t *testing.T) { 46 body := `{"args": {"Input": "1"}}` 47 resp := vit.PostWS(ws, "c.app1pkg.MockCmd", body, coreutils.Expect500()) 48 require.Equal(coreutils.ApplicationJSON, resp.HTTPResp.Header["Content-Type"][0]) 49 require.Equal(http.StatusInternalServerError, resp.HTTPResp.StatusCode) 50 require.Equal(http.StatusInternalServerError, resp.SysError.HTTPStatus) 51 require.Empty(resp.SysError.Data) 52 require.Empty(resp.SysError.QName) 53 resp.Println() 54 }) 55 }