Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: test more utils funcs #340

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion types/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"log/slog"
"math/big"
"net/http"

"github.com/Layr-Labs/eigensdk-go/crypto/bls"
"github.com/Layr-Labs/eigensdk-go/utils"
Expand Down Expand Up @@ -46,7 +47,8 @@ func (o Operator) Validate() error {
return utils.WrapError(ErrInvalidMetadataUrl, err)
}

body, err := utils.ReadPublicURL(o.MetadataUrl)
client := &http.Client{}
body, err := utils.ReadPublicURL(o.MetadataUrl, client)
if err != nil {
return utils.WrapError(ErrReadingMetadataUrlResponse, err)
}
Expand Down
5 changes: 4 additions & 1 deletion types/operator_metadata.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package types

import (
"net/http"

"github.com/Layr-Labs/eigensdk-go/utils"
)

Expand Down Expand Up @@ -45,7 +47,8 @@ func (om *OperatorMetadata) Validate() error {
return ErrLogoRequired
}

if err = utils.IsImageURL(om.Logo); err != nil {
client := &http.Client{}
if err = utils.IsImageURL(om.Logo, client); err != nil {
return err
}

Expand Down
18 changes: 9 additions & 9 deletions utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ func EcdsaPrivateKeyToAddress(privateKey *ecdsa.PrivateKey) (gethcommon.Address,
return crypto.PubkeyToAddress(*publicKeyECDSA), nil
}

// RoundUpDivideBig divides two positive big.Int numbers and rounds up the result.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what this is used for, but it currently doesn't handle negative numbers

func RoundUpDivideBig(a, b *big.Int) *big.Int {
one := new(big.Int).SetUint64(1)
res := new(big.Int)
Expand All @@ -75,14 +76,13 @@ func IsValidEthereumAddress(address string) bool {
return ethAddrPattern.MatchString(address)
}

func ReadPublicURL(url string) ([]byte, error) {
// allow no redirects
httpClient := http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
Timeout: 3 * time.Second,
func ReadPublicURL(url string, httpClient *http.Client) ([]byte, error) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had to change the signature to make it possible to mock. IMO we shouldn't do real HTTP reqs from tests.

// Allow no redirects
httpClient.CheckRedirect = func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
}
httpClient.Timeout = 3 * time.Second

resp, err := httpClient.Get(url)
if err != nil {
return []byte{}, err
Expand Down Expand Up @@ -170,7 +170,7 @@ func CheckIfUrlIsValid(rawUrl string) error {
return nil
}

func IsImageURL(urlString string) error {
func IsImageURL(urlString string, httpClient *http.Client) error {
// Parse the URL
parsedURL, err := url.Parse(urlString)
if err != nil {
Expand All @@ -186,7 +186,7 @@ func IsImageURL(urlString string) error {
// Check if the extension is in the list of image extensions
for _, imgExt := range ImageExtensions {
if strings.EqualFold(extension, imgExt) {
imageBytes, err := ReadPublicURL(urlString)
imageBytes, err := ReadPublicURL(urlString, httpClient)
if err != nil {
return err
}
Expand Down
Loading
Loading