package config import ( "context" "net/http" "net/http/httptest" "os" "strings" "testing" "github.com/prysmaticlabs/prysm/v5/config/params" "github.com/prysmaticlabs/prysm/v5/testing/assert" "github.com/prysmaticlabs/prysm/v5/testing/require" "github.com/sirupsen/logrus/hooks/test" ) func TestUnmarshalFromURL_Success(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) _, err := w.Write([]byte(`{"key":"value"}`)) require.NoError(t, err) })) defer server.Close() var result map[string]string err := UnmarshalFromURL(context.Background(), server.URL, &result) if err != nil { t.Errorf("UnmarshalFromURL failed: %v", err) } if result["key"] != "value" { t.Errorf("Expected value to be 'value', got '%s'", result["key"]) } } func TestUnmarshalFromFile_Success(t *testing.T) { // Temporarily create a YAML file tmpFile, err := os.CreateTemp(t.TempDir(), "example.*.yaml") require.NoError(t, err) defer require.NoError(t, os.Remove(tmpFile.Name())) // Clean up content := []byte("key: value") require.NoError(t, os.WriteFile(tmpFile.Name(), content, params.BeaconIoConfig().ReadWritePermissions)) require.NoError(t, tmpFile.Close()) var result map[string]string require.NoError(t, UnmarshalFromFile(tmpFile.Name(), &result)) require.Equal(t, result["key"], "value") } func TestWarnNonChecksummedAddress(t *testing.T) { logHook := test.NewGlobal() address := "0x967646dCD8d34F4E02204faeDcbAe0cC96fB9245" err := WarnNonChecksummedAddress(address) require.NoError(t, err) assert.LogsDoNotContain(t, logHook, "is not a checksum Ethereum address") address = strings.ToLower("0x967646dCD8d34F4E02204faeDcbAe0cC96fB9244") err = WarnNonChecksummedAddress(address) require.NoError(t, err) assert.LogsContain(t, logHook, "is not a checksum Ethereum address") }