github.com/prysmaticlabs/prysm@v1.4.4/tools/http-request-sink/main_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "io/ioutil" 7 "net/http" 8 "os" 9 "path/filepath" 10 "testing" 11 12 "github.com/prysmaticlabs/prysm/shared/params" 13 "github.com/prysmaticlabs/prysm/shared/testutil/require" 14 ) 15 16 type sampleRPCRequest struct { 17 Name string `json:"name"` 18 ETHMethod string `json:"eth_method"` 19 Address string `json:"address"` 20 } 21 22 func Test_parseAndCaptureRequest(t *testing.T) { 23 tmpFile := filepath.Join(os.TempDir(), "faketest.log") 24 t.Cleanup(func() { 25 require.NoError(t, os.RemoveAll(tmpFile)) 26 }) 27 body := &sampleRPCRequest{ 28 Name: "eth2", 29 ETHMethod: "eth2_produceBlock", 30 Address: "0x0923920930923", 31 } 32 enc, err := json.Marshal(body) 33 require.NoError(t, err) 34 httpReq, err := http.NewRequest("GET", "/", bytes.NewBuffer(enc)) 35 require.NoError(t, err) 36 37 reqContent := map[string]interface{}{} 38 err = parseRequest(httpReq, &reqContent) 39 require.NoError(t, err) 40 41 // If the file doesn't exist, create it, or append to the file. 42 f, err := os.OpenFile( 43 tmpFile, 44 os.O_APPEND|os.O_CREATE|os.O_RDWR, 45 params.BeaconIoConfig().ReadWritePermissions, 46 ) 47 require.NoError(t, err) 48 49 err = captureRequest(f, reqContent) 50 require.NoError(t, err) 51 require.NoError(t, f.Close()) 52 53 f, err = os.Open(tmpFile) 54 require.NoError(t, err) 55 fileContents, err := ioutil.ReadAll(f) 56 require.NoError(t, err) 57 58 receivedContent := map[string]interface{}{} 59 err = json.Unmarshal(fileContents, &receivedContent) 60 require.NoError(t, err) 61 62 for key, val := range reqContent { 63 receivedVal, ok := receivedContent[key] 64 require.Equal(t, true, ok) 65 require.DeepEqual(t, val, receivedVal) 66 } 67 }