diff --git a/api/client/BUILD.bazel b/api/client/BUILD.bazel index f5ddc9bb6c81..f29007f35ae9 100644 --- a/api/client/BUILD.bazel +++ b/api/client/BUILD.bazel @@ -9,7 +9,10 @@ go_library( ], importpath = "github.com/OffchainLabs/prysm/v6/api/client", visibility = ["//visibility:public"], - deps = ["@com_github_pkg_errors//:go_default_library"], + deps = [ + "//api:go_default_library", + "@com_github_pkg_errors//:go_default_library", + ], ) go_test( diff --git a/api/client/beacon/BUILD.bazel b/api/client/beacon/BUILD.bazel index 0013c9d4530e..0f4d08a581a0 100644 --- a/api/client/beacon/BUILD.bazel +++ b/api/client/beacon/BUILD.bazel @@ -11,6 +11,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/api/client/beacon", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "//api/client:go_default_library", "//api/server:go_default_library", "//api/server/structs:go_default_library", diff --git a/api/client/beacon/client.go b/api/client/beacon/client.go index e5ec0ea24320..ab0f6a96dcfa 100644 --- a/api/client/beacon/client.go +++ b/api/client/beacon/client.go @@ -11,6 +11,7 @@ import ( "regexp" "strconv" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/client" "github.com/OffchainLabs/prysm/v6/api/server" "github.com/OffchainLabs/prysm/v6/api/server/structs" @@ -273,7 +274,7 @@ func (c *Client) SubmitChangeBLStoExecution(ctx context.Context, request []*stru if err != nil { return errors.Wrap(err, "invalid format, failed to create new POST request object") } - req.Header.Set("Content-Type", "application/json") + req.Header.Set(api.ContentTypeHeader, api.JsonMediaType) resp, err := c.Do(req) if err != nil { return err diff --git a/api/client/builder/client.go b/api/client/builder/client.go index f1ad36221d72..b1723bf7dc91 100644 --- a/api/client/builder/client.go +++ b/api/client/builder/client.go @@ -171,7 +171,7 @@ func (c *Client) do(ctx context.Context, method string, path string, body io.Rea if err != nil { return } - req.Header.Add("User-Agent", version.BuildData()) + req.Header.Add(api.UserAgentHeader, version.BuildData()) for _, o := range opts { o(req) } @@ -232,11 +232,11 @@ func (c *Client) GetHeader(ctx context.Context, slot primitives.Slot, parentHash var getOpts reqOption if c.sszEnabled { getOpts = func(r *http.Request) { - r.Header.Set("Accept", api.OctetStreamMediaType) + r.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) } } else { getOpts = func(r *http.Request) { - r.Header.Set("Accept", api.JsonMediaType) + r.Header.Set(api.AcceptHeader, api.JsonMediaType) } } data, header, err := c.do(ctx, http.MethodGet, path, nil, http.StatusOK, getOpts) @@ -259,8 +259,8 @@ func (c *Client) GetHeader(ctx context.Context, slot primitives.Slot, parentHash func (c *Client) parseHeaderResponse(data []byte, header http.Header, slot primitives.Slot) (SignedBid, error) { var versionHeader string - if c.sszEnabled || header.Get(api.VersionHeader) != "" { - versionHeader = header.Get(api.VersionHeader) + if c.sszEnabled || header.Get(api.EthConsensusVersionHeader) != "" { + versionHeader = header.Get(api.EthConsensusVersionHeader) } else { // If we don't have a version header, attempt to parse JSON for version v := &VersionResponse{} @@ -390,8 +390,8 @@ func (c *Client) RegisterValidator(ctx context.Context, svr []*ethpb.SignedValid ) if c.sszEnabled { postOpts = func(r *http.Request) { - r.Header.Set("Content-Type", api.OctetStreamMediaType) - r.Header.Set("Accept", api.OctetStreamMediaType) + r.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + r.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) } body, err = sszValidatorRegisterRequest(svr) if err != nil { @@ -401,8 +401,8 @@ func (c *Client) RegisterValidator(ctx context.Context, svr []*ethpb.SignedValid } } else { postOpts = func(r *http.Request) { - r.Header.Set("Content-Type", api.JsonMediaType) - r.Header.Set("Accept", api.JsonMediaType) + r.Header.Set(api.ContentTypeHeader, api.JsonMediaType) + r.Header.Set(api.AcceptHeader, api.JsonMediaType) } body, err = jsonValidatorRegisterRequest(svr) if err != nil { @@ -446,7 +446,7 @@ func sszValidatorRegisterRequest(svr []*ethpb.SignedValidatorRegistrationV1) ([] return ssz, nil } -var errResponseVersionMismatch = errors.New("builder API response uses a different version than requested in " + api.VersionHeader + " header") +var errResponseVersionMismatch = errors.New("builder API response uses a different version than requested in " + api.EthConsensusVersionHeader + " header") func getVersionsBlockToPayload(blockVersion int) (int, error) { if blockVersion >= version.Fulu { @@ -525,7 +525,7 @@ func (c *Client) SubmitBlindedBlockPostFulu(ctx context.Context, sb interfaces.R func (c *Client) checkBlockVersion(respBytes []byte, header http.Header) (int, error) { var versionHeader string if c.sszEnabled { - versionHeader = strings.ToLower(header.Get(api.VersionHeader)) + versionHeader = strings.ToLower(header.Get(api.EthConsensusVersionHeader)) } else { // fallback to JSON-based version extraction v := &VersionResponse{} @@ -555,9 +555,9 @@ func (c *Client) buildBlindedBlockRequest(sb interfaces.ReadOnlySignedBeaconBloc return nil, nil, errors.Wrap(err, "could not marshal SSZ for blinded block") } opt := func(r *http.Request) { - r.Header.Set(api.VersionHeader, version.String(sb.Version())) - r.Header.Set("Content-Type", api.OctetStreamMediaType) - r.Header.Set("Accept", api.OctetStreamMediaType) + r.Header.Set(api.EthConsensusVersionHeader, version.String(sb.Version())) + r.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + r.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) } return body, opt, nil } @@ -571,9 +571,9 @@ func (c *Client) buildBlindedBlockRequest(sb interfaces.ReadOnlySignedBeaconBloc return nil, nil, errors.Wrap(err, "error marshaling blinded block to JSON") } opt := func(r *http.Request) { - r.Header.Set(api.VersionHeader, version.String(sb.Version())) - r.Header.Set("Content-Type", api.JsonMediaType) - r.Header.Set("Accept", api.JsonMediaType) + r.Header.Set(api.EthConsensusVersionHeader, version.String(sb.Version())) + r.Header.Set(api.ContentTypeHeader, api.JsonMediaType) + r.Header.Set(api.AcceptHeader, api.JsonMediaType) } return body, opt, nil } @@ -676,7 +676,7 @@ func (c *Client) parseBlindedBlockResponseJSON( // happy path, and an error with information about the server response body for a non-200 response. func (c *Client) Status(ctx context.Context) error { getOpts := func(r *http.Request) { - r.Header.Set("Accept", api.JsonMediaType) + r.Header.Set(api.AcceptHeader, api.JsonMediaType) } _, _, err := c.do(ctx, http.MethodGet, getStatus, nil, http.StatusOK, getOpts) return err diff --git a/api/client/builder/client_test.go b/api/client/builder/client_test.go index 13f3d65483d7..0926bd48950b 100644 --- a/api/client/builder/client_test.go +++ b/api/client/builder/client_test.go @@ -12,7 +12,6 @@ import ( "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" - "github.com/OffchainLabs/prysm/v6/testing/util" "github.com/OffchainLabs/prysm/v6/config/params" "github.com/OffchainLabs/prysm/v6/consensus-types/blocks" "github.com/OffchainLabs/prysm/v6/consensus-types/interfaces" @@ -22,6 +21,7 @@ import ( eth "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1" "github.com/OffchainLabs/prysm/v6/testing/assert" "github.com/OffchainLabs/prysm/v6/testing/require" + "github.com/OffchainLabs/prysm/v6/testing/util" "github.com/prysmaticlabs/go-bitfield" log "github.com/sirupsen/logrus" ) @@ -92,8 +92,8 @@ func TestClient_RegisterValidator(t *testing.T) { t.Run("JSON success", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) body, err := io.ReadAll(r.Body) defer func() { require.NoError(t, r.Body.Close()) @@ -127,8 +127,8 @@ func TestClient_RegisterValidator(t *testing.T) { t.Run("SSZ success", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) body, err := io.ReadAll(r.Body) defer func() { require.NoError(t, r.Body.Close()) @@ -225,7 +225,7 @@ func TestClient_GetHeader(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, expectedPath, r.URL.Path) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) return &http.Response{ StatusCode: http.StatusOK, Body: io.NopCloser(bytes.NewBufferString(testExampleHeaderResponse)), @@ -260,7 +260,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("bellatrix ssz", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) epr := &ExecHeaderResponse{} require.NoError(t, json.Unmarshal([]byte(testExampleHeaderResponse), epr)) @@ -269,7 +269,7 @@ func TestClient_GetHeader(t *testing.T) { ssz, err := pro.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "bellatrix") + header.Set(api.EthConsensusVersionHeader, "bellatrix") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -306,7 +306,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("capella", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) return &http.Response{ StatusCode: http.StatusOK, @@ -338,7 +338,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("capella ssz", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) epr := &ExecHeaderResponseCapella{} require.NoError(t, json.Unmarshal([]byte(testExampleHeaderResponseCapella), epr)) @@ -347,7 +347,7 @@ func TestClient_GetHeader(t *testing.T) { ssz, err := pro.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "capella") + header.Set(api.EthConsensusVersionHeader, "capella") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -380,7 +380,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("deneb", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) return &http.Response{ StatusCode: http.StatusOK, @@ -420,7 +420,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("deneb ssz", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) epr := &ExecHeaderResponseDeneb{} require.NoError(t, json.Unmarshal([]byte(testExampleHeaderResponseDeneb), epr)) @@ -429,7 +429,7 @@ func TestClient_GetHeader(t *testing.T) { ssz, err := pro.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "deneb") + header.Set(api.EthConsensusVersionHeader, "deneb") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -488,7 +488,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("electra", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) return &http.Response{ StatusCode: http.StatusOK, @@ -533,7 +533,7 @@ func TestClient_GetHeader(t *testing.T) { t.Run("electra ssz", func(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) require.Equal(t, expectedPath, r.URL.Path) epr := &ExecHeaderResponseElectra{} require.NoError(t, json.Unmarshal([]byte(testExampleHeaderResponseElectra), epr)) @@ -542,7 +542,7 @@ func TestClient_GetHeader(t *testing.T) { ssz, err := pro.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "electra") + header.Set(api.EthConsensusVersionHeader, "electra") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -612,9 +612,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "bellatrix", r.Header.Get("Eth-Consensus-Version")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, "bellatrix", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) return &http.Response{ StatusCode: http.StatusOK, Body: io.NopCloser(bytes.NewBufferString(testExampleExecutionPayload)), @@ -640,9 +640,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "bellatrix", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, "bellatrix", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) epr := &ExecutionPayloadResponse{} require.NoError(t, json.Unmarshal([]byte(testExampleExecutionPayload), epr)) ep := &structs.ExecutionPayload{} @@ -652,7 +652,7 @@ func TestSubmitBlindedBlock(t *testing.T) { ssz, err := pro.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "bellatrix") + header.Set(api.EthConsensusVersionHeader, "bellatrix") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -680,9 +680,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "capella", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, "capella", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) return &http.Response{ StatusCode: http.StatusOK, Body: io.NopCloser(bytes.NewBufferString(testExampleExecutionPayloadCapella)), @@ -710,9 +710,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "capella", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, "capella", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) epr := &ExecutionPayloadResponse{} require.NoError(t, json.Unmarshal([]byte(testExampleExecutionPayloadCapella), epr)) ep := &structs.ExecutionPayloadCapella{} @@ -722,7 +722,7 @@ func TestSubmitBlindedBlock(t *testing.T) { ssz, err := pro.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "capella") + header.Set(api.EthConsensusVersionHeader, "capella") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -753,9 +753,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "deneb", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, "deneb", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) var req structs.SignedBlindedBeaconBlockDeneb err := json.NewDecoder(r.Body).Decode(&req) require.NoError(t, err) @@ -793,9 +793,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "deneb", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, "deneb", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) epr := &ExecPayloadResponseDeneb{} require.NoError(t, json.Unmarshal([]byte(testExampleExecutionPayloadDeneb), epr)) pro, blob, err := epr.ToProto() @@ -807,7 +807,7 @@ func TestSubmitBlindedBlock(t *testing.T) { ssz, err := combined.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "deneb") + header.Set(api.EthConsensusVersionHeader, "deneb") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -840,9 +840,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "electra", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, "electra", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) var req structs.SignedBlindedBeaconBlockElectra err := json.NewDecoder(r.Body).Decode(&req) require.NoError(t, err) @@ -880,9 +880,9 @@ func TestSubmitBlindedBlock(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockPath, r.URL.Path) - require.Equal(t, "electra", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, "electra", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) epr := &ExecPayloadResponseDeneb{} require.NoError(t, json.Unmarshal([]byte(testExampleExecutionPayloadDeneb), epr)) pro, blob, err := epr.ToProto() @@ -894,7 +894,7 @@ func TestSubmitBlindedBlock(t *testing.T) { ssz, err := combined.MarshalSSZ() require.NoError(t, err) header := http.Header{} - header.Set(api.VersionHeader, "electra") + header.Set(api.EthConsensusVersionHeader, "electra") return &http.Response{ StatusCode: http.StatusOK, Header: header, @@ -1566,9 +1566,9 @@ func TestSubmitBlindedBlockPostFulu(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockV2Path, r.URL.Path) - require.Equal(t, "bellatrix", r.Header.Get("Eth-Consensus-Version")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.JsonMediaType, r.Header.Get("Accept")) + require.Equal(t, "bellatrix", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.JsonMediaType, r.Header.Get(api.AcceptHeader)) // Post-Fulu: only return status code, no payload return &http.Response{ StatusCode: http.StatusAccepted, @@ -1591,9 +1591,9 @@ func TestSubmitBlindedBlockPostFulu(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockV2Path, r.URL.Path) - require.Equal(t, "bellatrix", r.Header.Get(api.VersionHeader)) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Content-Type")) - require.Equal(t, api.OctetStreamMediaType, r.Header.Get("Accept")) + require.Equal(t, "bellatrix", r.Header.Get(api.EthConsensusVersionHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.ContentTypeHeader)) + require.Equal(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) // Post-Fulu: only return status code, no payload return &http.Response{ StatusCode: http.StatusAccepted, @@ -1617,7 +1617,7 @@ func TestSubmitBlindedBlockPostFulu(t *testing.T) { hc := &http.Client{ Transport: roundtrip(func(r *http.Request) (*http.Response, error) { require.Equal(t, postBlindedBeaconBlockV2Path, r.URL.Path) - require.Equal(t, "bellatrix", r.Header.Get("Eth-Consensus-Version")) + require.Equal(t, "bellatrix", r.Header.Get(api.EthConsensusVersionHeader)) message := ErrorMessage{ Code: 400, Message: "Bad Request", diff --git a/api/client/event/event_stream.go b/api/client/event/event_stream.go index c8fda249c9ea..334fa868498a 100644 --- a/api/client/event/event_stream.go +++ b/api/client/event/event_stream.go @@ -73,8 +73,8 @@ func (h *EventStream) Subscribe(eventsChannel chan<- *Event) { Data: []byte(errors.Wrap(err, "failed to create HTTP request").Error()), } } - req.Header.Set("Accept", api.EventStreamMediaType) - req.Header.Set("Connection", api.KeepAlive) + req.Header.Set(api.AcceptHeader, api.EventStreamMediaType) + req.Header.Set(api.ConnectionHeader, api.KeepAlive) resp, err := h.httpClient.Do(req) if err != nil { eventsChannel <- &Event{ diff --git a/api/client/options.go b/api/client/options.go index 31580ffec383..caaf0257770d 100644 --- a/api/client/options.go +++ b/api/client/options.go @@ -4,6 +4,8 @@ import ( "fmt" "net/http" "time" + + "github.com/OffchainLabs/prysm/v6/api" ) // ReqOption is a request functional option. @@ -12,14 +14,14 @@ type ReqOption func(*http.Request) // WithSSZEncoding is a request functional option that adds SSZ encoding header. func WithSSZEncoding() ReqOption { return func(req *http.Request) { - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.AcceptEncodingHeader, api.OctetStreamMediaType) } } // WithAuthorizationToken is a request functional option that adds header for authorization token. func WithAuthorizationToken(token string) ReqOption { return func(req *http.Request) { - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) + req.Header.Set(api.AuthorizationHeader, fmt.Sprintf("%s %s", api.BearerAuthorization, token)) } } diff --git a/api/headers.go b/api/headers.go index 69e279416c23..ac3601b381d2 100644 --- a/api/headers.go +++ b/api/headers.go @@ -3,18 +3,38 @@ package api import "net/http" const ( - VersionHeader = "Eth-Consensus-Version" - ExecutionPayloadBlindedHeader = "Eth-Execution-Payload-Blinded" - ExecutionPayloadValueHeader = "Eth-Execution-Payload-Value" - ConsensusBlockValueHeader = "Eth-Consensus-Block-Value" - JsonMediaType = "application/json" - OctetStreamMediaType = "application/octet-stream" - EventStreamMediaType = "text/event-stream" - KeepAlive = "keep-alive" + // Headers + EthConsensusVersionHeader = "Eth-Consensus-Version" + EthExecutionPayloadBlindedHeader = "Eth-Execution-Payload-Blinded" + EthExecutionPayloadValueHeader = "Eth-Execution-Payload-Value" + EthConsensusBlockValueHeader = "Eth-Consensus-Block-Value" + AcceptEncodingHeader = "Accept-Encoding" + AcceptHeader = "Accept" + AccessControlAllowOriginHeader = "Access-Control-Allow-Origin" + AuthorizationHeader = "Authorization" + CacheControlHeader = "Cache-Control" + ConnectionHeader = "Connection" + ContentEncodingHeader = "Content-Encoding" + ContentLengthHeader = "Content-Length" + ContentTypeHeader = "Content-Type" + HostHeader = "Host" + OriginHeader = "Origin" + UserAgentHeader = "User-Agent" + + // Header values + JsonMediaType = "application/json" + OctetStreamMediaType = "application/octet-stream" + PlainMediaType = "text/plain" + EventStreamMediaType = "text/event-stream" + KeepAlive = "keep-alive" + GzipEncoding = "gzip" + BasicAuthorization = "Basic" + BearerAuthorization = "Bearer" + NoCache = "no-cache" ) // SetSSEHeaders sets the headers needed for a server-sent event response. func SetSSEHeaders(w http.ResponseWriter) { - w.Header().Set("Content-Type", EventStreamMediaType) - w.Header().Set("Connection", KeepAlive) + w.Header().Set(ContentTypeHeader, EventStreamMediaType) + w.Header().Set(ConnectionHeader, KeepAlive) } diff --git a/api/server/middleware/middleware.go b/api/server/middleware/middleware.go index 9ab7c410c2fe..6ed7badee527 100644 --- a/api/server/middleware/middleware.go +++ b/api/server/middleware/middleware.go @@ -47,7 +47,7 @@ func ContentTypeHandler(acceptedMediaTypes []string) Middleware { next.ServeHTTP(w, r) return } - contentType := r.Header.Get("Content-Type") + contentType := r.Header.Get(api.ContentTypeHeader) if contentType == "" { http.Error(w, "Content-Type header is missing", http.StatusUnsupportedMediaType) return @@ -75,7 +75,7 @@ func ContentTypeHandler(acceptedMediaTypes []string) Middleware { func AcceptHeaderHandler(serverAcceptedTypes []string) Middleware { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if _, ok := apiutil.Negotiate(r.Header.Get("Accept"), serverAcceptedTypes); !ok { + if _, ok := apiutil.Negotiate(r.Header.Get(api.AcceptHeader), serverAcceptedTypes); !ok { http.Error(w, "Not Acceptable", http.StatusNotAcceptable) return } @@ -88,7 +88,7 @@ func AcceptHeaderHandler(serverAcceptedTypes []string) Middleware { func AcceptEncodingHeaderHandler() Middleware { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { + if !strings.Contains(r.Header.Get(api.AcceptEncodingHeader), api.GzipEncoding) { next.ServeHTTP(w, r) return } @@ -116,10 +116,10 @@ type gzipResponseWriter struct { } func (g *gzipResponseWriter) WriteHeader(statusCode int) { - if strings.Contains(g.Header().Get("Content-Type"), api.JsonMediaType) { + if strings.Contains(g.Header().Get(api.ContentTypeHeader), api.JsonMediaType) { // Removing the current Content-Length because zipping will change it. - g.Header().Del("Content-Length") - g.Header().Set("Content-Encoding", "gzip") + g.Header().Del(api.ContentLengthHeader) + g.Header().Set(api.ContentEncodingHeader, api.GzipEncoding) g.zip = true } diff --git a/api/server/middleware/middleware_test.go b/api/server/middleware/middleware_test.go index 3742b5c50f97..93b75fff1496 100644 --- a/api/server/middleware/middleware_test.go +++ b/api/server/middleware/middleware_test.go @@ -132,7 +132,7 @@ func TestContentTypeHandler(t *testing.T) { } req := httptest.NewRequest(httpMethod, "/", nil) if tt.contentType != "" { - req.Header.Set("Content-Type", tt.contentType) + req.Header.Set(api.ContentTypeHeader, tt.contentType) } rr := httptest.NewRecorder() @@ -148,7 +148,7 @@ func TestContentTypeHandler(t *testing.T) { func TestAcceptEncodingHeaderHandler(t *testing.T) { dummyContent := "Test gzip middleware content" nextHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", r.Header.Get("Accept")) + w.Header().Set(api.ContentTypeHeader, r.Header.Get(api.AcceptHeader)) w.WriteHeader(http.StatusOK) _, err := w.Write([]byte(dummyContent)) require.NoError(t, err) @@ -165,7 +165,7 @@ func TestAcceptEncodingHeaderHandler(t *testing.T) { { name: "Accept gzip", accept: api.JsonMediaType, - acceptEncoding: "gzip", + acceptEncoding: api.GzipEncoding, expectCompressed: true, }, { @@ -189,7 +189,7 @@ func TestAcceptEncodingHeaderHandler(t *testing.T) { { name: "SSZ", accept: api.OctetStreamMediaType, - acceptEncoding: "gzip", + acceptEncoding: api.GzipEncoding, expectCompressed: false, }, } @@ -197,16 +197,16 @@ func TestAcceptEncodingHeaderHandler(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) - req.Header.Set("Accept", tt.accept) + req.Header.Set(api.AcceptHeader, tt.accept) if tt.acceptEncoding != "" { - req.Header.Set("Accept-Encoding", tt.acceptEncoding) + req.Header.Set(api.AcceptEncodingHeader, tt.acceptEncoding) } rr := &frozenHeaderRecorder{ResponseRecorder: httptest.NewRecorder()} handler.ServeHTTP(rr, req) if tt.expectCompressed { - require.Equal(t, "gzip", rr.frozenHeader.Get("Content-Encoding"), "Expected Content-Encoding header to be 'gzip'") + require.Equal(t, api.GzipEncoding, rr.frozenHeader.Get(api.ContentEncodingHeader), "Expected Content-Encoding header to be 'gzip'") compressedBody := rr.Body.Bytes() require.NotEqual(t, dummyContent, string(compressedBody), "Response body should be compressed and differ from the original") @@ -230,7 +230,7 @@ func TestAcceptEncodingHeaderHandler(t *testing.T) { } func TestAcceptHeaderHandler(t *testing.T) { - acceptedTypes := []string{"application/json", "application/octet-stream"} + acceptedTypes := []string{api.JsonMediaType, api.OctetStreamMediaType} nextHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, err := w.Write([]byte("next handler")) @@ -295,7 +295,7 @@ func TestAcceptHeaderHandler(t *testing.T) { t.Run(tt.name, func(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) if tt.acceptHeader != "" { - req.Header.Set("Accept", tt.acceptHeader) + req.Header.Set(api.AcceptHeader, tt.acceptHeader) } rr := httptest.NewRecorder() diff --git a/beacon-chain/execution/BUILD.bazel b/beacon-chain/execution/BUILD.bazel index c2445712c896..f8266f2b03ac 100644 --- a/beacon-chain/execution/BUILD.bazel +++ b/beacon-chain/execution/BUILD.bazel @@ -25,6 +25,7 @@ go_library( "//testing/spectest:__subpackages__", ], deps = [ + "//api:go_default_library", "//beacon-chain/blockchain/kzg:go_default_library", "//beacon-chain/cache:go_default_library", "//beacon-chain/cache/depositsnapshot:go_default_library", @@ -98,6 +99,7 @@ go_test( data = glob(["testdata/**"]), embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//async/event:go_default_library", "//beacon-chain/blockchain/kzg:go_default_library", "//beacon-chain/cache/depositsnapshot:go_default_library", diff --git a/beacon-chain/execution/engine_client_test.go b/beacon-chain/execution/engine_client_test.go index 649da3491438..003871eba5cb 100644 --- a/beacon-chain/execution/engine_client_test.go +++ b/beacon-chain/execution/engine_client_test.go @@ -13,6 +13,7 @@ import ( "strings" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/beacon-chain/blockchain/kzg" "github.com/OffchainLabs/prysm/v6/beacon-chain/core/peerdas" "github.com/OffchainLabs/prysm/v6/beacon-chain/db/filesystem" @@ -177,7 +178,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionPayload"].(*pb.ExecutionPayload) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -223,7 +224,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionPayloadCapellaWithValue"].(*pb.GetPayloadV2ResponseJson) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -276,7 +277,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionPayloadDenebWithValue"].(*pb.GetPayloadV3ResponseJson) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -331,7 +332,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionBundleElectra"].(*pb.GetPayloadV4ResponseJson) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -413,7 +414,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionBundleFulu"].(*pb.GetPayloadV5ResponseJson) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -935,7 +936,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionBlock"].(*pb.ExecutionBlock) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -966,7 +967,7 @@ func TestClient_HTTP(t *testing.T) { want, ok := fix["ExecutionBlock"].(*pb.ExecutionBlock) require.Equal(t, true, ok) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -1060,7 +1061,7 @@ func TestReconstructFullBellatrixBlock(t *testing.T) { require.NoError(t, err) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -1163,7 +1164,7 @@ func TestReconstructFullBellatrixBlockBatch(t *testing.T) { require.NoError(t, err) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -1236,7 +1237,7 @@ func TestReconstructFullBellatrixBlockBatch(t *testing.T) { require.NoError(t, err) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2153,7 +2154,7 @@ func (*testEngineService) NewPayloadV2( func forkchoiceUpdateSetup(t *testing.T, fcs *pb.ForkchoiceState, att *pb.PayloadAttributes, res *ForkchoiceUpdatedResponse) *Service { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2192,7 +2193,7 @@ func forkchoiceUpdateSetup(t *testing.T, fcs *pb.ForkchoiceState, att *pb.Payloa func forkchoiceUpdateSetupV2(t *testing.T, fcs *pb.ForkchoiceState, att *pb.PayloadAttributesV2, res *ForkchoiceUpdatedResponse) *Service { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2231,7 +2232,7 @@ func forkchoiceUpdateSetupV2(t *testing.T, fcs *pb.ForkchoiceState, att *pb.Payl func newPayloadSetup(t *testing.T, status *pb.PayloadStatus, payload *pb.ExecutionPayload) *Service { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2265,7 +2266,7 @@ func newPayloadSetup(t *testing.T, status *pb.PayloadStatus, payload *pb.Executi func newPayloadV2Setup(t *testing.T, status *pb.PayloadStatus, payload *pb.ExecutionPayloadCapella) *Service { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2299,7 +2300,7 @@ func newPayloadV2Setup(t *testing.T, status *pb.PayloadStatus, payload *pb.Execu func newPayloadV3Setup(t *testing.T, status *pb.PayloadStatus, payload *pb.ExecutionPayloadDeneb) *Service { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2333,7 +2334,7 @@ func newPayloadV3Setup(t *testing.T, status *pb.PayloadStatus, payload *pb.Execu func newPayloadV4Setup(t *testing.T, status *pb.PayloadStatus, payload *pb.ExecutionPayloadDeneb, requests *pb.ExecutionRequests) *Service { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2414,7 +2415,7 @@ func TestReconstructBlindedBlockBatch(t *testing.T) { func Test_ExchangeCapabilities(t *testing.T) { t.Run("empty response works", func(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2446,7 +2447,7 @@ func Test_ExchangeCapabilities(t *testing.T) { }) t.Run("list of items", func(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2641,7 +2642,7 @@ func createRandomKzgCommitments(t *testing.T, num int) [][]byte { func createBlobServer(t *testing.T, numBlobs int, callbackFuncs ...func()) *httptest.Server { return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() @@ -2666,7 +2667,7 @@ func createBlobServer(t *testing.T, numBlobs int, callbackFuncs ...func()) *http func createBlobServerV2(t *testing.T, numBlobs int, blobMasks []bool) *httptest.Server { return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() diff --git a/beacon-chain/execution/mock_test.go b/beacon-chain/execution/mock_test.go index 6db5d1d7d1d4..eb889efa7b71 100644 --- a/beacon-chain/execution/mock_test.go +++ b/beacon-chain/execution/mock_test.go @@ -6,6 +6,7 @@ import ( "net/http/httptest" "testing" + "github.com/OffchainLabs/prysm/v6/api" pb "github.com/OffchainLabs/prysm/v6/proto/engine/v1" "github.com/OffchainLabs/prysm/v6/testing/require" "github.com/ethereum/go-ethereum/common/hexutil" @@ -54,7 +55,7 @@ func (s *mockEngine) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, "failed to decode request: "+err.Error(), http.StatusBadRequest) return } - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(s.t, r.Body.Close()) }() diff --git a/beacon-chain/execution/rpc_connection.go b/beacon-chain/execution/rpc_connection.go index 7e1d8083e898..8a64180638c5 100644 --- a/beacon-chain/execution/rpc_connection.go +++ b/beacon-chain/execution/rpc_connection.go @@ -7,6 +7,7 @@ import ( "strings" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/config/params" contracts "github.com/OffchainLabs/prysm/v6/contracts/deposit" "github.com/OffchainLabs/prysm/v6/io/logs" @@ -120,7 +121,7 @@ func (s *Service) newRPCClientWithAuth(ctx context.Context, endpoint network.End if err != nil { return nil, err } - headers.Set("Authorization", header) + headers.Set(api.AuthorizationHeader, header) } for _, h := range s.cfg.headers { if h == "" { diff --git a/beacon-chain/node/BUILD.bazel b/beacon-chain/node/BUILD.bazel index 3a5ad5a7ae49..c1bbafc42885 100644 --- a/beacon-chain/node/BUILD.bazel +++ b/beacon-chain/node/BUILD.bazel @@ -82,6 +82,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//api/server/middleware:go_default_library", "//beacon-chain/blockchain:go_default_library", "//beacon-chain/builder:go_default_library", diff --git a/beacon-chain/node/node_test.go b/beacon-chain/node/node_test.go index ea08ccb637f2..d02186ce08ec 100644 --- a/beacon-chain/node/node_test.go +++ b/beacon-chain/node/node_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/middleware" "github.com/OffchainLabs/prysm/v6/beacon-chain/blockchain" "github.com/OffchainLabs/prysm/v6/beacon-chain/builder" @@ -249,18 +250,18 @@ func TestCORS(t *testing.T) { // Create a request and response recorder req := httptest.NewRequest("GET", "http://example.com/some-path", nil) - req.Header.Set("Origin", tc.origin) + req.Header.Set(api.OriginHeader, tc.origin) rr := httptest.NewRecorder() // Serve HTTP handler.ServeHTTP(rr, req) // Check the CORS headers based on the expected outcome - if tc.expectAllow && rr.Header().Get("Access-Control-Allow-Origin") != tc.origin { - t.Errorf("Expected Access-Control-Allow-Origin header to be %v, got %v", tc.origin, rr.Header().Get("Access-Control-Allow-Origin")) + if tc.expectAllow && rr.Header().Get(api.AccessControlAllowOriginHeader) != tc.origin { + t.Errorf("Expected Access-Control-Allow-Origin header to be %v, got %v", tc.origin, rr.Header().Get(api.AccessControlAllowOriginHeader)) } - if !tc.expectAllow && rr.Header().Get("Access-Control-Allow-Origin") != "" { - t.Errorf("Expected Access-Control-Allow-Origin header to be empty for disallowed origin, got %v", rr.Header().Get("Access-Control-Allow-Origin")) + if !tc.expectAllow && rr.Header().Get(api.AccessControlAllowOriginHeader) != "" { + t.Errorf("Expected Access-Control-Allow-Origin header to be empty for disallowed origin, got %v", rr.Header().Get(api.AccessControlAllowOriginHeader)) } }) } diff --git a/beacon-chain/rpc/eth/beacon/handlers.go b/beacon-chain/rpc/eth/beacon/handlers.go index acc437f04dba..72573a18bf10 100644 --- a/beacon-chain/rpc/eth/beacon/handlers.go +++ b/beacon-chain/rpc/eth/beacon/handlers.go @@ -101,9 +101,9 @@ func versionHeaderFromRequest(body []byte) (string, error) { // from the request. If the version header is not provided and not required, it attempts // to derive it from the request body. func validateVersionHeader(r *http.Request, body []byte, versionRequired bool) (string, error) { - versionHeader := r.Header.Get(api.VersionHeader) + versionHeader := r.Header.Get(api.EthConsensusVersionHeader) if versionRequired && versionHeader == "" { - return "", fmt.Errorf("%s header is required", api.VersionHeader) + return "", fmt.Errorf("%s header is required", api.EthConsensusVersionHeader) } if !versionRequired && versionHeader == "" { @@ -219,7 +219,7 @@ func (s *Server) getBlockV2Ssz(w http.ResponseWriter, blk interfaces.ReadOnlySig httputil.HandleError(w, fmt.Sprintf("Unknown block type %T", blk), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteSsz(w, result) } @@ -254,7 +254,7 @@ func (s *Server) getBlockV2Json(ctx context.Context, w http.ResponseWriter, blk httputil.HandleError(w, fmt.Sprintf("Unknown block type %T", blk), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, result.Version) + w.Header().Set(api.EthConsensusVersionHeader, result.Version) httputil.WriteJson(w, result) } @@ -368,7 +368,7 @@ func (s *Server) GetBlockAttestationsV2(w http.ResponseWriter, r *http.Request) Finalized: s.FinalizationFetcher.IsFinalized(ctx, root), Data: attBytes, } - w.Header().Set(api.VersionHeader, version.String(v)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(v)) httputil.WriteJson(w, resp) } @@ -1693,7 +1693,7 @@ func (s *Server) GetPendingConsolidations(w http.ResponseWriter, r *http.Request httputil.HandleError(w, "Could not get pending consolidations: "+err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(st.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(st.Version())) if httputil.RespondWithSsz(r) { sszData, err := serializeItems(pd) if err != nil { @@ -1749,7 +1749,7 @@ func (s *Server) GetPendingDeposits(w http.ResponseWriter, r *http.Request) { httputil.HandleError(w, "Could not get pending deposits: "+err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(st.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(st.Version())) if httputil.RespondWithSsz(r) { sszData, err := serializeItems(pd) if err != nil { @@ -1805,7 +1805,7 @@ func (s *Server) GetPendingPartialWithdrawals(w http.ResponseWriter, r *http.Req httputil.HandleError(w, "Could not get pending partial withdrawals: "+err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(st.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(st.Version())) if httputil.RespondWithSsz(r) { sszData, err := serializeItems(ppw) if err != nil { @@ -1858,7 +1858,7 @@ func (s *Server) GetProposerLookahead(w http.ResponseWriter, r *http.Request) { httputil.HandleError(w, "Could not get proposer look ahead: "+err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(st.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(st.Version())) if httputil.RespondWithSsz(r) { sszLen := (*primitives.ValidatorIndex)(nil).SizeSSZ() sszData := make([]byte, len(pl)*sszLen) diff --git a/beacon-chain/rpc/eth/beacon/handlers_pool.go b/beacon-chain/rpc/eth/beacon/handlers_pool.go index 168519c3073e..9b24fdc3bac0 100644 --- a/beacon-chain/rpc/eth/beacon/handlers_pool.go +++ b/beacon-chain/rpc/eth/beacon/handlers_pool.go @@ -151,7 +151,7 @@ func (s *Server) ListAttestationsV2(w http.ResponseWriter, r *http.Request) { return } - w.Header().Set(api.VersionHeader, version.String(v)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(v)) httputil.WriteJson(w, &structs.ListAttestationsResponse{ Version: version.String(v), Data: attsData, @@ -225,9 +225,9 @@ func (s *Server) SubmitAttestationsV2(w http.ResponseWriter, r *http.Request) { ctx, span := trace.StartSpan(r.Context(), "beacon.SubmitAttestationsV2") defer span.End() - versionHeader := r.Header.Get(api.VersionHeader) + versionHeader := r.Header.Get(api.EthConsensusVersionHeader) if versionHeader == "" { - httputil.HandleError(w, api.VersionHeader+" header is required", http.StatusBadRequest) + httputil.HandleError(w, api.EthConsensusVersionHeader+" header is required", http.StatusBadRequest) return } v, err := version.FromString(versionHeader) @@ -786,7 +786,7 @@ func (s *Server) GetAttesterSlashingsV2(w http.ResponseWriter, r *http.Request) Version: version.String(v), Data: attBytes, } - w.Header().Set(api.VersionHeader, version.String(v)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(v)) httputil.WriteJson(w, resp) } @@ -821,9 +821,9 @@ func (s *Server) SubmitAttesterSlashingsV2(w http.ResponseWriter, r *http.Reques ctx, span := trace.StartSpan(r.Context(), "beacon.SubmitAttesterSlashingsV2") defer span.End() - versionHeader := r.Header.Get(api.VersionHeader) + versionHeader := r.Header.Get(api.EthConsensusVersionHeader) if versionHeader == "" { - httputil.HandleError(w, api.VersionHeader+" header is required", http.StatusBadRequest) + httputil.HandleError(w, api.EthConsensusVersionHeader+" header is required", http.StatusBadRequest) } v, err := version.FromString(versionHeader) if err != nil { diff --git a/beacon-chain/rpc/eth/beacon/handlers_pool_test.go b/beacon-chain/rpc/eth/beacon/handlers_pool_test.go index d3b1a076727b..5a02c1a4127c 100644 --- a/beacon-chain/rpc/eth/beacon/handlers_pool_test.go +++ b/beacon-chain/rpc/eth/beacon/handlers_pool_test.go @@ -656,7 +656,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(singleAtt) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -685,7 +685,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(multipleAtts) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -705,7 +705,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(singleAtt) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -721,7 +721,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(singleAttElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -734,7 +734,7 @@ func TestSubmitAttestations(t *testing.T) { }) t.Run("no body", func(t *testing.T) { request := httptest.NewRequest(http.MethodPost, "http://example.com", nil) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -750,7 +750,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString("[]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -766,7 +766,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(invalidAtt) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -794,7 +794,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(singleAttElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -823,7 +823,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(multipleAttsElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -835,7 +835,7 @@ func TestSubmitAttestations(t *testing.T) { }) t.Run("no body", func(t *testing.T) { request := httptest.NewRequest(http.MethodPost, "http://example.com", nil) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -851,7 +851,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString("[]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -867,7 +867,7 @@ func TestSubmitAttestations(t *testing.T) { _, err := body.WriteString(invalidAttElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -2168,7 +2168,7 @@ func TestSubmitAttesterSlashings(t *testing.T) { _, err = body.Write(b) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/beacon/pool/attester_electras", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -2232,7 +2232,7 @@ func TestSubmitAttesterSlashings(t *testing.T) { _, err = body.Write(b) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/beacon/pool/attester_slashings", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -2262,7 +2262,7 @@ func TestSubmitAttesterSlashings(t *testing.T) { _, err = body.WriteString(invalidAttesterSlashing) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/beacon/pool/attester_slashings", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} diff --git a/beacon-chain/rpc/eth/beacon/handlers_test.go b/beacon-chain/rpc/eth/beacon/handlers_test.go index d39830dec98a..5e1274fa9428 100644 --- a/beacon-chain/rpc/eth/beacon/handlers_test.go +++ b/beacon-chain/rpc/eth/beacon/handlers_test.go @@ -425,13 +425,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Phase0), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Phase0), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -448,13 +448,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Altair), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Altair), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -471,13 +471,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Bellatrix), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Bellatrix), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -494,13 +494,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Capella), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Capella), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -517,13 +517,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -540,13 +540,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -563,13 +563,13 @@ func TestGetBlockSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v2/beacon/blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlockV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Fulu), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Fulu), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -1307,13 +1307,13 @@ func TestGetBlindedBlockSSZ(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/blinded_blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlindedBlock(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Phase0), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Phase0), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -1329,13 +1329,13 @@ func TestGetBlindedBlockSSZ(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/blinded_blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlindedBlock(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Altair), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Altair), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -1351,13 +1351,13 @@ func TestGetBlindedBlockSSZ(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/blinded_blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlindedBlock(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Bellatrix), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Bellatrix), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -1373,13 +1373,13 @@ func TestGetBlindedBlockSSZ(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/blinded_blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlindedBlock(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Capella), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Capella), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -1395,13 +1395,13 @@ func TestGetBlindedBlockSSZ(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/blinded_blocks/{block_id}", nil) request.SetPathValue("block_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBlindedBlock(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := b.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -1426,7 +1426,7 @@ func TestPublishBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.Phase0Block))) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1448,7 +1448,7 @@ func TestPublishBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.AltairBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1472,7 +1472,7 @@ func TestPublishBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1496,7 +1496,7 @@ func TestPublishBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.CapellaBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1551,7 +1551,7 @@ func TestPublishBlock(t *testing.T) { SyncChecker: &mockSync.Sync{IsSyncing: false}, } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.DenebBlockContents))) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1574,7 +1574,7 @@ func TestPublishBlock(t *testing.T) { SyncChecker: &mockSync.Sync{IsSyncing: false}, } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.ElectraBlockContents))) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1642,7 +1642,7 @@ func TestPublishBlock(t *testing.T) { SyncChecker: &mockSync.Sync{IsSyncing: false}, } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.FuluBlockContents))) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1654,7 +1654,7 @@ func TestPublishBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedBellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1667,7 +1667,7 @@ func TestPublishBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1888,8 +1888,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetPhase0().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1918,8 +1918,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetAltair().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1943,8 +1943,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1969,8 +1969,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetCapella().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -1995,8 +1995,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetDeneb().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -2021,8 +2021,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetElectra().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -2047,8 +2047,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetFulu().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -2067,8 +2067,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -2088,8 +2088,8 @@ func TestPublishBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -2106,7 +2106,7 @@ func TestPublishBlockSSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte("foo"))) - request.Header.Set("Content-Type", api.OctetStreamMediaType) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlock(writer, request) @@ -2133,7 +2133,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.Phase0Block))) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2155,7 +2155,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.AltairBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2179,7 +2179,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedBellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2203,7 +2203,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedCapellaBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2227,7 +2227,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedDenebBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2251,7 +2251,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedElectraBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2321,7 +2321,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedFuluBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2333,7 +2333,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2346,7 +2346,7 @@ func TestPublishBlindedBlock(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedBellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2396,8 +2396,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetPhase0().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2426,8 +2426,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetAltair().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2452,8 +2452,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2478,8 +2478,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedCapella().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2504,8 +2504,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedDeneb().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2530,8 +2530,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedElectra().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2556,8 +2556,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedFulu().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2569,7 +2569,7 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2589,8 +2589,8 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2607,7 +2607,7 @@ func TestPublishBlindedBlockSSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte("foo"))) - request.Header.Set("Content-Type", api.OctetStreamMediaType) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -2634,7 +2634,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.Phase0Block))) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2656,7 +2656,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.AltairBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2680,7 +2680,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2704,7 +2704,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.CapellaBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2728,7 +2728,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.DenebBlockContents))) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2752,7 +2752,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.ElectraBlockContents))) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2776,7 +2776,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.FuluBlockContents))) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2788,7 +2788,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedBellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2801,7 +2801,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2818,7 +2818,7 @@ func TestPublishBlockV2(t *testing.T) { writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) assert.Equal(t, http.StatusBadRequest, writer.Code) - assert.StringContains(t, api.VersionHeader+" header is required", writer.Body.String()) + assert.StringContains(t, api.EthConsensusVersionHeader+" header is required", writer.Body.String()) }) t.Run("syncing", func(t *testing.T) { chainService := &chainMock.ChainService{} @@ -2830,7 +2830,7 @@ func TestPublishBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte("foo"))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2864,8 +2864,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetPhase0().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2894,8 +2894,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetAltair().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2919,8 +2919,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2945,8 +2945,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetCapella().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2971,8 +2971,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetDeneb().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -2997,8 +2997,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetElectra().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -3023,8 +3023,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetFulu().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -3043,8 +3043,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -3064,8 +3064,8 @@ func TestPublishBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -3078,12 +3078,12 @@ func TestPublishBlockV2SSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.CapellaBlock))) - request.Header.Set("Content-Type", api.OctetStreamMediaType) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) assert.Equal(t, http.StatusBadRequest, writer.Code) - assert.StringContains(t, api.VersionHeader+" header is required", writer.Body.String()) + assert.StringContains(t, api.EthConsensusVersionHeader+" header is required", writer.Body.String()) }) t.Run("syncing", func(t *testing.T) { chainService := &chainMock.ChainService{} @@ -3095,7 +3095,7 @@ func TestPublishBlockV2SSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte("foo"))) - request.Header.Set("Content-Type", api.OctetStreamMediaType) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) @@ -3122,7 +3122,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.Phase0Block))) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3144,7 +3144,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.AltairBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3168,7 +3168,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedBellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3192,7 +3192,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedCapellaBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3216,7 +3216,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedDenebBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3240,7 +3240,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedElectraBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3264,7 +3264,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedFuluBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3276,7 +3276,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3289,7 +3289,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedBellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3306,7 +3306,7 @@ func TestPublishBlindedBlockV2(t *testing.T) { writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) assert.Equal(t, http.StatusBadRequest, writer.Code) - assert.StringContains(t, api.VersionHeader+" header is required", writer.Body.String()) + assert.StringContains(t, api.EthConsensusVersionHeader+" header is required", writer.Body.String()) }) t.Run("syncing", func(t *testing.T) { chainService := &chainMock.ChainService{} @@ -3351,8 +3351,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetPhase0().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3381,8 +3381,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetAltair().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3407,8 +3407,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3433,8 +3433,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedCapella().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3459,8 +3459,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedDeneb().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -3485,8 +3485,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedElectra().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -3511,8 +3511,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedFulu().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Fulu)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlock(writer, request) @@ -3524,7 +3524,7 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BellatrixBlock))) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3544,8 +3544,8 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { ssz, err := genericBlock.GetBlindedBellatrix().MarshalSSZ() require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader(ssz)) - request.Header.Set("Content-Type", api.OctetStreamMediaType) - request.Header.Set(api.VersionHeader, version.String(version.Capella)) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Capella)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3558,12 +3558,12 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte(rpctesting.BlindedCapellaBlock))) - request.Header.Set("Content-Type", api.OctetStreamMediaType) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlockV2(writer, request) assert.Equal(t, http.StatusBadRequest, writer.Code) - assert.StringContains(t, api.VersionHeader+" header is required", writer.Body.String()) + assert.StringContains(t, api.EthConsensusVersionHeader+" header is required", writer.Body.String()) }) t.Run("syncing", func(t *testing.T) { chainService := &chainMock.ChainService{} @@ -3575,7 +3575,7 @@ func TestPublishBlindedBlockV2SSZ(t *testing.T) { } request := httptest.NewRequest(http.MethodPost, "http://foo.example", bytes.NewReader([]byte("foo"))) - request.Header.Set("Content-Type", api.OctetStreamMediaType) + request.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.PublishBlindedBlockV2(writer, request) @@ -3870,7 +3870,7 @@ func TestGetStateFork(t *testing.T) { ctx := t.Context() request := httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/states/{state_id}/fork", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", "application/octet-stream") + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -3909,7 +3909,7 @@ func TestGetStateFork(t *testing.T) { t.Run("execution optimistic", func(t *testing.T) { request = httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/states/{state_id}/fork", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", "application/octet-stream") + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer = httptest.NewRecorder() writer.Body = &bytes.Buffer{} parentRoot := [32]byte{'a'} @@ -3940,7 +3940,7 @@ func TestGetStateFork(t *testing.T) { t.Run("finalized", func(t *testing.T) { request = httptest.NewRequest(http.MethodGet, "http://foo.example/eth/v1/beacon/states/{state_id}/fork", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", "application/octet-stream") + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer = httptest.NewRecorder() writer.Body = &bytes.Buffer{} parentRoot := [32]byte{'a'} @@ -4838,7 +4838,7 @@ func TestGetDepositSnapshot(t *testing.T) { }) t.Run("SSZ response", func(t *testing.T) { writer.Body = &bytes.Buffer{} - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) s.GetDepositSnapshot(writer, request) assert.Equal(t, http.StatusOK, writer.Code) resp := ð.DepositSnapshot{} @@ -5177,7 +5177,7 @@ func TestGetPendingConsolidations(t *testing.T) { server.GetPendingConsolidations(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "electra", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "electra", rec.Header().Get(api.EthConsensusVersionHeader)) var resp structs.GetPendingConsolidationsResponse require.NoError(t, json.Unmarshal(rec.Body.Bytes(), &resp)) @@ -5193,14 +5193,14 @@ func TestGetPendingConsolidations(t *testing.T) { }) t.Run("ssz response", func(t *testing.T) { req := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/pending_consolidations", nil) - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) req.SetPathValue("state_id", "head") rec := httptest.NewRecorder() rec.Body = new(bytes.Buffer) server.GetPendingConsolidations(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "electra", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "electra", rec.Header().Get(api.EthConsensusVersionHeader)) responseBytes := rec.Body.Bytes() var recoveredConsolidations []*eth.PendingConsolidation @@ -5247,7 +5247,7 @@ func TestGetPendingConsolidations(t *testing.T) { // Test SSZ request sszReq := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/pending_consolidations", nil) - sszReq.Header.Set("Accept", "application/octet-stream") + sszReq.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) sszReq.SetPathValue("state_id", "head") sszRec := httptest.NewRecorder() sszRec.Body = new(bytes.Buffer) @@ -5370,7 +5370,7 @@ func TestGetPendingDeposits(t *testing.T) { server.GetPendingDeposits(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "electra", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "electra", rec.Header().Get(api.EthConsensusVersionHeader)) var resp structs.GetPendingDepositsResponse require.NoError(t, json.Unmarshal(rec.Body.Bytes(), &resp)) @@ -5386,14 +5386,14 @@ func TestGetPendingDeposits(t *testing.T) { }) t.Run("ssz response", func(t *testing.T) { req := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/pending_deposits", nil) - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) req.SetPathValue("state_id", "head") rec := httptest.NewRecorder() rec.Body = new(bytes.Buffer) server.GetPendingDeposits(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "electra", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "electra", rec.Header().Get(api.EthConsensusVersionHeader)) responseBytes := rec.Body.Bytes() var recoveredDeposits []*eth.PendingDeposit @@ -5440,7 +5440,7 @@ func TestGetPendingDeposits(t *testing.T) { // Test SSZ request sszReq := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/pending_deposits", nil) - sszReq.Header.Set("Accept", "application/octet-stream") + sszReq.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) sszReq.SetPathValue("state_id", "head") sszRec := httptest.NewRecorder() sszRec.Body = new(bytes.Buffer) @@ -5557,7 +5557,7 @@ func TestGetPendingPartialWithdrawals(t *testing.T) { server.GetPendingPartialWithdrawals(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "electra", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "electra", rec.Header().Get(api.EthConsensusVersionHeader)) var resp structs.GetPendingPartialWithdrawalsResponse require.NoError(t, json.Unmarshal(rec.Body.Bytes(), &resp)) @@ -5574,14 +5574,14 @@ func TestGetPendingPartialWithdrawals(t *testing.T) { t.Run("ssz response", func(t *testing.T) { req := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/pending_partial_withdrawals", nil) - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) req.SetPathValue("state_id", "head") rec := httptest.NewRecorder() rec.Body = new(bytes.Buffer) server.GetPendingPartialWithdrawals(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "electra", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "electra", rec.Header().Get(api.EthConsensusVersionHeader)) responseBytes := rec.Body.Bytes() var recoveredWithdrawals []*eth.PendingPartialWithdrawal @@ -5628,7 +5628,7 @@ func TestGetPendingPartialWithdrawals(t *testing.T) { // Test SSZ request sszReq := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/pending_partial_withdrawals", nil) - sszReq.Header.Set("Accept", "application/octet-stream") + sszReq.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) sszReq.SetPathValue("state_id", "head") sszRec := httptest.NewRecorder() sszRec.Body = new(bytes.Buffer) @@ -5745,7 +5745,7 @@ func TestGetProposerLookahead(t *testing.T) { server.GetProposerLookahead(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "fulu", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "fulu", rec.Header().Get(api.EthConsensusVersionHeader)) var resp structs.GetProposerLookaheadResponse require.NoError(t, json.Unmarshal(rec.Body.Bytes(), &resp)) @@ -5765,14 +5765,14 @@ func TestGetProposerLookahead(t *testing.T) { t.Run("ssz response", func(t *testing.T) { req := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/proposer_lookahead", nil) - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) req.SetPathValue("state_id", "head") rec := httptest.NewRecorder() rec.Body = new(bytes.Buffer) server.GetProposerLookahead(rec, req) require.Equal(t, http.StatusOK, rec.Code) - require.Equal(t, "fulu", rec.Header().Get(api.VersionHeader)) + require.Equal(t, "fulu", rec.Header().Get(api.EthConsensusVersionHeader)) responseBytes := rec.Body.Bytes() validatorIndexSize := (*primitives.ValidatorIndex)(nil).SizeSSZ() require.Equal(t, len(responseBytes), validatorIndexSize*lookaheadSize) @@ -5816,7 +5816,7 @@ func TestGetProposerLookahead(t *testing.T) { // Test SSZ request sszReq := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v1/beacon/states/{state_id}/proposer_lookahead", nil) - sszReq.Header.Set("Accept", "application/octet-stream") + sszReq.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) sszReq.SetPathValue("state_id", "head") sszRec := httptest.NewRecorder() sszRec.Body = new(bytes.Buffer) diff --git a/beacon-chain/rpc/eth/beacon/handlers_validators_test.go b/beacon-chain/rpc/eth/beacon/handlers_validators_test.go index 1896c4696bb2..ecb6273bb287 100644 --- a/beacon-chain/rpc/eth/beacon/handlers_validators_test.go +++ b/beacon-chain/rpc/eth/beacon/handlers_validators_test.go @@ -1442,7 +1442,7 @@ func TestGetValidatorIdentities(t *testing.T) { _, err := body.WriteString("[]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/eth/v1/beacon/states/{state_id}/validator_identities", &body) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) request.SetPathValue("state_id", "head") writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1466,7 +1466,7 @@ func TestGetValidatorIdentities(t *testing.T) { _, err := body.WriteString("[\"0\",\"1\"]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/eth/v1/beacon/states/{state_id}/validator_identities", &body) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) request.SetPathValue("state_id", "head") writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1494,7 +1494,7 @@ func TestGetValidatorIdentities(t *testing.T) { _, err := body.WriteString(fmt.Sprintf("[\"%s\",\"%s\"]", hexPubkey1, hexPubkey2)) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/eth/v1/beacon/states/{state_id}/validator_identities", &body) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) request.SetPathValue("state_id", "head") writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1521,7 +1521,7 @@ func TestGetValidatorIdentities(t *testing.T) { _, err := body.WriteString(fmt.Sprintf("[\"%s\",\"1\"]", hexPubkey)) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/eth/v1/beacon/states/{state_id}/validator_identities", &body) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) request.SetPathValue("state_id", "head") writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1548,7 +1548,7 @@ func TestGetValidatorIdentities(t *testing.T) { _, err := body.WriteString(fmt.Sprintf("[\"%s\",\"%s\"]", hexPubkey, hexutil.Encode([]byte(strings.Repeat("x", fieldparams.BLSPubkeyLength))))) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/eth/v1/beacon/states/{state_id}/validator_identities", &body) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) request.SetPathValue("state_id", "head") writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1572,7 +1572,7 @@ func TestGetValidatorIdentities(t *testing.T) { _, err := body.WriteString("[\"1\",\"99999\"]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com/eth/v1/beacon/states/{state_id}/validator_identities", &body) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) request.SetPathValue("state_id", "head") writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} diff --git a/beacon-chain/rpc/eth/blob/handlers.go b/beacon-chain/rpc/eth/blob/handlers.go index b11fca3b8dd8..a061398b885b 100644 --- a/beacon-chain/rpc/eth/blob/handlers.go +++ b/beacon-chain/rpc/eth/blob/handlers.go @@ -68,7 +68,7 @@ func (s *Server) Blobs(w http.ResponseWriter, r *http.Request) { httputil.HandleError(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteSsz(w, sszResp) return } @@ -91,7 +91,7 @@ func (s *Server) Blobs(w http.ResponseWriter, r *http.Request) { ExecutionOptimistic: isOptimistic, Finalized: s.FinalizationFetcher.IsFinalized(ctx, blkRoot), } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteJson(w, resp) } @@ -180,7 +180,7 @@ func (s *Server) GetBlobs(w http.ResponseWriter, r *http.Request) { copy(sszData[i*sszLen:(i+1)*sszLen], verifiedBlobs[i].Blob) } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteSsz(w, sszData) return } @@ -205,7 +205,7 @@ func (s *Server) GetBlobs(w http.ResponseWriter, r *http.Request) { ExecutionOptimistic: isOptimistic, Finalized: s.FinalizationFetcher.IsFinalized(ctx, blkRoot), } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteJson(w, resp) } diff --git a/beacon-chain/rpc/eth/blob/handlers_test.go b/beacon-chain/rpc/eth/blob/handlers_test.go index eca9a16b03be..ed4540f04037 100644 --- a/beacon-chain/rpc/eth/blob/handlers_test.go +++ b/beacon-chain/rpc/eth/blob/handlers_test.go @@ -227,7 +227,7 @@ func TestBlobs(t *testing.T) { } s.Blobs(writer, request) - assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) resp := &structs.SidecarsResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) @@ -381,7 +381,7 @@ func TestBlobs(t *testing.T) { t.Run("ssz", func(t *testing.T) { u := "http://foo.example/finalized?indices=0" request := httptest.NewRequest("GET", u, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.Blocker = &lookup.BeaconDbBlocker{ @@ -393,7 +393,7 @@ func TestBlobs(t *testing.T) { BlobStorage: bs, } s.Blobs(writer, request) - assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) require.Equal(t, len(writer.Body.Bytes()), fieldparams.BlobSidecarSize) // size of each sidecar // can directly unmarshal to sidecar since there's only 1 @@ -404,7 +404,7 @@ func TestBlobs(t *testing.T) { t.Run("ssz multiple blobs", func(t *testing.T) { u := "http://foo.example/finalized" request := httptest.NewRequest("GET", u, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.Blocker = &lookup.BeaconDbBlocker{ @@ -467,7 +467,7 @@ func TestBlobs_Electra(t *testing.T) { } s.Blobs(writer, request) - assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) resp := &structs.SidecarsResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) @@ -499,7 +499,7 @@ func TestBlobs_Electra(t *testing.T) { } s.Blobs(writer, request) - assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) resp := &structs.SidecarsResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) @@ -867,7 +867,7 @@ func TestGetBlobs(t *testing.T) { t.Run("ssz", func(t *testing.T) { u := "http://foo.example/finalized" request := httptest.NewRequest("GET", u, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.Blocker = &lookup.BeaconDbBlocker{ @@ -879,7 +879,7 @@ func TestGetBlobs(t *testing.T) { BlobStorage: bs, } s.GetBlobs(writer, request) - assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) require.Equal(t, fieldparams.BlobSize*4, len(writer.Body.Bytes())) // size of 4 sidecars // unmarshal all 4 blobs @@ -889,7 +889,7 @@ func TestGetBlobs(t *testing.T) { t.Run("ssz multiple blobs", func(t *testing.T) { u := "http://foo.example/finalized" request := httptest.NewRequest("GET", u, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.Blocker = &lookup.BeaconDbBlocker{ @@ -1038,7 +1038,7 @@ func TestGetBlobs(t *testing.T) { } s.GetBlobs(writer, request) - assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Electra), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) resp := &structs.GetBlobsResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) @@ -1078,7 +1078,7 @@ func TestGetBlobs(t *testing.T) { } s.GetBlobs(writer, request) - assert.Equal(t, version.String(version.Fulu), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Fulu), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) resp := &structs.GetBlobsResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) @@ -1132,7 +1132,7 @@ func TestGetBlobs(t *testing.T) { } s.GetBlobs(writer, request) - assert.Equal(t, version.String(version.Fulu), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Fulu), writer.Header().Get(api.EthConsensusVersionHeader)) assert.Equal(t, http.StatusOK, writer.Code) resp := &structs.GetBlobsResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) diff --git a/beacon-chain/rpc/eth/debug/handlers.go b/beacon-chain/rpc/eth/debug/handlers.go index 4ba228f78603..77e1f818d387 100644 --- a/beacon-chain/rpc/eth/debug/handlers.go +++ b/beacon-chain/rpc/eth/debug/handlers.go @@ -129,7 +129,7 @@ func (s *Server) getBeaconStateV2(ctx context.Context, w http.ResponseWriter, id Finalized: isFinalized, Data: jsonBytes, } - w.Header().Set(api.VersionHeader, ver) + w.Header().Set(api.EthConsensusVersionHeader, ver) httputil.WriteJson(w, resp) } @@ -145,7 +145,7 @@ func (s *Server) getBeaconStateSSZV2(ctx context.Context, w http.ResponseWriter, httputil.HandleError(w, "Could not marshal state into SSZ: "+err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(st.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(st.Version())) httputil.WriteSsz(w, sszState) } @@ -279,7 +279,7 @@ func (s *Server) DataColumnSidecars(w http.ResponseWriter, r *http.Request) { httputil.HandleError(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteSsz(w, sszResp) return } @@ -302,7 +302,7 @@ func (s *Server) DataColumnSidecars(w http.ResponseWriter, r *http.Request) { ExecutionOptimistic: isOptimistic, Finalized: s.FinalizationFetcher.IsFinalized(ctx, blkRoot), } - w.Header().Set(api.VersionHeader, version.String(blk.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(blk.Version())) httputil.WriteJson(w, resp) } diff --git a/beacon-chain/rpc/eth/debug/handlers_test.go b/beacon-chain/rpc/eth/debug/handlers_test.go index 082f7740047a..4c6d03c2b328 100644 --- a/beacon-chain/rpc/eth/debug/handlers_test.go +++ b/beacon-chain/rpc/eth/debug/handlers_test.go @@ -320,13 +320,13 @@ func TestGetBeaconStateSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v2/debug/beacon/states/{state_id}", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBeaconStateV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Phase0), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Phase0), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := fakeState.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -344,13 +344,13 @@ func TestGetBeaconStateSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v2/debug/beacon/states/{state_id}", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBeaconStateV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Altair), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Altair), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := fakeState.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -368,13 +368,13 @@ func TestGetBeaconStateSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v2/debug/beacon/states/{state_id}", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBeaconStateV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Bellatrix), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Bellatrix), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := fakeState.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -392,13 +392,13 @@ func TestGetBeaconStateSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v2/debug/beacon/states/{state_id}", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBeaconStateV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Capella), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Capella), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := fakeState.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) @@ -416,13 +416,13 @@ func TestGetBeaconStateSSZV2(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://example.com/eth/v2/debug/beacon/states/{state_id}", nil) request.SetPathValue("state_id", "head") - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetBeaconStateV2(writer, request) require.Equal(t, http.StatusOK, writer.Code) - assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.VersionHeader)) + assert.Equal(t, version.String(version.Deneb), writer.Header().Get(api.EthConsensusVersionHeader)) sszExpected, err := fakeState.MarshalSSZ() require.NoError(t, err) assert.DeepEqual(t, sszExpected, writer.Body.Bytes()) diff --git a/beacon-chain/rpc/eth/events/http_test.go b/beacon-chain/rpc/eth/events/http_test.go index d99c5092a49d..2a2716c72339 100644 --- a/beacon-chain/rpc/eth/events/http_test.go +++ b/beacon-chain/rpc/eth/events/http_test.go @@ -101,7 +101,7 @@ func (w *StreamingResponseWriterRecorder) RequireStatus(t *testing.T, status int } func (w *StreamingResponseWriterRecorder) Flush() { - w.WriteHeader(200) + w.WriteHeader(http.StatusOK) fw, ok := w.ResponseWriter.(http.Flusher) if ok { fw.Flush() diff --git a/beacon-chain/rpc/eth/light-client/BUILD.bazel b/beacon-chain/rpc/eth/light-client/BUILD.bazel index 366eab820b9d..449868f7e57c 100644 --- a/beacon-chain/rpc/eth/light-client/BUILD.bazel +++ b/beacon-chain/rpc/eth/light-client/BUILD.bazel @@ -31,6 +31,7 @@ go_test( srcs = ["handlers_test.go"], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//api/server/structs:go_default_library", "//async/event:go_default_library", "//beacon-chain/blockchain/testing:go_default_library", diff --git a/beacon-chain/rpc/eth/light-client/handlers.go b/beacon-chain/rpc/eth/light-client/handlers.go index 3f7655b5921d..dfb234d1422c 100644 --- a/beacon-chain/rpc/eth/light-client/handlers.go +++ b/beacon-chain/rpc/eth/light-client/handlers.go @@ -43,7 +43,7 @@ func (s *Server) GetLightClientBootstrap(w http.ResponseWriter, req *http.Reques return } - w.Header().Set(api.VersionHeader, version.String(bootstrap.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(bootstrap.Version())) if httputil.RespondWithSsz(req) { ssz, err := bootstrap.MarshalSSZ() @@ -111,7 +111,7 @@ func (s *Server) GetLightClientUpdatesByRange(w http.ResponseWriter, req *http.R } if httputil.RespondWithSsz(req) { - w.Header().Set("Content-Type", "application/octet-stream") + w.Header().Set(api.ContentTypeHeader, api.OctetStreamMediaType) for _, update := range updates { if ctx.Err() != nil { @@ -174,7 +174,7 @@ func (s *Server) GetLightClientFinalityUpdate(w http.ResponseWriter, req *http.R return } - w.Header().Set(api.VersionHeader, version.String(update.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(update.Version())) if httputil.RespondWithSsz(req) { data, err := update.MarshalSSZ() if err != nil { @@ -207,7 +207,7 @@ func (s *Server) GetLightClientOptimisticUpdate(w http.ResponseWriter, req *http return } - w.Header().Set(api.VersionHeader, version.String(update.Version())) + w.Header().Set(api.EthConsensusVersionHeader, version.String(update.Version())) if httputil.RespondWithSsz(req) { data, err := update.MarshalSSZ() if err != nil { diff --git a/beacon-chain/rpc/eth/light-client/handlers_test.go b/beacon-chain/rpc/eth/light-client/handlers_test.go index 6c073bac6203..028bee32bb5e 100644 --- a/beacon-chain/rpc/eth/light-client/handlers_test.go +++ b/beacon-chain/rpc/eth/light-client/handlers_test.go @@ -11,6 +11,7 @@ import ( "strconv" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" "github.com/OffchainLabs/prysm/v6/async/event" blockchainTest "github.com/OffchainLabs/prysm/v6/beacon-chain/blockchain/testing" @@ -114,7 +115,7 @@ func TestLightClientHandler_GetLightClientBootstrap(t *testing.T) { } request := httptest.NewRequest("GET", "http://foo.com/", nil) request.SetPathValue("block_root", hexutil.Encode(blockRoot[:])) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -235,7 +236,7 @@ func TestLightClientHandler_GetLightClientByRange(t *testing.T) { t.Run("single update ssz", func(t *testing.T) { url := fmt.Sprintf("http://foo.com/?count=1&start_period=%d", startPeriod) request := httptest.NewRequest("GET", url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -290,7 +291,7 @@ func TestLightClientHandler_GetLightClientByRange(t *testing.T) { t.Run("multiple updates ssz", func(t *testing.T) { url := fmt.Sprintf("http://foo.com/?count=100&start_period=%d", startPeriod) request := httptest.NewRequest("GET", url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -405,7 +406,7 @@ func TestLightClientHandler_GetLightClientByRange(t *testing.T) { t.Run("ssz", func(t *testing.T) { url := fmt.Sprintf("http://foo.com/?count=100&start_period=%d", startPeriod) request := httptest.NewRequest("GET", url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -777,7 +778,7 @@ func TestLightClientHandler_GetLightClientFinalityUpdate(t *testing.T) { s.LCStore.SetLastFinalityUpdate(update, false) request := httptest.NewRequest("GET", "http://foo.com", nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetLightClientFinalityUpdate(writer, request) @@ -870,7 +871,7 @@ func TestLightClientHandler_GetLightClientOptimisticUpdate(t *testing.T) { s.LCStore.SetLastOptimisticUpdate(update, false) request := httptest.NewRequest("GET", "http://foo.com", nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} s.GetLightClientOptimisticUpdate(writer, request) diff --git a/beacon-chain/rpc/eth/validator/handlers.go b/beacon-chain/rpc/eth/validator/handlers.go index 7be36698d730..1918d824d8cb 100644 --- a/beacon-chain/rpc/eth/validator/handlers.go +++ b/beacon-chain/rpc/eth/validator/handlers.go @@ -126,7 +126,7 @@ func (s *Server) GetAggregateAttestationV2(w http.ResponseWriter, r *http.Reques } } - w.Header().Set(api.VersionHeader, version.String(v)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(v)) httputil.WriteSsz(w, data) return } @@ -159,7 +159,7 @@ func (s *Server) GetAggregateAttestationV2(w http.ResponseWriter, r *http.Reques } resp.Data = data } - w.Header().Set(api.VersionHeader, version.String(v)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(v)) httputil.WriteJson(w, resp) } @@ -357,9 +357,9 @@ func (s *Server) SubmitAggregateAndProofsV2(w http.ResponseWriter, r *http.Reque return } - versionHeader := r.Header.Get(api.VersionHeader) + versionHeader := r.Header.Get(api.EthConsensusVersionHeader) if versionHeader == "" { - httputil.HandleError(w, api.VersionHeader+" header is required", http.StatusBadRequest) + httputil.HandleError(w, api.EthConsensusVersionHeader+" header is required", http.StatusBadRequest) return } v, err := version.FromString(versionHeader) diff --git a/beacon-chain/rpc/eth/validator/handlers_block.go b/beacon-chain/rpc/eth/validator/handlers_block.go index df3543ae7ab9..737ceda0d34b 100644 --- a/beacon-chain/rpc/eth/validator/handlers_block.go +++ b/beacon-chain/rpc/eth/validator/handlers_block.go @@ -123,20 +123,20 @@ func (s *Server) produceBlockV3(ctx context.Context, w http.ResponseWriter, r *h consensusBlockValue = "0" } - w.Header().Set(api.ExecutionPayloadBlindedHeader, fmt.Sprintf("%v", v1alpha1resp.IsBlinded)) - w.Header().Set(api.ExecutionPayloadValueHeader, v1alpha1resp.PayloadValue) - w.Header().Set(api.ConsensusBlockValueHeader, consensusBlockValue) + w.Header().Set(api.EthExecutionPayloadBlindedHeader, fmt.Sprintf("%v", v1alpha1resp.IsBlinded)) + w.Header().Set(api.EthExecutionPayloadValueHeader, v1alpha1resp.PayloadValue) + w.Header().Set(api.EthConsensusBlockValueHeader, consensusBlockValue) phase0Block, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Phase0) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Phase0)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) // rewards aren't used in phase 0 handleProducePhase0V3(w, isSSZ, phase0Block, v1alpha1resp.PayloadValue) return } altairBlock, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Altair) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Altair)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Altair)) handleProduceAltairV3(w, isSSZ, altairBlock, v1alpha1resp.PayloadValue, consensusBlockValue) return } @@ -151,61 +151,61 @@ func (s *Server) produceBlockV3(ctx context.Context, w http.ResponseWriter, r *h } blindedBellatrixBlock, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_BlindedBellatrix) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Bellatrix)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) handleProduceBlindedBellatrixV3(w, isSSZ, blindedBellatrixBlock, v1alpha1resp.PayloadValue, consensusBlockValue) return } bellatrixBlock, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Bellatrix) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Bellatrix)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) handleProduceBellatrixV3(w, isSSZ, bellatrixBlock, v1alpha1resp.PayloadValue, consensusBlockValue) return } blindedCapellaBlock, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_BlindedCapella) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Capella)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Capella)) handleProduceBlindedCapellaV3(w, isSSZ, blindedCapellaBlock, v1alpha1resp.PayloadValue, consensusBlockValue) return } capellaBlock, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Capella) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Capella)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Capella)) handleProduceCapellaV3(w, isSSZ, capellaBlock, v1alpha1resp.PayloadValue, consensusBlockValue) return } blindedDenebBlockContents, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_BlindedDeneb) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Deneb)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) handleProduceBlindedDenebV3(w, isSSZ, blindedDenebBlockContents, v1alpha1resp.PayloadValue, consensusBlockValue) return } denebBlockContents, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Deneb) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Deneb)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) handleProduceDenebV3(w, isSSZ, denebBlockContents, v1alpha1resp.PayloadValue, consensusBlockValue) return } blindedElectraBlockContents, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_BlindedElectra) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Electra)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Electra)) handleProduceBlindedElectraV3(w, isSSZ, blindedElectraBlockContents, v1alpha1resp.PayloadValue, consensusBlockValue) return } electraBlockContents, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Electra) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Electra)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Electra)) handleProduceElectraV3(w, isSSZ, electraBlockContents, v1alpha1resp.PayloadValue, consensusBlockValue) return } blindedFuluBlockContents, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_BlindedFulu) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Fulu)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) handleProduceBlindedFuluV3(w, isSSZ, blindedFuluBlockContents, v1alpha1resp.PayloadValue, consensusBlockValue) return } fuluBlockContents, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Fulu) if ok { - w.Header().Set(api.VersionHeader, version.String(version.Fulu)) + w.Header().Set(api.EthConsensusVersionHeader, version.String(version.Fulu)) handleProduceFuluV3(w, isSSZ, fuluBlockContents, v1alpha1resp.PayloadValue, consensusBlockValue) return } diff --git a/beacon-chain/rpc/eth/validator/handlers_block_test.go b/beacon-chain/rpc/eth/validator/handlers_block_test.go index fabc1e1d05f2..01b2b86cb3eb 100644 --- a/beacon-chain/rpc/eth/validator/handlers_block_test.go +++ b/beacon-chain/rpc/eth/validator/handlers_block_test.go @@ -64,10 +64,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"phase0","execution_payload_blinded":false,"execution_payload_value":"","consensus_block_value":"","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "phase0", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Altair", func(t *testing.T) { var block *structs.SignedBeaconBlockAltair @@ -100,10 +100,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"altair","execution_payload_blinded":false,"execution_payload_value":"","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "altair", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "altair", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Bellatrix", func(t *testing.T) { var block *structs.SignedBeaconBlockBellatrix @@ -138,10 +138,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "bellatrix", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("BlindedBellatrix", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockBellatrix @@ -176,10 +176,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "bellatrix", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Capella", func(t *testing.T) { var block *structs.SignedBeaconBlockCapella @@ -214,10 +214,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"capella","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "capella", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "capella", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Capella", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockCapella @@ -252,10 +252,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"capella","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "capella", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "capella", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Deneb", func(t *testing.T) { var block *structs.SignedBeaconBlockContentsDeneb @@ -290,10 +290,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "deneb", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Deneb", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockDeneb @@ -328,10 +328,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "deneb", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Electra", func(t *testing.T) { var block *structs.SignedBeaconBlockContentsElectra @@ -366,10 +366,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"electra","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "electra", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "electra", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Electra", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockElectra @@ -404,10 +404,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"electra","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "electra", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "electra", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Fulu", func(t *testing.T) { var block *structs.SignedBeaconBlockContentsFulu @@ -442,10 +442,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"fulu","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "fulu", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "fulu", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Fulu", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockFulu @@ -480,10 +480,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"fulu","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10000000000","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "fulu", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "fulu", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("invalid query parameter slot empty", func(t *testing.T) { v1alpha1Server := mock2.NewMockBeaconNodeValidatorServer(ctrl) @@ -573,10 +573,10 @@ func TestProduceBlockV3(t *testing.T) { want := fmt.Sprintf(`{"version":"fulu","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"0","data":%s}`, string(jsonBytes)) body := strings.ReplaceAll(writer.Body.String(), "\n", "") require.Equal(t, want, body) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "fulu", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "0", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "fulu", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "0", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) } @@ -611,7 +611,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { SyncChecker: syncChecker, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -623,10 +623,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Phase0.Block.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "phase0", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Altair", func(t *testing.T) { var block *structs.SignedBeaconBlockAltair @@ -649,7 +649,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -661,10 +661,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Altair.Block.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "altair", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "altair", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Bellatrix", func(t *testing.T) { var block *structs.SignedBeaconBlockBellatrix @@ -691,7 +691,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -703,10 +703,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Bellatrix.Block.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "bellatrix", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("BlindedBellatrix", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockBellatrix @@ -732,7 +732,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -744,10 +744,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.BlindedBellatrix.Block.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "bellatrix", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Capella", func(t *testing.T) { var block *structs.SignedBeaconBlockCapella @@ -773,7 +773,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -785,10 +785,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Capella.Block.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "capella", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "capella", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Capella", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockCapella @@ -814,7 +814,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -826,10 +826,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.BlindedCapella.Block.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "capella", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "capella", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Deneb", func(t *testing.T) { var block *structs.SignedBeaconBlockContentsDeneb @@ -855,7 +855,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -867,10 +867,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Deneb.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "deneb", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Deneb", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockDeneb @@ -896,7 +896,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -908,10 +908,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.BlindedDeneb.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "deneb", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Electra", func(t *testing.T) { var block *structs.SignedBeaconBlockContentsElectra @@ -937,7 +937,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -949,10 +949,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Electra.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "electra", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "electra", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Electra", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockElectra @@ -978,7 +978,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -990,10 +990,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.BlindedElectra.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "electra", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "electra", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Fulu", func(t *testing.T) { var block *structs.SignedBeaconBlockContentsFulu @@ -1019,7 +1019,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -1031,10 +1031,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Fulu.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "fulu", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "fulu", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("Blinded Fulu", func(t *testing.T) { var block *structs.SignedBlindedBeaconBlockFulu @@ -1060,7 +1060,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -1072,10 +1072,10 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.BlindedFulu.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "fulu", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "10000000000", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "true", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "fulu", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "10000000000", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) t.Run("0 block value is returned on error", func(t *testing.T) { rewardFetcher := &rewardtesting.MockBlockRewardFetcher{Error: &httputil.DefaultJsonError{}} @@ -1103,7 +1103,7 @@ func TestProduceBlockV3SSZ(t *testing.T) { BlockRewardFetcher: rewardFetcher, } request := httptest.NewRequest(http.MethodGet, fmt.Sprintf("http://foo.example/eth/v3/validator/blocks/1?randao_reveal=%s&graffiti=%s", randao, graffiti), nil) - request.Header.Set("Accept", api.OctetStreamMediaType) + request.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} server.ProduceBlockV3(writer, request) @@ -1115,9 +1115,9 @@ func TestProduceBlockV3SSZ(t *testing.T) { ssz, err := bl.Fulu.MarshalSSZ() require.NoError(t, err) require.Equal(t, string(ssz), writer.Body.String()) - require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader)) - require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader)) - require.Equal(t, "fulu", writer.Header().Get(api.VersionHeader)) - require.Equal(t, "0", writer.Header().Get(api.ConsensusBlockValueHeader)) + require.Equal(t, "false", writer.Header().Get(api.EthExecutionPayloadBlindedHeader)) + require.Equal(t, "2000", writer.Header().Get(api.EthExecutionPayloadValueHeader)) + require.Equal(t, "fulu", writer.Header().Get(api.EthConsensusVersionHeader)) + require.Equal(t, "0", writer.Header().Get(api.EthConsensusBlockValueHeader)) }) } diff --git a/beacon-chain/rpc/eth/validator/handlers_test.go b/beacon-chain/rpc/eth/validator/handlers_test.go index 3baba284b840..b2242a0f94f4 100644 --- a/beacon-chain/rpc/eth/validator/handlers_test.go +++ b/beacon-chain/rpc/eth/validator/handlers_test.go @@ -312,7 +312,7 @@ func TestGetAggregateAttestation(t *testing.T) { attDataRoot := hexutil.Encode(reqRoot[:]) url := "http://example.com?attestation_data_root=" + attDataRoot + "&slot=2" + "&committee_index=0" request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() s.GetAggregateAttestationV2(writer, request) @@ -349,7 +349,7 @@ func TestGetAggregateAttestation(t *testing.T) { attDataRoot := hexutil.Encode(reqRoot[:]) url := "http://example.com?attestation_data_root=" + attDataRoot + "&slot=1" + "&committee_index=0" request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() s.GetAggregateAttestationV2(writer, request) @@ -460,7 +460,7 @@ func TestGetAggregateAttestation(t *testing.T) { attDataRoot := hexutil.Encode(reqRoot[:]) url := "http://example.com?attestation_data_root=" + attDataRoot + "&slot=2" + "&committee_index=0" request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() s.GetAggregateAttestationV2(writer, request) @@ -497,7 +497,7 @@ func TestGetAggregateAttestation(t *testing.T) { attDataRoot := hexutil.Encode(reqRoot[:]) url := "http://example.com?attestation_data_root=" + attDataRoot + "&slot=1" + "&committee_index=0" request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() s.GetAggregateAttestationV2(writer, request) @@ -533,7 +533,7 @@ func TestGetAggregateAttestation(t *testing.T) { attDataRoot := hexutil.Encode(reqRoot[:]) url := "http://example.com?attestation_data_root=" + attDataRoot + "&slot=4" + "&committee_index=0" request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() s.GetAggregateAttestationV2(writer, request) @@ -574,7 +574,7 @@ func TestGetAggregateAttestation(t *testing.T) { attDataRoot := hexutil.Encode(reqRoot[:]) url := "http://example.com?attestation_data_root=" + attDataRoot + "&slot=3" + "&committee_index=0" request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() s.GetAggregateAttestationV2(writer, request) @@ -819,7 +819,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(singleAggregateElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -835,7 +835,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(singleAggregate) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -857,7 +857,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(multipleAggregatesElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -874,7 +874,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(multipleAggregates) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -892,7 +892,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(singleAggregate) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Phase0)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Phase0)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -907,7 +907,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(singleAggregateElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -919,7 +919,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { }) t.Run("no body", func(t *testing.T) { request := httptest.NewRequest(http.MethodPost, "http://example.com", nil) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -932,7 +932,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { }) t.Run("no body-pre-electra", func(t *testing.T) { request := httptest.NewRequest(http.MethodPost, "http://example.com", nil) - request.Header.Set(api.VersionHeader, version.String(version.Bellatrix)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Bellatrix)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -948,7 +948,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString("[]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -964,7 +964,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString("[]") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Altair)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Altair)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -980,7 +980,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(invalidAggregateElectra) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Electra)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Electra)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -995,7 +995,7 @@ func TestSubmitAggregateAndProofs(t *testing.T) { _, err := body.WriteString(invalidAggregate) require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://example.com", &body) - request.Header.Set(api.VersionHeader, version.String(version.Deneb)) + request.Header.Set(api.EthConsensusVersionHeader, version.String(version.Deneb)) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1461,7 +1461,7 @@ func TestGetAttestationData(t *testing.T) { url := fmt.Sprintf("http://example.com?slot=%d&committee_index=%d", slot, 0) request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1780,7 +1780,7 @@ func TestGetAttestationData(t *testing.T) { url := fmt.Sprintf("http://example.com?slot=%d&committee_index=%d", slot, 0) request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} @@ -1969,7 +1969,7 @@ func TestGetAttestationData(t *testing.T) { url := fmt.Sprintf("http://example.com?slot=%d&committee_index=%d", slot, 0) request := httptest.NewRequest(http.MethodGet, url, nil) - request.Header.Add("Accept", "application/octet-stream") + request.Header.Add(api.AcceptHeader, api.OctetStreamMediaType) writer := httptest.NewRecorder() writer.Body = &bytes.Buffer{} diff --git a/beacon-chain/rpc/prysm/beacon/BUILD.bazel b/beacon-chain/rpc/prysm/beacon/BUILD.bazel index e4a36ab4ce25..a71e1e48ca35 100644 --- a/beacon-chain/rpc/prysm/beacon/BUILD.bazel +++ b/beacon-chain/rpc/prysm/beacon/BUILD.bazel @@ -45,6 +45,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//api/server/structs:go_default_library", "//beacon-chain/blockchain/testing:go_default_library", "//beacon-chain/core/helpers:go_default_library", diff --git a/beacon-chain/rpc/prysm/beacon/handlers_test.go b/beacon-chain/rpc/prysm/beacon/handlers_test.go index 6c10f0225849..2e832b3dc26b 100644 --- a/beacon-chain/rpc/prysm/beacon/handlers_test.go +++ b/beacon-chain/rpc/prysm/beacon/handlers_test.go @@ -10,6 +10,7 @@ import ( "net/http/httptest" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" chainMock "github.com/OffchainLabs/prysm/v6/beacon-chain/blockchain/testing" "github.com/OffchainLabs/prysm/v6/beacon-chain/core/helpers" @@ -49,7 +50,7 @@ func individualVotesHelper(t *testing.T, request *structs.GetIndividualVotesRequ &buf, ) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { diff --git a/beacon-chain/rpc/prysm/validator/BUILD.bazel b/beacon-chain/rpc/prysm/validator/BUILD.bazel index b7bfa46a4f23..8b467e453440 100644 --- a/beacon-chain/rpc/prysm/validator/BUILD.bazel +++ b/beacon-chain/rpc/prysm/validator/BUILD.bazel @@ -34,6 +34,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//api/server/structs:go_default_library", "//beacon-chain/blockchain/testing:go_default_library", "//beacon-chain/core/altair:go_default_library", diff --git a/beacon-chain/rpc/prysm/validator/validator_performance_test.go b/beacon-chain/rpc/prysm/validator/validator_performance_test.go index 0420132692e3..17e48aae8bbb 100644 --- a/beacon-chain/rpc/prysm/validator/validator_performance_test.go +++ b/beacon-chain/rpc/prysm/validator/validator_performance_test.go @@ -9,6 +9,7 @@ import ( "testing" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" mock "github.com/OffchainLabs/prysm/v6/beacon-chain/blockchain/testing" "github.com/OffchainLabs/prysm/v6/beacon-chain/core/epoch/precompute" @@ -38,7 +39,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { req := httptest.NewRequest("POST", "/foo", nil) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) require.Equal(t, http.StatusBadRequest, rawResp.StatusCode) }) @@ -88,7 +89,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(vs.GetPerformance)) req := httptest.NewRequest("POST", "/foo", &buf) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { @@ -153,7 +154,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(vs.GetPerformance)) req := httptest.NewRequest("POST", "/foo", &buf) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { @@ -218,7 +219,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(vs.GetPerformance)) req := httptest.NewRequest("POST", "/foo", &buf) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { @@ -280,7 +281,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(vs.GetPerformance)) req := httptest.NewRequest("POST", "/foo", &buf) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { @@ -342,7 +343,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(vs.GetPerformance)) req := httptest.NewRequest("POST", "/foo", &buf) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { @@ -404,7 +405,7 @@ func TestServer_GetValidatorPerformance(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(vs.GetPerformance)) req := httptest.NewRequest("POST", "/foo", &buf) client := &http.Client{} - rawResp, err := client.Post(srv.URL, "application/json", req.Body) + rawResp, err := client.Post(srv.URL, api.JsonMediaType, req.Body) require.NoError(t, err) defer func() { if err := rawResp.Body.Close(); err != nil { diff --git a/changelog/radek_header-consts.md b/changelog/radek_header-consts.md new file mode 100644 index 000000000000..c9c7c8f4544b --- /dev/null +++ b/changelog/radek_header-consts.md @@ -0,0 +1,3 @@ +### Ignored + +- Always use constants for API headers. \ No newline at end of file diff --git a/cmd/prysmctl/validator/BUILD.bazel b/cmd/prysmctl/validator/BUILD.bazel index 8920247be1d2..72d960ec02a2 100644 --- a/cmd/prysmctl/validator/BUILD.bazel +++ b/cmd/prysmctl/validator/BUILD.bazel @@ -46,6 +46,7 @@ go_test( data = glob(["testdata/**"]), embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//api/server:go_default_library", "//api/server/structs:go_default_library", "//config/params:go_default_library", diff --git a/cmd/prysmctl/validator/proposer_settings_test.go b/cmd/prysmctl/validator/proposer_settings_test.go index d63d5b62f937..f16fcd13e410 100644 --- a/cmd/prysmctl/validator/proposer_settings_test.go +++ b/cmd/prysmctl/validator/proposer_settings_test.go @@ -11,6 +11,7 @@ import ( "strings" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/testing/assert" "github.com/OffchainLabs/prysm/v6/testing/require" "github.com/OffchainLabs/prysm/v6/validator/rpc" @@ -23,8 +24,8 @@ func getValidatorHappyPathTestServer(t *testing.T) *httptest.Server { key2 := "0x844ae9c6184d6edd46351b375f16f541b2d33b0ed0da9be4571b13938588aee840ba606a946f0e8023ae3a4b2a43b4d4" address1 := "0xb698D697092822185bF0311052215d5B5e1F3944" return httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) if r.Method == http.MethodGet { if r.RequestURI == "/eth/v1/keystores" { err := json.NewEncoder(w).Encode(&rpc.ListKeystoresResponse{ diff --git a/cmd/prysmctl/validator/withdraw_test.go b/cmd/prysmctl/validator/withdraw_test.go index 1b8d040c493f..2027522ef3bb 100644 --- a/cmd/prysmctl/validator/withdraw_test.go +++ b/cmd/prysmctl/validator/withdraw_test.go @@ -11,6 +11,7 @@ import ( "path/filepath" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server" "github.com/OffchainLabs/prysm/v6/api/server/structs" "github.com/OffchainLabs/prysm/v6/config/params" @@ -23,8 +24,8 @@ import ( func getHappyPathTestServer(file string, t *testing.T) *httptest.Server { return httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) if r.Method == http.MethodGet { fmt.Println(r.RequestURI) if r.RequestURI == "/eth/v1/beacon/pool/bls_to_execution_changes" { @@ -217,8 +218,8 @@ func TestCallWithdrawalEndpoint_Errors(t *testing.T) { require.NoError(t, err) srv := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodPost && r.RequestURI == "/eth/v1/beacon/pool/bls_to_execution_changes" { - w.WriteHeader(400) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusBadRequest) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) err = json.NewEncoder(w).Encode(&server.IndexedVerificationFailureError{ Failures: []*server.IndexedVerificationFailure{ {Index: 0, Message: "Could not validate SignedBLSToExecutionChange"}, @@ -227,8 +228,8 @@ func TestCallWithdrawalEndpoint_Errors(t *testing.T) { require.NoError(t, err) } else if r.Method == http.MethodGet { if r.RequestURI == "/eth/v1/beacon/states/head/fork" { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) err := json.NewEncoder(w).Encode(&structs.GetStateForkResponse{ Data: &structs.Fork{ PreviousVersion: hexutil.Encode(params.BeaconConfig().CapellaForkVersion), @@ -240,8 +241,8 @@ func TestCallWithdrawalEndpoint_Errors(t *testing.T) { }) require.NoError(t, err) } else if r.RequestURI == "/eth/v1/config/spec" { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) m := make(map[string]string) m["CAPELLA_FORK_EPOCH"] = "1350" err := json.NewEncoder(w).Encode(&structs.GetSpecResponse{ @@ -249,8 +250,8 @@ func TestCallWithdrawalEndpoint_Errors(t *testing.T) { }) require.NoError(t, err) } else { - w.WriteHeader(400) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusBadRequest) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) } } })) @@ -283,8 +284,8 @@ func TestCallWithdrawalEndpoint_ForkBeforeCapella(t *testing.T) { l, err := net.Listen("tcp", baseurl) require.NoError(t, err) srv := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) if r.RequestURI == "/eth/v1/beacon/states/head/fork" { err := json.NewEncoder(w).Encode(&structs.GetStateForkResponse{ @@ -332,8 +333,8 @@ func TestVerifyWithdrawal_Multiple(t *testing.T) { l, err := net.Listen("tcp", baseurl) require.NoError(t, err) srv := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) if r.Method == http.MethodGet { b, err := os.ReadFile(filepath.Clean(file)) require.NoError(t, err) diff --git a/config/BUILD.bazel b/config/BUILD.bazel index a9057b4ecf3a..67457431b8d3 100644 --- a/config/BUILD.bazel +++ b/config/BUILD.bazel @@ -20,6 +20,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/config", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "@com_github_ethereum_go_ethereum//common:go_default_library", "@com_github_pkg_errors//:go_default_library", "@com_github_sirupsen_logrus//:go_default_library", diff --git a/config/proposer/loader/BUILD.bazel b/config/proposer/loader/BUILD.bazel index b0cc09e51ed6..a5dcc53e3641 100644 --- a/config/proposer/loader/BUILD.bazel +++ b/config/proposer/loader/BUILD.bazel @@ -7,6 +7,7 @@ go_test( data = glob(["testdata/**"]), embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//cmd/validator/flags:go_default_library", "//config/fieldparams:go_default_library", "//config/params:go_default_library", diff --git a/config/proposer/loader/loader_test.go b/config/proposer/loader/loader_test.go index 2043b4bc25b4..753148d5fc90 100644 --- a/config/proposer/loader/loader_test.go +++ b/config/proposer/loader/loader_test.go @@ -8,6 +8,7 @@ import ( "os" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/cmd/validator/flags" fieldparams "github.com/OffchainLabs/prysm/v6/config/fieldparams" "github.com/OffchainLabs/prysm/v6/config/params" @@ -907,8 +908,8 @@ func TestProposerSettingsLoader(t *testing.T) { content, err := os.ReadFile(tt.args.proposerSettingsFlagValues.url) require.NoError(t, err) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) _, err := fmt.Fprintf(w, "%s", content) require.NoError(t, err) })) diff --git a/config/util.go b/config/util.go index 6c69aecfe86e..4564cff18105 100644 --- a/config/util.go +++ b/config/util.go @@ -10,6 +10,7 @@ import ( "os" "path/filepath" + "github.com/OffchainLabs/prysm/v6/api" "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" log "github.com/sirupsen/logrus" @@ -28,7 +29,7 @@ func UnmarshalFromURL(ctx context.Context, from string, to interface{}) error { if err != nil { return errors.Wrap(err, "failed to create http request") } - req.Header.Set("Content-Type", "application/json") + req.Header.Set(api.ContentTypeHeader, api.JsonMediaType) resp, err := http.DefaultClient.Do(req) if err != nil { return errors.Wrap(err, "failed to send http request") diff --git a/monitoring/clientstats/BUILD.bazel b/monitoring/clientstats/BUILD.bazel index cd165bce5d7a..66ba67d9914a 100644 --- a/monitoring/clientstats/BUILD.bazel +++ b/monitoring/clientstats/BUILD.bazel @@ -11,6 +11,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/monitoring/clientstats", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "//proto/prysm/v1alpha1:go_default_library", "@com_github_prometheus_client_model//go:go_default_library", "@com_github_prometheus_prom2json//:go_default_library", diff --git a/monitoring/clientstats/updaters.go b/monitoring/clientstats/updaters.go index 19bedd6eaf4d..4468999a94e4 100644 --- a/monitoring/clientstats/updaters.go +++ b/monitoring/clientstats/updaters.go @@ -5,6 +5,8 @@ import ( "fmt" "io" "net/http" + + "github.com/OffchainLabs/prysm/v6/api" ) type genericWriter struct { @@ -30,7 +32,7 @@ type httpPoster struct { } func (gw *httpPoster) Update(r io.Reader) error { - resp, err := gw.client.Post(gw.url, "application/json", r) + resp, err := gw.client.Post(gw.url, api.JsonMediaType, r) if err != nil { return err } diff --git a/monitoring/prometheus/BUILD.bazel b/monitoring/prometheus/BUILD.bazel index 7809130de145..0250c4f348a3 100644 --- a/monitoring/prometheus/BUILD.bazel +++ b/monitoring/prometheus/BUILD.bazel @@ -11,6 +11,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/monitoring/prometheus", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "//runtime:go_default_library", "@com_github_golang_gddo//httputil:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", @@ -29,6 +30,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//runtime:go_default_library", "//testing/assert:go_default_library", "//testing/require:go_default_library", diff --git a/monitoring/prometheus/content_negotiation.go b/monitoring/prometheus/content_negotiation.go index 0b49e6ab3d20..5f7e4b7918f1 100644 --- a/monitoring/prometheus/content_negotiation.go +++ b/monitoring/prometheus/content_negotiation.go @@ -6,14 +6,10 @@ import ( "fmt" "net/http" + "github.com/OffchainLabs/prysm/v6/api" "github.com/golang/gddo/httputil" ) -const ( - contentTypePlainText = "text/plain" - contentTypeJSON = "application/json" -) - // generatedResponse is a container for response output. type generatedResponse struct { // Err is protocol error, if any. @@ -26,16 +22,16 @@ type generatedResponse struct { // negotiateContentType parses "Accept:" header and returns preferred content type string. func negotiateContentType(r *http.Request) string { contentTypes := []string{ - contentTypePlainText, - contentTypeJSON, + api.PlainMediaType, + api.JsonMediaType, } - return httputil.NegotiateContentType(r, contentTypes, contentTypePlainText) + return httputil.NegotiateContentType(r, contentTypes, api.PlainMediaType) } // writeResponse is content-type aware response writer. func writeResponse(w http.ResponseWriter, r *http.Request, response generatedResponse) error { switch negotiateContentType(r) { - case contentTypePlainText: + case api.PlainMediaType: buf, ok := response.Data.(bytes.Buffer) if !ok { return fmt.Errorf("unexpected data: %v", response.Data) @@ -43,8 +39,8 @@ func writeResponse(w http.ResponseWriter, r *http.Request, response generatedRes if _, err := w.Write(buf.Bytes()); err != nil { return fmt.Errorf("could not write response body: %w", err) } - case contentTypeJSON: - w.Header().Set("Content-Type", contentTypeJSON) + case api.JsonMediaType: + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) if err := json.NewEncoder(w).Encode(response); err != nil { return err } diff --git a/monitoring/prometheus/service.go b/monitoring/prometheus/service.go index 2c683559c9d5..e4c56838d9a5 100644 --- a/monitoring/prometheus/service.go +++ b/monitoring/prometheus/service.go @@ -12,6 +12,7 @@ import ( "runtime/pprof" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/runtime" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" @@ -91,7 +92,7 @@ func (s *Service) healthzHandler(w http.ResponseWriter, r *http.Request) { } // Handle plain text content. - if contentType := negotiateContentType(r); contentType == contentTypePlainText { + if contentType := negotiateContentType(r); contentType == api.PlainMediaType { var buf bytes.Buffer for _, s := range statuses { var status string diff --git a/monitoring/prometheus/service_test.go b/monitoring/prometheus/service_test.go index 3087ab3baa3a..117cec08e80c 100644 --- a/monitoring/prometheus/service_test.go +++ b/monitoring/prometheus/service_test.go @@ -11,6 +11,7 @@ import ( "testing" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/runtime" "github.com/OffchainLabs/prysm/v6/testing/assert" "github.com/OffchainLabs/prysm/v6/testing/require" @@ -130,7 +131,7 @@ func TestContentNegotiation(t *testing.T) { } // Request response as JSON. - req.Header.Add("Accept", "application/json, */*;q=0.5") + req.Header.Add(api.AcceptHeader, "application/json, */*;q=0.5") rr = httptest.NewRecorder() handler.ServeHTTP(rr, req) @@ -161,7 +162,7 @@ func TestContentNegotiation(t *testing.T) { } // Request response as JSON. - req.Header.Add("Accept", "application/json, */*;q=0.5") + req.Header.Add(api.AcceptHeader, "application/json, */*;q=0.5") rr = httptest.NewRecorder() handler.ServeHTTP(rr, req) diff --git a/network/BUILD.bazel b/network/BUILD.bazel index f6cfeeeed9c2..a3003c55db58 100644 --- a/network/BUILD.bazel +++ b/network/BUILD.bazel @@ -10,6 +10,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/network", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "//network/authorization:go_default_library", "@com_github_ethereum_go_ethereum//rpc:go_default_library", "@com_github_golang_jwt_jwt_v4//:go_default_library", @@ -28,6 +29,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//encoding/bytesutil:go_default_library", "//network/authorization:go_default_library", "//testing/assert:go_default_library", diff --git a/network/auth.go b/network/auth.go index a17f81d7ab15..f0e47bcfa743 100644 --- a/network/auth.go +++ b/network/auth.go @@ -1,9 +1,11 @@ package network import ( + "fmt" "net/http" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/golang-jwt/jwt/v4" "github.com/pkg/errors" ) @@ -47,6 +49,6 @@ func (t *jwtTransport) RoundTrip(req *http.Request) (*http.Response, error) { if err != nil { return nil, errors.Wrap(err, "could not produce signed JWT token") } - req.Header.Set("Authorization", "Bearer "+tokenString) + req.Header.Set(api.AuthorizationHeader, fmt.Sprintf("%s %s", api.BearerAuthorization, tokenString)) return t.underlyingTransport.RoundTrip(req) } diff --git a/network/auth_test.go b/network/auth_test.go index 8ec5ce862151..dd22892de81f 100644 --- a/network/auth_test.go +++ b/network/auth_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/encoding/bytesutil" "github.com/OffchainLabs/prysm/v6/testing/require" "github.com/golang-jwt/jwt/v4" @@ -23,8 +24,8 @@ func TestJWTAuthTransport(t *testing.T) { Transport: authTransport, } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - reqToken := r.Header.Get("Authorization") - splitToken := strings.Split(reqToken, "Bearer") + reqToken := r.Header.Get(api.AuthorizationHeader) + splitToken := strings.Split(reqToken, api.BearerAuthorization) // The format should be `Bearer ${token}`. require.Equal(t, 2, len(splitToken)) reqToken = strings.TrimSpace(splitToken[1]) @@ -65,8 +66,8 @@ func TestJWTWithId(t *testing.T) { Transport: authTransport, } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - reqToken := r.Header.Get("Authorization") - splitToken := strings.Split(reqToken, "Bearer") + reqToken := r.Header.Get(api.AuthorizationHeader) + splitToken := strings.Split(reqToken, api.BearerAuthorization) // The format should be `Bearer ${token}`. require.Equal(t, 2, len(splitToken)) reqToken = strings.TrimSpace(splitToken[1]) @@ -109,8 +110,8 @@ func TestJWTWithoutId(t *testing.T) { Transport: authTransport, } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - reqToken := r.Header.Get("Authorization") - splitToken := strings.Split(reqToken, "Bearer") + reqToken := r.Header.Get(api.AuthorizationHeader) + splitToken := strings.Split(reqToken, api.BearerAuthorization) // The format should be `Bearer ${token}`. require.Equal(t, 2, len(splitToken)) reqToken = strings.TrimSpace(splitToken[1]) diff --git a/network/endpoint.go b/network/endpoint.go index 16e04a56ad7b..10aa8d90099f 100644 --- a/network/endpoint.go +++ b/network/endpoint.go @@ -9,6 +9,7 @@ import ( "net/url" "strings" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/network/authorization" gethRPC "github.com/ethereum/go-ethereum/rpc" log "github.com/sirupsen/logrus" @@ -51,9 +52,9 @@ func (d *AuthorizationData) Equals(other AuthorizationData) bool { func (d *AuthorizationData) ToHeaderValue() (string, error) { switch d.Method { case authorization.Basic: - return "Basic " + d.Value, nil + return fmt.Sprintf("%s %s", api.BasicAuthorization, d.Value), nil case authorization.Bearer: - return "Bearer " + d.Value, nil + return fmt.Sprintf("%s %s", api.BearerAuthorization, d.Value), nil case authorization.None: return "", nil } @@ -103,10 +104,10 @@ func HttpEndpoint(eth1Provider string) Endpoint { // Method returns the authorizationmethod.AuthorizationMethod corresponding with the parameter value. func Method(auth string) authorization.Method { - if strings.HasPrefix(strings.ToLower(auth), "basic") { + if strings.HasPrefix(strings.ToLower(auth), strings.ToLower(api.BasicAuthorization)) { return authorization.Basic } - if strings.HasPrefix(strings.ToLower(auth), "bearer") { + if strings.HasPrefix(strings.ToLower(auth), strings.ToLower(api.BearerAuthorization)) { return authorization.Bearer } return authorization.None diff --git a/network/httputil/reader.go b/network/httputil/reader.go index e13ef2b62694..df6768cdbe82 100644 --- a/network/httputil/reader.go +++ b/network/httputil/reader.go @@ -14,7 +14,7 @@ var priorityRegex = regexp.MustCompile(`q=(\d+(?:\.\d+)?)`) // RespondWithSsz takes a http request and checks to see if it should be requesting a ssz response. func RespondWithSsz(req *http.Request) bool { - accept := req.Header.Values("Accept") + accept := req.Header.Values(api.AcceptHeader) if len(accept) == 0 { return false } @@ -54,5 +54,5 @@ func RespondWithSsz(req *http.Request) bool { // IsRequestSsz checks if the request object should be interpreted as ssz func IsRequestSsz(req *http.Request) bool { - return req.Header.Get("Content-Type") == api.OctetStreamMediaType + return req.Header.Get(api.ContentTypeHeader) == api.OctetStreamMediaType } diff --git a/network/httputil/reader_test.go b/network/httputil/reader_test.go index 828a9bbbb9ca..79c9ac6bb188 100644 --- a/network/httputil/reader_test.go +++ b/network/httputil/reader_test.go @@ -15,42 +15,42 @@ import ( func TestRespondWithSsz(t *testing.T) { t.Run("ssz_requested", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{api.OctetStreamMediaType} + request.Header[api.AcceptHeader] = []string{api.OctetStreamMediaType} result := RespondWithSsz(request) assert.Equal(t, true, result) }) t.Run("ssz_content_type_first", func(t *testing.T) { request := httptest.NewRequest("GET", "http://foo.example", nil) - request.Header["Accept"] = []string{fmt.Sprintf("%s,%s", api.OctetStreamMediaType, api.JsonMediaType)} + request.Header[api.AcceptHeader] = []string{fmt.Sprintf("%s,%s", api.OctetStreamMediaType, api.JsonMediaType)} result := RespondWithSsz(request) assert.Equal(t, true, result) }) t.Run("ssz_content_type_preferred_1", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{fmt.Sprintf("%s;q=0.9,%s", api.JsonMediaType, api.OctetStreamMediaType)} + request.Header[api.AcceptHeader] = []string{fmt.Sprintf("%s;q=0.9,%s", api.JsonMediaType, api.OctetStreamMediaType)} result := RespondWithSsz(request) assert.Equal(t, true, result) }) t.Run("ssz_content_type_preferred_2", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{fmt.Sprintf("%s;q=0.95,%s;q=0.9", api.OctetStreamMediaType, api.JsonMediaType)} + request.Header[api.AcceptHeader] = []string{fmt.Sprintf("%s;q=0.95,%s;q=0.9", api.OctetStreamMediaType, api.JsonMediaType)} result := RespondWithSsz(request) assert.Equal(t, true, result) }) t.Run("other_content_type_preferred", func(t *testing.T) { request := httptest.NewRequest("GET", "http://foo.example", nil) - request.Header["Accept"] = []string{fmt.Sprintf("%s,%s;q=0.9", api.JsonMediaType, api.OctetStreamMediaType)} + request.Header[api.AcceptHeader] = []string{fmt.Sprintf("%s,%s;q=0.9", api.JsonMediaType, api.OctetStreamMediaType)} result := RespondWithSsz(request) assert.Equal(t, false, result) }) t.Run("other_params", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{fmt.Sprintf("%s,%s;q=0.9,otherparam=xyz", api.JsonMediaType, api.OctetStreamMediaType)} + request.Header[api.AcceptHeader] = []string{fmt.Sprintf("%s,%s;q=0.9,otherparam=xyz", api.JsonMediaType, api.OctetStreamMediaType)} result := RespondWithSsz(request) assert.Equal(t, false, result) }) @@ -63,28 +63,28 @@ func TestRespondWithSsz(t *testing.T) { t.Run("empty_header", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{} + request.Header[api.AcceptHeader] = []string{} result := RespondWithSsz(request) assert.Equal(t, false, result) }) t.Run("empty_header_value", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{""} + request.Header[api.AcceptHeader] = []string{""} result := RespondWithSsz(request) assert.Equal(t, false, result) }) t.Run("other_content_type", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{"application/other"} + request.Header[api.AcceptHeader] = []string{"application/other"} result := RespondWithSsz(request) assert.Equal(t, false, result) }) t.Run("garbage", func(t *testing.T) { request := httptest.NewRequest(http.MethodGet, "http://foo.example", nil) - request.Header["Accept"] = []string{"This is Sparta!!!"} + request.Header[api.AcceptHeader] = []string{"This is Sparta!!!"} result := RespondWithSsz(request) assert.Equal(t, false, result) }) @@ -96,7 +96,7 @@ func TestIsRequestSsz(t *testing.T) { _, err := body.WriteString("something") require.NoError(t, err) request := httptest.NewRequest(http.MethodPost, "http://foo.example", &body) - request.Header["Content-Type"] = []string{api.OctetStreamMediaType} + request.Header[api.ContentTypeHeader] = []string{api.OctetStreamMediaType} result := IsRequestSsz(request) assert.Equal(t, true, result) }) @@ -109,14 +109,14 @@ func TestIsRequestSsz(t *testing.T) { t.Run("ssz Post wrong content type", func(t *testing.T) { request := httptest.NewRequest(http.MethodPost, "http://foo.example", nil) - request.Header["Content-Type"] = []string{"application/other"} + request.Header[api.ContentTypeHeader] = []string{"application/other"} result := IsRequestSsz(request) assert.Equal(t, false, result) }) t.Run("ssz Post json content type", func(t *testing.T) { request := httptest.NewRequest(http.MethodPost, "http://foo.example", nil) - request.Header["Content-Type"] = []string{api.JsonMediaType} + request.Header[api.ContentTypeHeader] = []string{api.JsonMediaType} result := IsRequestSsz(request) assert.Equal(t, false, result) }) diff --git a/network/httputil/writer.go b/network/httputil/writer.go index a025728da244..95ab6c9eba1c 100644 --- a/network/httputil/writer.go +++ b/network/httputil/writer.go @@ -32,7 +32,7 @@ func (e *DefaultJsonError) Error() string { // WriteJson writes the response message in JSON format. func WriteJson(w http.ResponseWriter, v any) { - w.Header().Set("Content-Type", api.JsonMediaType) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) w.WriteHeader(http.StatusOK) if err := json.NewEncoder(w).Encode(v); err != nil { log.WithError(err).Error("Could not write response message") @@ -41,8 +41,8 @@ func WriteJson(w http.ResponseWriter, v any) { // WriteSsz writes the response message in ssz format func WriteSsz(w http.ResponseWriter, respSsz []byte) { - w.Header().Set("Content-Length", strconv.Itoa(len(respSsz))) - w.Header().Set("Content-Type", api.OctetStreamMediaType) + w.Header().Set(api.ContentLengthHeader, strconv.Itoa(len(respSsz))) + w.Header().Set(api.ContentTypeHeader, api.OctetStreamMediaType) if _, err := io.Copy(w, io.NopCloser(bytes.NewReader(respSsz))); err != nil { log.WithError(err).Error("Could not write response message") } @@ -55,8 +55,8 @@ func WriteError(w http.ResponseWriter, errJson HasStatusCode) { log.WithError(err).Error("Could not marshal error message") return } - w.Header().Set("Content-Length", strconv.Itoa(len(j))) - w.Header().Set("Content-Type", api.JsonMediaType) + w.Header().Set(api.ContentLengthHeader, strconv.Itoa(len(j))) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) w.WriteHeader(errJson.StatusCode()) if _, err := io.Copy(w, io.NopCloser(bytes.NewReader(j))); err != nil { log.WithError(err).Error("Could not write error message") diff --git a/testing/endtoend/evaluators/beaconapi/util.go b/testing/endtoend/evaluators/beaconapi/util.go index 565bcb22e6db..8163822facc1 100644 --- a/testing/endtoend/evaluators/beaconapi/util.go +++ b/testing/endtoend/evaluators/beaconapi/util.go @@ -48,7 +48,7 @@ func doJSONGETRequest(template, requestPath string, beaconNodeIdx int, resp inte var body interface{} if httpResp.StatusCode != http.StatusOK { - if httpResp.Header.Get("Content-Type") == api.JsonMediaType { + if httpResp.Header.Get(api.ContentTypeHeader) == api.JsonMediaType { if err = json.NewDecoder(httpResp.Body).Decode(&body); err != nil { return errors.Wrap(err, "failed to decode response body") } @@ -89,7 +89,7 @@ func doSSZGETRequest(template, requestPath string, beaconNodeIdx int, bnType ... if err != nil { return nil, errors.Wrap(err, "failed to build request") } - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) resp, err := http.DefaultClient.Do(req) if err != nil { return nil, errors.Wrap(err, "request failed") @@ -132,7 +132,7 @@ func doJSONPOSTRequest(template, requestPath string, beaconNodeIdx int, postObj, } httpResp, err := http.Post( basePath+requestPath, - "application/json", + api.JsonMediaType, bytes.NewBuffer(b), ) if err != nil { @@ -141,7 +141,7 @@ func doJSONPOSTRequest(template, requestPath string, beaconNodeIdx int, postObj, var body interface{} if httpResp.StatusCode != http.StatusOK { - if httpResp.Header.Get("Content-Type") == api.JsonMediaType { + if httpResp.Header.Get(api.ContentTypeHeader) == api.JsonMediaType { if err = json.NewDecoder(httpResp.Body).Decode(&body); err != nil { return errors.Wrap(err, "failed to decode response body") } @@ -186,8 +186,8 @@ func doSSZPOSTRequest(template, requestPath string, beaconNodeIdx int, postObj i if err != nil { return nil, errors.Wrap(err, "failed to build request") } - req.Header.Set("Content-Type", "application/json") - req.Header.Set("Accept", "application/octet-stream") + req.Header.Set(api.ContentTypeHeader, api.JsonMediaType) + req.Header.Set(api.AcceptHeader, api.OctetStreamMediaType) resp, err := http.DefaultClient.Do(req) if err != nil { return nil, errors.Wrap(err, "request failed") diff --git a/testing/middleware/builder/BUILD.bazel b/testing/middleware/builder/BUILD.bazel index 0c34a097b910..c4c6103e2cc7 100644 --- a/testing/middleware/builder/BUILD.bazel +++ b/testing/middleware/builder/BUILD.bazel @@ -9,6 +9,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/testing/middleware/builder", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "//api/client/builder:go_default_library", "//api/server/structs:go_default_library", "//beacon-chain/core/signing:go_default_library", diff --git a/testing/middleware/builder/builder.go b/testing/middleware/builder/builder.go index 048baf54c1e2..cf1a41e0c5ee 100644 --- a/testing/middleware/builder/builder.go +++ b/testing/middleware/builder/builder.go @@ -14,6 +14,7 @@ import ( "sync" "time" + "github.com/OffchainLabs/prysm/v6/api" builderAPI "github.com/OffchainLabs/prysm/v6/api/client/builder" "github.com/OffchainLabs/prysm/v6/api/server/structs" "github.com/OffchainLabs/prysm/v6/beacon-chain/core/signing" @@ -884,9 +885,9 @@ func (p *Builder) sendHttpRequest(req *http.Request, requestBytes []byte) (*http proxyReq.Body = io.NopCloser(bytes.NewBuffer(requestBytes)) // Required proxy headers for forwarding JSON-RPC requests to the execution client. - proxyReq.Header.Set("Host", req.Host) + proxyReq.Header.Set(api.HostHeader, req.Host) proxyReq.Header.Set("X-Forwarded-For", req.RemoteAddr) - proxyReq.Header.Set("Content-Type", "application/json") + proxyReq.Header.Set(api.ContentTypeHeader, api.JsonMediaType) client := &http.Client{} if p.cfg.secret != "" { diff --git a/testing/middleware/engine-api-proxy/BUILD.bazel b/testing/middleware/engine-api-proxy/BUILD.bazel index fdd48d6ba844..03cbb2e36601 100644 --- a/testing/middleware/engine-api-proxy/BUILD.bazel +++ b/testing/middleware/engine-api-proxy/BUILD.bazel @@ -9,6 +9,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/testing/middleware/engine-api-proxy", visibility = ["//visibility:public"], deps = [ + "//api:go_default_library", "//network:go_default_library", "@com_github_pkg_errors//:go_default_library", "@com_github_sirupsen_logrus//:go_default_library", @@ -20,6 +21,7 @@ go_test( srcs = ["proxy_test.go"], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//crypto/rand:go_default_library", "//proto/engine/v1:go_default_library", "//testing/require:go_default_library", diff --git a/testing/middleware/engine-api-proxy/proxy.go b/testing/middleware/engine-api-proxy/proxy.go index 01b5fe2b3d4d..96d479b8c70d 100644 --- a/testing/middleware/engine-api-proxy/proxy.go +++ b/testing/middleware/engine-api-proxy/proxy.go @@ -15,6 +15,7 @@ import ( "sync" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/network" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -242,9 +243,9 @@ func (p *Proxy) sendHttpRequest(req *http.Request, requestBytes []byte) (*http.R proxyReq.Body = io.NopCloser(bytes.NewBuffer(requestBytes)) // Required proxy headers for forwarding JSON-RPC requests to the execution client. - proxyReq.Header.Set("Host", req.Host) + proxyReq.Header.Set(api.HostHeader, req.Host) proxyReq.Header.Set("X-Forwarded-For", req.RemoteAddr) - proxyReq.Header.Set("Content-Type", "application/json") + proxyReq.Header.Set(api.ContentTypeHeader, api.JsonMediaType) client := &http.Client{} if p.cfg.secret != "" { diff --git a/testing/middleware/engine-api-proxy/proxy_test.go b/testing/middleware/engine-api-proxy/proxy_test.go index f59bae092882..fdc658cf57bd 100644 --- a/testing/middleware/engine-api-proxy/proxy_test.go +++ b/testing/middleware/engine-api-proxy/proxy_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/crypto/rand" pb "github.com/OffchainLabs/prysm/v6/proto/engine/v1" "github.com/OffchainLabs/prysm/v6/testing/require" @@ -297,7 +298,7 @@ func Test_isEngineAPICall(t *testing.T) { func destinationServerSetup(t *testing.T, response interface{}) *httptest.Server { return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) defer func() { require.NoError(t, r.Body.Close()) }() diff --git a/validator/client/beacon-api/get_beacon_block.go b/validator/client/beacon-api/get_beacon_block.go index ef17b363d820..f4b5b85cb711 100644 --- a/validator/client/beacon-api/get_beacon_block.go +++ b/validator/client/beacon-api/get_beacon_block.go @@ -30,12 +30,12 @@ func (c *beaconApiValidatorClient) beaconBlock(ctx context.Context, slot primiti if err != nil { return nil, err } - if strings.Contains(header.Get("Content-Type"), api.OctetStreamMediaType) { - ver, err := version.FromString(header.Get(api.VersionHeader)) + if strings.Contains(header.Get(api.ContentTypeHeader), api.OctetStreamMediaType) { + ver, err := version.FromString(header.Get(api.EthConsensusVersionHeader)) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("unsupported header version %s", header.Get(api.VersionHeader))) + return nil, errors.Wrap(err, fmt.Sprintf("unsupported header version %s", header.Get(api.EthConsensusVersionHeader))) } - isBlindedRaw := header.Get(api.ExecutionPayloadBlindedHeader) + isBlindedRaw := header.Get(api.EthExecutionPayloadBlindedHeader) isBlinded, err := strconv.ParseBool(isBlindedRaw) if err != nil { return nil, err diff --git a/validator/client/beacon-api/get_beacon_block_test.go b/validator/client/beacon-api/get_beacon_block_test.go index 9ce5fc2401c3..d2dc622a91d7 100644 --- a/validator/client/beacon-api/get_beacon_block_test.go +++ b/validator/client/beacon-api/get_beacon_block_test.go @@ -155,7 +155,7 @@ func TestGetBeaconBlock_Error(t *testing.T) { gomock.Any(), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -191,7 +191,7 @@ func TestGetBeaconBlock_Phase0Valid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -231,9 +231,9 @@ func TestGetBeaconBlock_SSZ_BellatrixValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"bellatrix"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"bellatrix"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -273,9 +273,9 @@ func TestGetBeaconBlock_SSZ_BlindedBellatrixValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"bellatrix"}, - api.ExecutionPayloadBlindedHeader: []string{"true"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"bellatrix"}, + api.EthExecutionPayloadBlindedHeader: []string{"true"}, }, nil, ).Times(1) @@ -315,9 +315,9 @@ func TestGetBeaconBlock_SSZ_CapellaValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"capella"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"capella"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -357,9 +357,9 @@ func TestGetBeaconBlock_SSZ_BlindedCapellaValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"capella"}, - api.ExecutionPayloadBlindedHeader: []string{"true"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"capella"}, + api.EthExecutionPayloadBlindedHeader: []string{"true"}, }, nil, ).Times(1) @@ -399,9 +399,9 @@ func TestGetBeaconBlock_SSZ_DenebValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"deneb"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"deneb"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -441,9 +441,9 @@ func TestGetBeaconBlock_SSZ_BlindedDenebValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"deneb"}, - api.ExecutionPayloadBlindedHeader: []string{"true"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"deneb"}, + api.EthExecutionPayloadBlindedHeader: []string{"true"}, }, nil, ).Times(1) @@ -483,9 +483,9 @@ func TestGetBeaconBlock_SSZ_ElectraValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"electra"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"electra"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -525,9 +525,9 @@ func TestGetBeaconBlock_SSZ_BlindedElectraValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"electra"}, - api.ExecutionPayloadBlindedHeader: []string{"true"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"electra"}, + api.EthExecutionPayloadBlindedHeader: []string{"true"}, }, nil, ).Times(1) @@ -563,9 +563,9 @@ func TestGetBeaconBlock_SSZ_UnsupportedVersion(t *testing.T) { ).Return( []byte{}, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"unsupported"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"unsupported"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -596,9 +596,9 @@ func TestGetBeaconBlock_SSZ_InvalidBlindedHeader(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"bellatrix"}, - api.ExecutionPayloadBlindedHeader: []string{"invalid"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"bellatrix"}, + api.EthExecutionPayloadBlindedHeader: []string{"invalid"}, }, nil, ).Times(1) @@ -629,9 +629,9 @@ func TestGetBeaconBlock_SSZ_InvalidVersionHeader(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"invalid"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"invalid"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -687,9 +687,9 @@ func TestGetBeaconBlock_SSZ_Phase0Valid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"phase0"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"phase0"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -729,9 +729,9 @@ func TestGetBeaconBlock_SSZ_AltairValid(t *testing.T) { ).Return( bytes, http.Header{ - "Content-Type": []string{api.OctetStreamMediaType}, - api.VersionHeader: []string{"altair"}, - api.ExecutionPayloadBlindedHeader: []string{"false"}, + api.ContentTypeHeader: []string{api.OctetStreamMediaType}, + api.EthConsensusVersionHeader: []string{"altair"}, + api.EthExecutionPayloadBlindedHeader: []string{"false"}, }, nil, ).Times(1) @@ -776,7 +776,7 @@ func TestGetBeaconBlock_AltairValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -820,7 +820,7 @@ func TestGetBeaconBlock_BellatrixValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -865,7 +865,7 @@ func TestGetBeaconBlock_BlindedBellatrixValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -910,7 +910,7 @@ func TestGetBeaconBlock_CapellaValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -955,7 +955,7 @@ func TestGetBeaconBlock_BlindedCapellaValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -1000,7 +1000,7 @@ func TestGetBeaconBlock_DenebValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -1045,7 +1045,7 @@ func TestGetBeaconBlock_BlindedDenebValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -1090,7 +1090,7 @@ func TestGetBeaconBlock_ElectraValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) @@ -1135,7 +1135,7 @@ func TestGetBeaconBlock_BlindedElectraValid(t *testing.T) { fmt.Sprintf("/eth/v3/validator/blocks/%d?graffiti=%s&randao_reveal=%s", slot, hexutil.Encode(graffiti), hexutil.Encode(randaoReveal)), ).Return( b, - http.Header{"Content-Type": []string{"application/json"}}, + http.Header{api.ContentTypeHeader: []string{api.JsonMediaType}}, nil, ).Times(1) diff --git a/validator/client/beacon-api/propose_attestation.go b/validator/client/beacon-api/propose_attestation.go index 6127603db8b5..296564c6ff9d 100644 --- a/validator/client/beacon-api/propose_attestation.go +++ b/validator/client/beacon-api/propose_attestation.go @@ -6,6 +6,7 @@ import ( "encoding/json" "net/http" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/beacon-chain/core/helpers" "github.com/OffchainLabs/prysm/v6/network/httputil" ethpb "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1" @@ -22,7 +23,7 @@ func (c *beaconApiValidatorClient) proposeAttestation(ctx context.Context, attes return nil, err } - headers := map[string]string{"Eth-Consensus-Version": version.String(attestation.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(attestation.Version())} err = c.jsonRestHandler.Post( ctx, "/eth/v2/beacon/pool/attestations", @@ -67,7 +68,7 @@ func (c *beaconApiValidatorClient) proposeAttestationElectra(ctx context.Context if err != nil { return nil, err } - headers := map[string]string{"Eth-Consensus-Version": version.String(attestation.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(attestation.Version())} if err = c.jsonRestHandler.Post( ctx, "/eth/v2/beacon/pool/attestations", diff --git a/validator/client/beacon-api/propose_attestation_test.go b/validator/client/beacon-api/propose_attestation_test.go index 4b2a5c86e5fc..253ab3e34f0d 100644 --- a/validator/client/beacon-api/propose_attestation_test.go +++ b/validator/client/beacon-api/propose_attestation_test.go @@ -7,6 +7,7 @@ import ( "net/http" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/beacon-chain/core/helpers" "github.com/OffchainLabs/prysm/v6/network/httputil" ethpb "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1" @@ -117,7 +118,7 @@ func TestProposeAttestation(t *testing.T) { ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(test.attestation.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(test.attestation.Version())} jsonRestHandler.EXPECT().Post( gomock.Any(), "/eth/v2/beacon/pool/attestations", @@ -177,7 +178,7 @@ func TestProposeAttestationFallBack(t *testing.T) { } ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(attestation.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(attestation.Version())} jsonRestHandler.EXPECT().Post( gomock.Any(), "/eth/v2/beacon/pool/attestations", @@ -304,7 +305,7 @@ func TestProposeAttestationElectra(t *testing.T) { } ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(test.attestation.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(test.attestation.Version())} jsonRestHandler.EXPECT().Post( gomock.Any(), "/eth/v2/beacon/pool/attestations", diff --git a/validator/client/beacon-api/propose_beacon_block_test.go b/validator/client/beacon-api/propose_beacon_block_test.go index 8383efe058dc..cb9dfc6dcefb 100644 --- a/validator/client/beacon-api/propose_beacon_block_test.go +++ b/validator/client/beacon-api/propose_beacon_block_test.go @@ -7,6 +7,7 @@ import ( "net/http" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" rpctesting "github.com/OffchainLabs/prysm/v6/beacon-chain/rpc/eth/shared/testing" "github.com/OffchainLabs/prysm/v6/network/httputil" @@ -107,7 +108,7 @@ func TestProposeBeaconBlock_SSZ_Error(t *testing.T) { // Expect PostSSZ to be called first with SSZ data headers := map[string]string{ - "Eth-Consensus-Version": testCase.consensusVersion, + api.EthConsensusVersionHeader: testCase.consensusVersion, } jsonRestHandler.EXPECT().PostSSZ( gomock.Any(), @@ -169,7 +170,7 @@ func TestProposeBeaconBlock_SSZSuccess_NoFallback(t *testing.T) { // Expect PostSSZ to be called and succeed headers := map[string]string{ - "Eth-Consensus-Version": testCase.consensusVersion, + api.EthConsensusVersionHeader: testCase.consensusVersion, } jsonRestHandler.EXPECT().PostSSZ( gomock.Any(), @@ -647,7 +648,7 @@ func TestProposeBeaconBlock_SSZFails_Non406_NoFallback(t *testing.T) { // Expect PostSSZ to be called first and fail with non-406 error sszHeaders := map[string]string{ - "Eth-Consensus-Version": testCase.consensusVersion, + api.EthConsensusVersionHeader: testCase.consensusVersion, } jsonRestHandler.EXPECT().PostSSZ( gomock.Any(), diff --git a/validator/client/beacon-api/rest_handler_client.go b/validator/client/beacon-api/rest_handler_client.go index ab8378d875a3..5a8b99a39503 100644 --- a/validator/client/beacon-api/rest_handler_client.go +++ b/validator/client/beacon-api/rest_handler_client.go @@ -53,7 +53,7 @@ func NewBeaconApiRestHandler(client http.Client, host string) RestHandler { func (c *BeaconApiRestHandler) appendAcceptOverride() { if accept := os.Getenv(params.EnvNameOverrideAccept); accept != "" { c.reqOverrides = append(c.reqOverrides, func(req *http.Request) { - req.Header.Set("Accept", accept) + req.Header.Set(api.AcceptHeader, accept) }) } } @@ -76,7 +76,7 @@ func (c *BeaconApiRestHandler) Get(ctx context.Context, endpoint string, resp in if err != nil { return errors.Wrapf(err, "failed to create request for endpoint %s", url) } - req.Header.Set("User-Agent", version.BuildData()) + req.Header.Set(api.UserAgentHeader, version.BuildData()) httpResp, err := c.client.Do(req) if err != nil { return errors.Wrapf(err, "failed to perform request for endpoint %s", url) @@ -100,13 +100,13 @@ func (c *BeaconApiRestHandler) GetSSZ(ctx context.Context, endpoint string) ([]b primaryAcceptType := fmt.Sprintf("%s;q=%s", api.OctetStreamMediaType, "0.95") secondaryAcceptType := fmt.Sprintf("%s;q=%s", api.JsonMediaType, "0.9") acceptHeaderString := fmt.Sprintf("%s,%s", primaryAcceptType, secondaryAcceptType) - req.Header.Set("Accept", acceptHeaderString) + req.Header.Set(api.AcceptHeader, acceptHeaderString) for _, o := range c.reqOverrides { o(req) } - req.Header.Set("User-Agent", version.BuildData()) + req.Header.Set(api.UserAgentHeader, version.BuildData()) httpResp, err := c.client.Do(req) if err != nil { return nil, nil, errors.Wrapf(err, "failed to perform request for endpoint %s", url) @@ -116,8 +116,8 @@ func (c *BeaconApiRestHandler) GetSSZ(ctx context.Context, endpoint string) ([]b return } }() - accept := req.Header.Get("Accept") - contentType := httpResp.Header.Get("Content-Type") + accept := req.Header.Get(api.AcceptHeader) + contentType := httpResp.Header.Get(api.ContentTypeHeader) body, err := io.ReadAll(httpResp.Body) if err != nil { return nil, nil, errors.Wrapf(err, "failed to read response body for %s", httpResp.Request.URL) @@ -125,8 +125,8 @@ func (c *BeaconApiRestHandler) GetSSZ(ctx context.Context, endpoint string) ([]b if !apiutil.PrimaryAcceptMatches(accept, contentType) { log.WithFields(logrus.Fields{ - "Accept": accept, - "Content-Type": contentType, + api.AcceptHeader: accept, + api.ContentTypeHeader: contentType, }).Debug("Server responded with non primary accept type") } @@ -165,8 +165,8 @@ func (c *BeaconApiRestHandler) Post( for headerKey, headerValue := range headers { req.Header.Set(headerKey, headerValue) } - req.Header.Set("Content-Type", api.JsonMediaType) - req.Header.Set("User-Agent", version.BuildData()) + req.Header.Set(api.ContentTypeHeader, api.JsonMediaType) + req.Header.Set(api.UserAgentHeader, version.BuildData()) httpResp, err := c.client.Do(req) if err != nil { return errors.Wrapf(err, "failed to perform request for endpoint %s", url) @@ -200,7 +200,7 @@ func (c *BeaconApiRestHandler) PostSSZ( primaryAcceptType := fmt.Sprintf("%s;q=%s", api.OctetStreamMediaType, "0.95") secondaryAcceptType := fmt.Sprintf("%s;q=%s", api.JsonMediaType, "0.9") acceptHeaderString := fmt.Sprintf("%s,%s", primaryAcceptType, secondaryAcceptType) - req.Header.Set("Accept", acceptHeaderString) + req.Header.Set(api.AcceptHeader, acceptHeaderString) // User-supplied headers for headerKey, headerValue := range headers { @@ -210,8 +210,8 @@ func (c *BeaconApiRestHandler) PostSSZ( for _, o := range c.reqOverrides { o(req) } - req.Header.Set("Content-Type", api.OctetStreamMediaType) - req.Header.Set("User-Agent", version.BuildData()) + req.Header.Set(api.ContentTypeHeader, api.OctetStreamMediaType) + req.Header.Set(api.UserAgentHeader, version.BuildData()) httpResp, err := c.client.Do(req) if err != nil { return nil, nil, errors.Wrapf(err, "failed to perform request for endpoint %s", url) @@ -222,8 +222,8 @@ func (c *BeaconApiRestHandler) PostSSZ( } }() - accept := req.Header.Get("Accept") - contentType := httpResp.Header.Get("Content-Type") + accept := req.Header.Get(api.AcceptHeader) + contentType := httpResp.Header.Get(api.ContentTypeHeader) body, err := io.ReadAll(httpResp.Body) if err != nil { return nil, nil, errors.Wrapf(err, "failed to read response body for %s", httpResp.Request.URL) @@ -231,8 +231,8 @@ func (c *BeaconApiRestHandler) PostSSZ( if !apiutil.PrimaryAcceptMatches(accept, contentType) { log.WithFields(logrus.Fields{ - "Accept": accept, - "Content-Type": contentType, + api.AcceptHeader: accept, + api.ContentTypeHeader: contentType, }).Debug("Server responded with non primary accept type") } @@ -255,7 +255,7 @@ func decodeResp(httpResp *http.Response, resp interface{}) error { return errors.Wrapf(err, "failed to read response body for %s", httpResp.Request.URL) } - if !strings.Contains(httpResp.Header.Get("Content-Type"), api.JsonMediaType) { + if !strings.Contains(httpResp.Header.Get(api.ContentTypeHeader), api.JsonMediaType) { // 2XX codes are a success if strings.HasPrefix(httpResp.Status, "2") { return nil diff --git a/validator/client/beacon-api/rest_handler_client_test.go b/validator/client/beacon-api/rest_handler_client_test.go index af3d928440ca..3399bbfdb3ab 100644 --- a/validator/client/beacon-api/rest_handler_client_test.go +++ b/validator/client/beacon-api/rest_handler_client_test.go @@ -37,8 +37,8 @@ func TestGet(t *testing.T) { mux.HandleFunc(endpoint, func(w http.ResponseWriter, r *http.Request) { marshalledJson, err := json.Marshal(genesisJson) require.NoError(t, err) - assert.Equal(t, version.BuildData(), r.Header.Get("User-Agent")) - w.Header().Set("Content-Type", api.JsonMediaType) + assert.Equal(t, version.BuildData(), r.Header.Get(api.UserAgentHeader)) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) _, err = w.Write(marshalledJson) require.NoError(t, err) }) @@ -70,9 +70,9 @@ func TestGetSSZ(t *testing.T) { mux := http.NewServeMux() mux.HandleFunc(endpoint, func(w http.ResponseWriter, r *http.Request) { - assert.StringContains(t, api.OctetStreamMediaType, r.Header.Get("Accept")) - assert.Equal(t, version.BuildData(), r.Header.Get("User-Agent")) - w.Header().Set("Content-Type", api.OctetStreamMediaType) + assert.StringContains(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) + assert.Equal(t, version.BuildData(), r.Header.Get(api.UserAgentHeader)) + w.Header().Set(api.ContentTypeHeader, api.OctetStreamMediaType) _, err := w.Write(expectedBody) require.NoError(t, err) }) @@ -87,7 +87,7 @@ func TestGetSSZ(t *testing.T) { body, header, err := jsonRestHandler.GetSSZ(ctx, endpoint) require.NoError(t, err) assert.DeepEqual(t, expectedBody, body) - require.StringContains(t, api.OctetStreamMediaType, header.Get("Content-Type")) + require.StringContains(t, api.OctetStreamMediaType, header.Get(api.ContentTypeHeader)) }) t.Run("Json Content-Type response", func(t *testing.T) { @@ -96,8 +96,8 @@ func TestGetSSZ(t *testing.T) { logHook := test.NewGlobal() mux := http.NewServeMux() mux.HandleFunc(endpoint, func(w http.ResponseWriter, r *http.Request) { - assert.StringContains(t, api.OctetStreamMediaType, r.Header.Get("Accept")) - w.Header().Set("Content-Type", api.JsonMediaType) + assert.StringContains(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) marshalledJson, err := json.Marshal(genesisJson) require.NoError(t, err) @@ -116,7 +116,7 @@ func TestGetSSZ(t *testing.T) { body, header, err := jsonRestHandler.GetSSZ(ctx, endpoint) require.NoError(t, err) assert.LogsContain(t, logHook, "Server responded with non primary accept type") - require.Equal(t, api.JsonMediaType, header.Get("Content-Type")) + require.Equal(t, api.JsonMediaType, header.Get(api.ContentTypeHeader)) resp := &structs.GetGenesisResponse{} require.NoError(t, json.Unmarshal(body, resp)) require.Equal(t, "123", resp.Data.GenesisTime) @@ -128,8 +128,8 @@ func TestGetSSZ(t *testing.T) { logHook := test.NewGlobal() mux := http.NewServeMux() mux.HandleFunc(endpoint, func(w http.ResponseWriter, r *http.Request) { - assert.StringContains(t, api.OctetStreamMediaType, r.Header.Get("Accept")) - w.Header().Set("Content-Type", "text/plain") // Invalid content type + assert.StringContains(t, api.OctetStreamMediaType, r.Header.Get(api.AcceptHeader)) + w.Header().Set(api.ContentTypeHeader, api.PlainMediaType) // Invalid content type _, err := w.Write([]byte("some text")) require.NoError(t, err) }) @@ -155,8 +155,8 @@ func TestAcceptOverrideSSZ(t *testing.T) { }() require.NoError(t, os.Setenv(params.EnvNameOverrideAccept, name)) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, name, r.Header.Get("Accept")) - w.WriteHeader(200) + require.Equal(t, name, r.Header.Get(api.AcceptHeader)) + w.WriteHeader(http.StatusOK) _, err := w.Write([]byte("ok")) require.NoError(t, err) })) @@ -184,8 +184,8 @@ func TestPost(t *testing.T) { mux.HandleFunc(endpoint, func(w http.ResponseWriter, r *http.Request) { // Make sure the request headers have been set assert.Equal(t, "bar", r.Header.Get("foo")) - assert.Equal(t, version.BuildData(), r.Header.Get("User-Agent")) - assert.Equal(t, api.JsonMediaType, r.Header.Get("Content-Type")) + assert.Equal(t, version.BuildData(), r.Header.Get(api.UserAgentHeader)) + assert.Equal(t, api.JsonMediaType, r.Header.Get(api.ContentTypeHeader)) // Make sure the data matches receivedBytes := make([]byte, len(dataBytes)) @@ -197,7 +197,7 @@ func TestPost(t *testing.T) { marshalledJson, err := json.Marshal(genesisJson) require.NoError(t, err) - w.Header().Set("Content-Type", api.JsonMediaType) + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) _, err = w.Write(marshalledJson) require.NoError(t, err) }) @@ -223,7 +223,7 @@ func Test_decodeResp(t *testing.T) { Status: "200", StatusCode: http.StatusOK, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {"application/json; charset=utf-8"}}, + Header: map[string][]string{api.ContentTypeHeader: {"application/json; charset=utf-8"}}, } require.NoError(t, decodeResp(r, nil)) }) @@ -233,7 +233,7 @@ func Test_decodeResp(t *testing.T) { Status: "200", StatusCode: http.StatusOK, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.OctetStreamMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.OctetStreamMediaType}}, } require.NoError(t, decodeResp(r, nil)) }) @@ -243,7 +243,7 @@ func Test_decodeResp(t *testing.T) { Status: "204", StatusCode: http.StatusNoContent, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.OctetStreamMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.OctetStreamMediaType}}, } require.NoError(t, decodeResp(r, nil)) }) @@ -255,7 +255,7 @@ func Test_decodeResp(t *testing.T) { Status: "500", StatusCode: http.StatusInternalServerError, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.OctetStreamMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.OctetStreamMediaType}}, } err = decodeResp(r, nil) errJson := &httputil.DefaultJsonError{} @@ -272,7 +272,7 @@ func Test_decodeResp(t *testing.T) { Status: "200", StatusCode: http.StatusOK, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.JsonMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.JsonMediaType}}, } resp := &j{} require.NoError(t, decodeResp(r, resp)) @@ -284,7 +284,7 @@ func Test_decodeResp(t *testing.T) { Status: "200", StatusCode: http.StatusOK, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.JsonMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.JsonMediaType}}, } require.NoError(t, decodeResp(r, nil)) }) @@ -294,7 +294,7 @@ func Test_decodeResp(t *testing.T) { Status: "204", StatusCode: http.StatusNoContent, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.JsonMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.JsonMediaType}}, } require.NoError(t, decodeResp(r, nil)) }) @@ -307,7 +307,7 @@ func Test_decodeResp(t *testing.T) { Status: "500", StatusCode: http.StatusInternalServerError, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.JsonMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.JsonMediaType}}, } err = decodeResp(r, nil) errJson := &httputil.DefaultJsonError{} @@ -323,7 +323,7 @@ func Test_decodeResp(t *testing.T) { Status: "200", StatusCode: http.StatusOK, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.JsonMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.JsonMediaType}}, Request: &http.Request{}, } resp := &j{} @@ -338,7 +338,7 @@ func Test_decodeResp(t *testing.T) { Status: "500", StatusCode: http.StatusInternalServerError, Body: io.NopCloser(&body), - Header: map[string][]string{"Content-Type": {api.JsonMediaType}}, + Header: map[string][]string{api.ContentTypeHeader: {api.JsonMediaType}}, Request: &http.Request{}, } err = decodeResp(r, nil) diff --git a/validator/client/beacon-api/submit_signed_aggregate_proof.go b/validator/client/beacon-api/submit_signed_aggregate_proof.go index a31086deed89..7638ed32717c 100644 --- a/validator/client/beacon-api/submit_signed_aggregate_proof.go +++ b/validator/client/beacon-api/submit_signed_aggregate_proof.go @@ -6,6 +6,7 @@ import ( "encoding/json" "net/http" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" "github.com/OffchainLabs/prysm/v6/network/httputil" ethpb "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1" @@ -18,7 +19,7 @@ func (c *beaconApiValidatorClient) submitSignedAggregateSelectionProof(ctx conte if err != nil { return nil, errors.Wrap(err, "failed to marshal SignedAggregateAttestationAndProof") } - headers := map[string]string{"Eth-Consensus-Version": version.String(in.SignedAggregateAndProof.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(in.SignedAggregateAndProof.Version())} err = c.jsonRestHandler.Post(ctx, "/eth/v2/validator/aggregate_and_proofs", headers, bytes.NewBuffer(body), nil) errJson := &httputil.DefaultJsonError{} if err != nil { @@ -54,7 +55,7 @@ func (c *beaconApiValidatorClient) submitSignedAggregateSelectionProofElectra(ct if err != nil { return nil, errors.Wrap(err, "failed to marshal SignedAggregateAttestationAndProofElectra") } - headers := map[string]string{"Eth-Consensus-Version": version.String(in.SignedAggregateAndProof.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(in.SignedAggregateAndProof.Version())} if err = c.jsonRestHandler.Post(ctx, "/eth/v2/validator/aggregate_and_proofs", headers, bytes.NewBuffer(body), nil); err != nil { return nil, err } diff --git a/validator/client/beacon-api/submit_signed_aggregate_proof_test.go b/validator/client/beacon-api/submit_signed_aggregate_proof_test.go index d41b9a89ab39..316f4c645de9 100644 --- a/validator/client/beacon-api/submit_signed_aggregate_proof_test.go +++ b/validator/client/beacon-api/submit_signed_aggregate_proof_test.go @@ -6,6 +6,7 @@ import ( "net/http" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/api/server/structs" "github.com/OffchainLabs/prysm/v6/network/httputil" ethpb "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1" @@ -27,7 +28,7 @@ func TestSubmitSignedAggregateSelectionProof_Valid(t *testing.T) { require.NoError(t, err) ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(signedAggregateAndProof.Message.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(signedAggregateAndProof.Message.Version())} jsonRestHandler := mock.NewMockJsonRestHandler(ctrl) jsonRestHandler.EXPECT().Post( gomock.Any(), @@ -59,7 +60,7 @@ func TestSubmitSignedAggregateSelectionProof_BadRequest(t *testing.T) { require.NoError(t, err) ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(signedAggregateAndProof.Message.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(signedAggregateAndProof.Message.Version())} jsonRestHandler := mock.NewMockJsonRestHandler(ctrl) jsonRestHandler.EXPECT().Post( gomock.Any(), @@ -89,7 +90,7 @@ func TestSubmitSignedAggregateSelectionProof_Fallback(t *testing.T) { ctx := t.Context() jsonRestHandler := mock.NewMockJsonRestHandler(ctrl) - headers := map[string]string{"Eth-Consensus-Version": version.String(signedAggregateAndProof.Message.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(signedAggregateAndProof.Message.Version())} jsonRestHandler.EXPECT().Post( gomock.Any(), "/eth/v2/validator/aggregate_and_proofs", @@ -131,7 +132,7 @@ func TestSubmitSignedAggregateSelectionProofElectra_Valid(t *testing.T) { require.NoError(t, err) ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(signedAggregateAndProofElectra.Message.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(signedAggregateAndProofElectra.Message.Version())} jsonRestHandler := mock.NewMockJsonRestHandler(ctrl) jsonRestHandler.EXPECT().Post( gomock.Any(), @@ -163,7 +164,7 @@ func TestSubmitSignedAggregateSelectionProofElectra_BadRequest(t *testing.T) { require.NoError(t, err) ctx := t.Context() - headers := map[string]string{"Eth-Consensus-Version": version.String(signedAggregateAndProofElectra.Message.Version())} + headers := map[string]string{api.EthConsensusVersionHeader: version.String(signedAggregateAndProofElectra.Message.Version())} jsonRestHandler := mock.NewMockJsonRestHandler(ctrl) jsonRestHandler.EXPECT().Post( gomock.Any(), diff --git a/validator/keymanager/remote-web3signer/BUILD.bazel b/validator/keymanager/remote-web3signer/BUILD.bazel index 46119f746e5e..8785c2555562 100644 --- a/validator/keymanager/remote-web3signer/BUILD.bazel +++ b/validator/keymanager/remote-web3signer/BUILD.bazel @@ -41,6 +41,7 @@ go_test( srcs = ["keymanager_test.go"], embed = [":go_default_library"], deps = [ + "//api:go_default_library", "//crypto/bls:go_default_library", "//encoding/bytesutil:go_default_library", "//io/file:go_default_library", diff --git a/validator/keymanager/remote-web3signer/internal/BUILD.bazel b/validator/keymanager/remote-web3signer/internal/BUILD.bazel index dddb6c925365..6262e9dd23c2 100644 --- a/validator/keymanager/remote-web3signer/internal/BUILD.bazel +++ b/validator/keymanager/remote-web3signer/internal/BUILD.bazel @@ -10,6 +10,7 @@ go_library( importpath = "github.com/OffchainLabs/prysm/v6/validator/keymanager/remote-web3signer/internal", visibility = ["//validator/keymanager/remote-web3signer:__subpackages__"], deps = [ + "//api:go_default_library", "//config/fieldparams:go_default_library", "//crypto/bls:go_default_library", "//monitoring/tracing:go_default_library", @@ -28,6 +29,7 @@ go_test( srcs = ["client_test.go"], deps = [ ":go_default_library", + "//api:go_default_library", "//testing/require:go_default_library", "@com_github_ethereum_go_ethereum//common/hexutil:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", diff --git a/validator/keymanager/remote-web3signer/internal/client.go b/validator/keymanager/remote-web3signer/internal/client.go index f4e4151529a2..8478af35a62c 100644 --- a/validator/keymanager/remote-web3signer/internal/client.go +++ b/validator/keymanager/remote-web3signer/internal/client.go @@ -13,6 +13,7 @@ import ( "strings" "time" + "github.com/OffchainLabs/prysm/v6/api" fieldparams "github.com/OffchainLabs/prysm/v6/config/fieldparams" "github.com/OffchainLabs/prysm/v6/crypto/bls" "github.com/OffchainLabs/prysm/v6/monitoring/tracing" @@ -74,8 +75,8 @@ func (client *ApiClient) Sign(ctx context.Context, pubKey string, request SignRe if resp.StatusCode == http.StatusPreconditionFailed { return nil, fmt.Errorf("signing operation failed due to slashing protection rules, Signing Request URL: %v, Status: %v", client.BaseURL.String()+requestPath, resp.StatusCode) } - contentType := resp.Header.Get("Content-Type") - if strings.HasPrefix(contentType, "application/json") { + contentType := resp.Header.Get(api.ContentTypeHeader) + if strings.HasPrefix(contentType, api.JsonMediaType) { var sigResp SignatureResponse if err := unmarshalResponse(resp.Body, &sigResp); err != nil { return nil, err @@ -148,7 +149,7 @@ func (client *ApiClient) doRequest(ctx context.Context, httpMethod, fullPath str if err != nil { return nil, errors.Wrap(err, "invalid format, failed to create new Post Request Object") } - req.Header.Set("Content-Type", "application/json") + req.Header.Set(api.ContentTypeHeader, api.JsonMediaType) start := time.Now() resp, err := client.RestClient.Do(req) diff --git a/validator/keymanager/remote-web3signer/internal/client_test.go b/validator/keymanager/remote-web3signer/internal/client_test.go index 475b382084e2..1fd5ecaafda8 100644 --- a/validator/keymanager/remote-web3signer/internal/client_test.go +++ b/validator/keymanager/remote-web3signer/internal/client_test.go @@ -9,6 +9,7 @@ import ( "net/url" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/testing/require" "github.com/OffchainLabs/prysm/v6/validator/keymanager/remote-web3signer/internal" "github.com/ethereum/go-ethereum/common/hexutil" @@ -61,7 +62,7 @@ func TestClient_Sign_HappyPath_Jsontype(t *testing.T) { require.NoError(t, err) // create a new reader with that JSON header := http.Header{} - header.Set("Content-Type", "application/json; charset=UTF-8") + header.Set(api.ContentTypeHeader, "application/json; charset=UTF-8") r := io.NopCloser(bytes.NewReader(jsonBytes)) mock := &mockTransport{mockResponse: &http.Response{ StatusCode: 200, diff --git a/validator/keymanager/remote-web3signer/keymanager_test.go b/validator/keymanager/remote-web3signer/keymanager_test.go index fc6fdfd04dcb..892c709ce97b 100644 --- a/validator/keymanager/remote-web3signer/keymanager_test.go +++ b/validator/keymanager/remote-web3signer/keymanager_test.go @@ -14,6 +14,7 @@ import ( "testing" "time" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/crypto/bls" "github.com/OffchainLabs/prysm/v6/encoding/bytesutil" "github.com/OffchainLabs/prysm/v6/io/file" @@ -47,7 +48,7 @@ func (mc *MockClient) GetPublicKeys(_ context.Context, _ string) ([]string, erro func TestNewKeymanager(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) err := json.NewEncoder(w).Encode([]string{"0xa2b5aaad9c6efefe7bb9b1243a043404f3362937cfb6b31833929833173f476630ea2cfeb0d9ddf15f97ca8685948820"}) require.NoError(t, err) })) @@ -517,7 +518,7 @@ func TestKeymanager_FetchValidatingPublicKeys_HappyPath_WithExternalURL(t *testi require.NoError(t, err) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) err = json.NewEncoder(w).Encode([]string{"0xa2b5aaad9c6efefe7bb9b1243a043404f3362937cfb6b31833929833173f476630ea2cfeb0d9ddf15f97ca8685948820"}) require.NoError(t, err) })) @@ -539,7 +540,7 @@ func TestKeymanager_FetchValidatingPublicKeys_WithExternalURL_ThrowsError(t *tes ctx := t.Context() srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") + w.Header().Set(api.ContentTypeHeader, api.JsonMediaType) http.Error(w, "mock error", http.StatusInternalServerError) })) defer srv.Close() diff --git a/validator/rpc/handlers_health.go b/validator/rpc/handlers_health.go index 32cf39e6fdf1..584aac31ef35 100644 --- a/validator/rpc/handlers_health.go +++ b/validator/rpc/handlers_health.go @@ -40,9 +40,9 @@ func (s *Server) StreamBeaconLogs(w http.ResponseWriter, r *http.Request) { ctx, span := trace.StartSpan(r.Context(), "validator.web.health.StreamBeaconLogs") defer span.End() // Set up SSE response headers - w.Header().Set("Content-Type", api.EventStreamMediaType) - w.Header().Set("Cache-Control", "no-cache") - w.Header().Set("Connection", api.KeepAlive) + w.Header().Set(api.ContentTypeHeader, api.EventStreamMediaType) + w.Header().Set(api.CacheControlHeader, api.NoCache) + w.Header().Set(api.ConnectionHeader, api.KeepAlive) // Flush helper function to ensure data is sent to client flusher, ok := w.(http.Flusher) @@ -109,9 +109,9 @@ func (s *Server) StreamValidatorLogs(w http.ResponseWriter, r *http.Request) { close(ch) }() // Set up SSE response headers - w.Header().Set("Content-Type", api.EventStreamMediaType) - w.Header().Set("Cache-Control", "no-cache") - w.Header().Set("Connection", api.KeepAlive) + w.Header().Set(api.ContentTypeHeader, api.EventStreamMediaType) + w.Header().Set(api.CacheControlHeader, api.NoCache) + w.Header().Set(api.ConnectionHeader, api.KeepAlive) recentLogs := s.logStreamer.GetLastFewLogs() logStrings := make([]string, len(recentLogs)) diff --git a/validator/rpc/handlers_health_test.go b/validator/rpc/handlers_health_test.go index 47e499b337ab..03f7d7939ab3 100644 --- a/validator/rpc/handlers_health_test.go +++ b/validator/rpc/handlers_health_test.go @@ -90,10 +90,10 @@ func TestStreamBeaconLogs(t *testing.T) { if resp.StatusCode != http.StatusOK { t.Fatalf("Expected status OK but got %v", resp.StatusCode) } - ct, ok := resp.Header["Content-Type"] + ct, ok := resp.Header[api.ContentTypeHeader] require.Equal(t, ok, true) require.Equal(t, ct[0], api.EventStreamMediaType) - cn, ok := resp.Header["Connection"] + cn, ok := resp.Header[api.ConnectionHeader] require.Equal(t, ok, true) require.Equal(t, cn[0], api.KeepAlive) body, err := io.ReadAll(resp.Body) @@ -141,10 +141,10 @@ func TestStreamValidatorLogs(t *testing.T) { if resp.StatusCode != http.StatusOK { t.Fatalf("Expected status OK but got %v", resp.StatusCode) } - ct, ok := resp.Header["Content-Type"] + ct, ok := resp.Header[api.ContentTypeHeader] require.Equal(t, ok, true) require.Equal(t, ct[0], api.EventStreamMediaType) - cn, ok := resp.Header["Connection"] + cn, ok := resp.Header[api.ConnectionHeader] require.Equal(t, ok, true) require.Equal(t, cn[0], api.KeepAlive) // Check if data was written diff --git a/validator/rpc/intercepter.go b/validator/rpc/intercepter.go index 12761eff0aeb..a672c2551551 100644 --- a/validator/rpc/intercepter.go +++ b/validator/rpc/intercepter.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "fmt" "net/http" "strings" @@ -40,12 +41,12 @@ func (s *Server) AuthTokenHandler(next http.Handler) http.Handler { // if it's not initialize or has a web prefix if (strings.Contains(r.URL.Path, api.WebApiUrlPrefix) || strings.Contains(r.URL.Path, api.KeymanagerApiPrefix)) && !strings.Contains(r.URL.Path, api.SystemLogsPrefix) { // ignore some routes - reqToken := r.Header.Get("Authorization") + reqToken := r.Header.Get(api.AuthorizationHeader) if reqToken == "" { httputil.HandleError(w, "Unauthorized: no Authorization header passed. Please use an Authorization header with the jwt created in the prysm wallet", http.StatusUnauthorized) return } - tokenParts := strings.Split(reqToken, "Bearer ") + tokenParts := strings.Split(reqToken, fmt.Sprintf("%s ", api.BearerAuthorization)) if len(tokenParts) != 2 { httputil.HandleError(w, "Invalid token format", http.StatusBadRequest) return @@ -72,10 +73,10 @@ func (s *Server) authorize(ctx context.Context) error { if !ok { return status.Errorf(codes.Unauthenticated, "Authorization token could not be found") } - if len(authHeader) < 1 || !strings.Contains(authHeader[0], "Bearer ") { + if len(authHeader) < 1 || !strings.Contains(authHeader[0], fmt.Sprintf("%s ", api.BearerAuthorization)) { return status.Error(codes.Unauthenticated, "Invalid auth header, needs Bearer {token}") } - token := strings.Split(authHeader[0], "Bearer ")[1] + token := strings.Split(authHeader[0], fmt.Sprintf("%s ", api.BearerAuthorization))[1] if strings.TrimSpace(token) != s.authToken || strings.TrimSpace(s.authToken) == "" { return status.Errorf(codes.Unauthenticated, "Forbidden: token value is invalid") } diff --git a/validator/rpc/intercepter_test.go b/validator/rpc/intercepter_test.go index 5fca66058c5c..53274670749c 100644 --- a/validator/rpc/intercepter_test.go +++ b/validator/rpc/intercepter_test.go @@ -82,7 +82,7 @@ func TestServer_AuthTokenHandler(t *testing.T) { rr := httptest.NewRecorder() req, err := http.NewRequest(http.MethodGet, "/eth/v1/keystores", http.NoBody) require.NoError(t, err) - req.Header.Set("Authorization", "Bearer YOUR_JWT_TOKEN") // Replace with a valid JWT token + req.Header.Set(api.AuthorizationHeader, "Bearer YOUR_JWT_TOKEN") // Replace with a valid JWT token testHandler.ServeHTTP(rr, req) require.Equal(t, http.StatusForbidden, rr.Code) errJson := &httputil.DefaultJsonError{} @@ -93,7 +93,7 @@ func TestServer_AuthTokenHandler(t *testing.T) { rr := httptest.NewRecorder() req, err := http.NewRequest(http.MethodGet, "/eth/v1/keystores", http.NoBody) require.NoError(t, err) - req.Header.Set("Authorization", "Bearer "+token) // Replace with a valid JWT token + req.Header.Set(api.AuthorizationHeader, "Bearer "+token) // Replace with a valid JWT token testHandler.ServeHTTP(rr, req) require.Equal(t, http.StatusOK, rr.Code) }) diff --git a/validator/web/BUILD.bazel b/validator/web/BUILD.bazel index d9c867063629..f123b8263b32 100644 --- a/validator/web/BUILD.bazel +++ b/validator/web/BUILD.bazel @@ -13,12 +13,18 @@ go_library( visibility = [ "//validator:__subpackages__", ], - deps = ["@com_github_sirupsen_logrus//:go_default_library"], + deps = [ + "//api:go_default_library", + "@com_github_sirupsen_logrus//:go_default_library", + ], ) go_test( name = "go_default_test", srcs = ["handler_test.go"], embed = [":go_default_library"], - deps = ["//testing/assert:go_default_library"], + deps = [ + "//api:go_default_library", + "//testing/assert:go_default_library", + ], ) diff --git a/validator/web/handler.go b/validator/web/handler.go index c5f5f46199c1..54fc822e009f 100644 --- a/validator/web/handler.go +++ b/validator/web/handler.go @@ -5,6 +5,8 @@ import ( "net/http" "net/url" "path" + + "github.com/OffchainLabs/prysm/v6/api" ) const prefix = "prysm-web-ui" @@ -25,7 +27,7 @@ var Handler = func(res http.ResponseWriter, req *http.Request) { if d, ok := _bindata[p]; ok { m := mime.TypeByExtension(path.Ext(p)) - res.Header().Add("Content-Type", m) + res.Header().Add(api.ContentTypeHeader, m) res.WriteHeader(http.StatusOK) asset, err := d() if err != nil { @@ -38,7 +40,7 @@ var Handler = func(res http.ResponseWriter, req *http.Request) { // Angular routing expects that routes are rewritten to serve index.html. For example, if // requesting /login, this should serve the single page app index.html. m := mime.TypeByExtension(".html") - res.Header().Add("Content-Type", m) + res.Header().Add(api.ContentTypeHeader, m) res.WriteHeader(http.StatusOK) asset, err := d() if err != nil { diff --git a/validator/web/handler_test.go b/validator/web/handler_test.go index cfa044655de0..5af117c9abd8 100644 --- a/validator/web/handler_test.go +++ b/validator/web/handler_test.go @@ -5,6 +5,7 @@ import ( "net/http/httptest" "testing" + "github.com/OffchainLabs/prysm/v6/api" "github.com/OffchainLabs/prysm/v6/testing/assert" ) @@ -48,7 +49,7 @@ func TestHandler(t *testing.T) { Handler(res, req) assert.Equal(t, tt.wantStatus, res.Result().StatusCode) if tt.wantContentType != "" { - assert.Equal(t, tt.wantContentType, res.Result().Header.Get("Content-Type")) + assert.Equal(t, tt.wantContentType, res.Result().Header.Get(api.ContentTypeHeader)) } }) }