func TestClient(t *testing.T) { h := httptest.NewClient() c := &Client{HTTP: h} // happy path h. On("GET", "https://www.stellar.org/.well-known/stellar.toml"). ReturnString(http.StatusOK, `FEDERATION_SERVER="https://localhost/federation"`, ) stoml, err := c.GetStellarToml("stellar.org") require.NoError(t, err) assert.Equal(t, "https://localhost/federation", stoml.FederationServer) // not found h. On("GET", "https://www.missing.org/.well-known/stellar.toml"). ReturnNotFound() stoml, err = c.GetStellarToml("missing.org") assert.EqualError(t, err, "http request failed with non-200 status code") // invalid toml h. On("GET", "https://www.json.org/.well-known/stellar.toml"). ReturnJSON(http.StatusOK, map[string]string{"hello": "world"}) stoml, err = c.GetStellarToml("json.org") if assert.Error(t, err) { assert.Contains(t, err.Error(), "toml decode failed") } }
func TestLookupByAddress(t *testing.T) { hmock := httptest.NewClient() tomlmock := &stellartoml.MockClient{} c := &Client{StellarTOML: tomlmock, HTTP: hmock} // happy path tomlmock.On("GetStellarToml", "stellar.org").Return(&stellartoml.Response{ FederationServer: "https://stellar.org/federation", }, nil) hmock.On("GET", "https://stellar.org/federation"). ReturnJSON(http.StatusOK, map[string]string{ "stellar_address": "scott*stellar.org", "account_id": "GASTNVNLHVR3NFO3QACMHCJT3JUSIV4NBXDHDO4VTPDTNN65W3B2766C", "memo_type": "id", "memo": "123", }) resp, err := c.LookupByAddress("scott*stellar.org") if assert.NoError(t, err) { assert.Equal(t, "GASTNVNLHVR3NFO3QACMHCJT3JUSIV4NBXDHDO4VTPDTNN65W3B2766C", resp.AccountID) assert.Equal(t, "id", resp.MemoType) assert.Equal(t, "123", resp.Memo) } // failed toml resolution tomlmock.On("GetStellarToml", "missing.org").Return( (*stellartoml.Response)(nil), errors.New("toml failed"), ) resp, err = c.LookupByAddress("scott*missing.org") if assert.Error(t, err) { assert.Contains(t, err.Error(), "toml failed") } // 404 federation response tomlmock.On("GetStellarToml", "404.org").Return(&stellartoml.Response{ FederationServer: "https://404.org/federation", }, nil) hmock.On("GET", "https://404.org/federation").ReturnNotFound() resp, err = c.LookupByAddress("scott*404.org") if assert.Error(t, err) { assert.Contains(t, err.Error(), "failed with (404)") } // connection error on federation response tomlmock.On("GetStellarToml", "error.org").Return(&stellartoml.Response{ FederationServer: "https://error.org/federation", }, nil) hmock.On("GET", "https://error.org/federation").ReturnError("kaboom!") resp, err = c.LookupByAddress("scott*error.org") if assert.Error(t, err) { assert.Contains(t, err.Error(), "kaboom!") } }
"github.com/stellar/go/support/http/httptest" ) func TestHorizon(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Package: github.com/stellar/go/horizon") } var _ = Describe("Horizon", func() { var ( client *Client hmock *httptest.Client ) BeforeEach(func() { hmock = httptest.NewClient() client = &Client{ URL: "https://localhost", HTTP: hmock, } }) Describe("LoadAccount", func() { It("success response", func() { hmock.On( "GET", "https://localhost/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", ).ReturnString(200, accountResponse) account, err := client.LoadAccount("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H") Expect(err).To(BeNil())