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 }