quorum/ethclient/privateTransactionManagerCl...

54 lines
1.3 KiB
Go

package ethclient
import (
"encoding/json"
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
const (
arbitraryBase64Data = "YXJiaXRyYXJ5IGRhdGE=" // = "arbitrary data"
)
func TestPrivateTransactionManagerClient_storeRaw(t *testing.T) {
// mock tessera client
arbitraryServer := newStoreRawServer()
defer arbitraryServer.Close()
testObject, err := newPrivateTransactionManagerClient(arbitraryServer.URL)
assert.NoError(t, err)
key, err := testObject.storeRaw([]byte("arbitrary payload"), "arbitrary private from")
assert.NoError(t, err)
assert.Equal(t, "arbitrary data", string(key))
}
func newStoreRawServer() *httptest.Server {
arbitraryResponse := fmt.Sprintf(`
{
"key": "%s"
}
`, arbitraryBase64Data)
mux := http.NewServeMux()
mux.HandleFunc("/storeraw", func(w http.ResponseWriter, req *http.Request) {
if req.Method == "POST" {
// parse request
var storeRawReq storeRawReq
if err := json.NewDecoder(req.Body).Decode(&storeRawReq); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// send response
_, _ = fmt.Fprintf(w, "%s", arbitraryResponse)
} else {
http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
}
})
return httptest.NewServer(mux)
}