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  }