github.com/InjectiveLabs/sdk-go@v1.53.0/client/core/tokens_file_loader_test.go (about)

     1  package core
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"net/http"
     7  	"net/http/httptest"
     8  	"testing"
     9  
    10  	"gotest.tools/v3/assert"
    11  )
    12  
    13  func TestLoadTokensFromUrl(t *testing.T) {
    14  	tokensMetadata := make([]TokenMetadata, 2)
    15  	tokensMetadata = append(tokensMetadata, TokenMetadata{
    16  		Address:           "",
    17  		IsNative:          true,
    18  		Decimals:          9,
    19  		Symbol:            "SOL",
    20  		Name:              "Solana",
    21  		Logo:              "https://imagedelivery.net/DYKOWp0iCc0sIkF-2e4dNw/2aa4deed-fa31-4d1a-ba0a-d698b84f3800/public",
    22  		Creator:           "inj15jeczm4mqwtc9lk4c0cyynndud32mqd4m9xnmu",
    23  		CoinGeckoId:       "solana",
    24  		Denom:             "",
    25  		TokenType:         "spl",
    26  		TokenVerification: "verified",
    27  		ExternalLogo:      "solana.png",
    28  	},
    29  	)
    30  	tokensMetadata = append(tokensMetadata, TokenMetadata{
    31  		Address:           "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",
    32  		IsNative:          false,
    33  		Decimals:          18,
    34  		Symbol:            "WMATIC",
    35  		Name:              "Wrapped Matic",
    36  		Logo:              "https://imagedelivery.net/DYKOWp0iCc0sIkF-2e4dNw/0d061e1e-a746-4b19-1399-8187b8bb1700/public",
    37  		Creator:           "inj169ed97mcnf8ay6rgvskn95n6tyt46uwvy5qgs0",
    38  		CoinGeckoId:       "wmatic",
    39  		Denom:             "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",
    40  		TokenType:         "evm",
    41  		TokenVerification: "verified",
    42  		ExternalLogo:      "polygon.png",
    43  	},
    44  	)
    45  
    46  	metadataString, err := json.Marshal(tokensMetadata)
    47  	assert.NilError(t, err)
    48  
    49  	httpServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    50  		w.WriteHeader(http.StatusOK)
    51  		_, _ = w.Write(metadataString)
    52  	}))
    53  	defer httpServer.Close()
    54  
    55  	loadedTokens, err := LoadTokens(httpServer.URL)
    56  	assert.NilError(t, err)
    57  
    58  	assert.Equal(t, len(loadedTokens), len(tokensMetadata))
    59  
    60  	for i, metadata := range tokensMetadata {
    61  		assert.Equal(t, loadedTokens[i], metadata)
    62  	}
    63  }
    64  
    65  func TestLoadTokensFromUrlReturnsNoTokensWhenRequestErrorHappens(t *testing.T) {
    66  	httpServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    67  		w.WriteHeader(http.StatusNotFound)
    68  	}))
    69  	defer httpServer.Close()
    70  
    71  	loadedTokens, err := LoadTokens(httpServer.URL)
    72  	assert.Error(t, err, fmt.Sprintf("failed to load tokens from %s: %v %s", httpServer.URL, http.StatusNotFound, http.StatusText(http.StatusNotFound)))
    73  	assert.Equal(t, len(loadedTokens), 0)
    74  }