package main import ( "bytes" "encoding/json" "io/ioutil" "net/http" "os" "path/filepath" "testing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/testing/require" ) type sampleRPCRequest struct { Name string `json:"name"` ETHMethod string `json:"eth_method"` Address string `json:"address"` } func Test_parseAndCaptureRequest(t *testing.T) { tmpFile := filepath.Join(os.TempDir(), "faketest.log") t.Cleanup(func() { require.NoError(t, os.RemoveAll(tmpFile)) }) body := &sampleRPCRequest{ Name: "eth2", ETHMethod: "eth2_produceBlock", Address: "0x0923920930923", } enc, err := json.Marshal(body) require.NoError(t, err) httpReq, err := http.NewRequest("GET", "/", bytes.NewBuffer(enc)) require.NoError(t, err) reqContent := map[string]interface{}{} err = parseRequest(httpReq, &reqContent) require.NoError(t, err) // If the file doesn't exist, create it, or append to the file. f, err := os.OpenFile( tmpFile, os.O_APPEND|os.O_CREATE|os.O_RDWR, params.BeaconIoConfig().ReadWritePermissions, ) require.NoError(t, err) err = captureRequest(f, reqContent) require.NoError(t, err) require.NoError(t, f.Close()) f, err = os.Open(tmpFile) require.NoError(t, err) fileContents, err := ioutil.ReadAll(f) require.NoError(t, err) receivedContent := map[string]interface{}{} err = json.Unmarshal(fileContents, &receivedContent) require.NoError(t, err) for key, val := range reqContent { receivedVal, ok := receivedContent[key] require.Equal(t, true, ok) require.DeepEqual(t, val, receivedVal) } }