mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 13:28:01 -05:00
Compare commits
4 Commits
d869754e2e
...
header-con
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73d278bdde | ||
|
|
608fa30c95 | ||
|
|
012dbba2e0 | ||
|
|
2c56d9e0db |
@@ -10,7 +10,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(
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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())
|
||||
}()
|
||||
|
||||
@@ -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())
|
||||
}()
|
||||
|
||||
@@ -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 == "" {
|
||||
|
||||
@@ -81,6 +81,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",
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -150,7 +150,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)
|
||||
@@ -826,7 +826,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)
|
||||
}
|
||||
|
||||
@@ -861,9 +861,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 {
|
||||
|
||||
@@ -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{}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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{}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -127,7 +127,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
|
||||
}
|
||||
@@ -160,7 +160,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)
|
||||
}
|
||||
|
||||
@@ -397,9 +397,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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -1460,7 +1460,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{}
|
||||
|
||||
@@ -1779,7 +1779,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{}
|
||||
|
||||
@@ -1968,7 +1968,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{}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 {
|
||||
|
||||
3
changelog/radek_header-consts.md
Normal file
3
changelog/radek_header-consts.md
Normal file
@@ -0,0 +1,3 @@
|
||||
### Ignored
|
||||
|
||||
- Always use constants for API headers.
|
||||
@@ -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",
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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.IndexedErrorContainer{
|
||||
Failures: []*server.IndexedError{
|
||||
{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)
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
}))
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 != "" {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 != "" {
|
||||
|
||||
@@ -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())
|
||||
}()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
|
||||
@@ -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",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user