From 22e6d3730760b314a03d26233a72d1fdcbf478e1 Mon Sep 17 00:00:00 2001 From: Samuel Laferriere Date: Tue, 15 Oct 2024 23:31:12 +0100 Subject: [PATCH] tests: fix e2e tests --- e2e/server_test.go | 22 ++++++++++------------ server/errors.go | 4 ++++ server/handlers.go | 4 ++-- server/middleware.go | 2 +- server/server.go | 3 ++- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/e2e/server_test.go b/e2e/server_test.go index f7a643e..2854f65 100644 --- a/e2e/server_test.go +++ b/e2e/server_test.go @@ -199,21 +199,19 @@ func TestProxyClientServerIntegration(t *testing.T) { require.NoError(t, err) }) - t.Run("get data edge cases", func(t *testing.T) { - testCert := []byte("") + t.Run("get data edge cases - unsupported version byte 01", func(t *testing.T) { + testCert := []byte{1} _, err := daClient.GetData(ts.Ctx, testCert) require.Error(t, err) - assert.True(t, strings.Contains(err.Error(), - "commitment is too short") && !isNilPtrDerefPanic(err.Error())) - - testCert = []byte{1} - _, err = daClient.GetData(ts.Ctx, testCert) - require.Error(t, err) - assert.True(t, strings.Contains(err.Error(), - "commitment is too short") && !isNilPtrDerefPanic(err.Error())) + assert.True(t, + strings.Contains(err.Error(), "unsupported version byte 01") && !isNilPtrDerefPanic(err.Error())) + }) - testCert = []byte(e2e.RandString(10000)) - _, err = daClient.GetData(ts.Ctx, testCert) + t.Run("get data edge cases - huge cert", func(t *testing.T) { + // TODO: we need to add the 0 version byte at the beginning. + // should this not be done automatically by the simple_commitment client? + testCert := append([]byte{0}, []byte(e2e.RandString(10000))...) + _, err := daClient.GetData(ts.Ctx, testCert) require.Error(t, err) assert.True(t, strings.Contains(err.Error(), "failed to decode DA cert to RLP format: rlp: expected input list for verify.Certificate") && diff --git a/server/errors.go b/server/errors.go index f53c628..77ff759 100644 --- a/server/errors.go +++ b/server/errors.go @@ -18,3 +18,7 @@ func (me MetaError) Error() string { me.Meta.Mode, me.Meta.CertVersion) } + +func (me MetaError) Unwrap() error { + return me.Err +} diff --git a/server/handlers.go b/server/handlers.go index 49e301c..30b8946 100644 --- a/server/handlers.go +++ b/server/handlers.go @@ -23,7 +23,7 @@ func (svr *Server) handleHealth(w http.ResponseWriter, _ *http.Request) error { // ================================================================================================= func (svr *Server) handleGetSimpleCommitment(w http.ResponseWriter, r *http.Request) error { - versionByte, err := parseVersionByte(r) + versionByte, err := parseVersionByte(w, r) if err != nil { return fmt.Errorf("error parsing version byte: %w", err) } @@ -73,7 +73,7 @@ func (svr *Server) handleGetOPKeccakCommitment(w http.ResponseWriter, r *http.Re } func (svr *Server) handleGetOPGenericCommitment(w http.ResponseWriter, r *http.Request) error { - versionByte, err := parseVersionByte(r) + versionByte, err := parseVersionByte(w, r) if err != nil { return fmt.Errorf("error parsing version byte: %w", err) } diff --git a/server/middleware.go b/server/middleware.go index 63f2bc8..c4ba2cb 100644 --- a/server/middleware.go +++ b/server/middleware.go @@ -31,7 +31,7 @@ func withMetrics( return err } // we assume that every route will set the status header - versionByte, err := parseVersionByte(r) + versionByte, err := parseVersionByte(w, r) if err != nil { return fmt.Errorf("metrics middleware: error parsing version byte: %w", err) } diff --git a/server/server.go b/server/server.go index c32d011..720abdb 100644 --- a/server/server.go +++ b/server/server.go @@ -139,7 +139,7 @@ func (svr *Server) GetStoreStats(bt store.BackendType) (*store.Stats, error) { return nil, fmt.Errorf("store not found") } -func parseVersionByte(r *http.Request) (byte, error) { +func parseVersionByte(w http.ResponseWriter, r *http.Request) (byte, error) { vars := mux.Vars(r) // decode version byte versionByteHex, ok := vars["version_byte_hex"] @@ -157,6 +157,7 @@ func parseVersionByte(r *http.Request) (byte, error) { case byte(commitments.CertV0): return versionByte[0], nil default: + http.Error(w, fmt.Sprintf("unsupported version byte %x", versionByte), http.StatusBadRequest) return 0, fmt.Errorf("unsupported version byte %x", versionByte) } }