stellar-sdk 0.5.0 → 0.9.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -2
  3. data/{LICENSE.txt → LICENSE} +0 -0
  4. data/README.md +17 -11
  5. data/lib/stellar-sdk.rb +3 -4
  6. data/lib/stellar/account.rb +16 -18
  7. data/lib/stellar/amount.rb +9 -13
  8. data/lib/stellar/client.rb +217 -91
  9. data/lib/stellar/horizon/problem.rb +14 -16
  10. data/lib/stellar/sep10.rb +347 -0
  11. data/lib/stellar/transaction_page.rb +4 -6
  12. data/lib/stellar/version.rb +1 -1
  13. metadata +17 -207
  14. data/.gitignore +0 -16
  15. data/.travis.yml +0 -13
  16. data/.yardopts +0 -7
  17. data/CONTRIBUTING.md +0 -48
  18. data/Gemfile +0 -14
  19. data/Guardfile +0 -5
  20. data/Rakefile +0 -3
  21. data/examples/01_get_funded.rb +0 -37
  22. data/examples/02_payment.rb +0 -15
  23. data/examples/03_transaction_history.rb +0 -21
  24. data/examples/04_setting_trust.rb +0 -1
  25. data/examples/05_fiat_payment.rb +0 -13
  26. data/examples/06_fund_testnet_friendbot.rb +0 -15
  27. data/ruby-stellar-sdk.gemspec +0 -36
  28. data/spec/config.yml.sample +0 -7
  29. data/spec/fixtures/vcr_cassettes/Stellar_Account/_lookup/should_handle_404_request_when_performing_federation_lookup.yml +0 -133
  30. data/spec/fixtures/vcr_cassettes/Stellar_Account/_lookup/should_handle_domains_that_are_not_federation_servers.yml +0 -44
  31. data/spec/fixtures/vcr_cassettes/Stellar_Account/_lookup/should_peforms_federation_lookup.yml +0 -85
  32. data/spec/fixtures/vcr_cassettes/Stellar_Client/_account_info/returns_the_current_details_for_the_account.yml +0 -190
  33. data/spec/fixtures/vcr_cassettes/Stellar_Client/_account_merge/merges_source_account_into_destination.yml +0 -714
  34. data/spec/fixtures/vcr_cassettes/Stellar_Client/_change_trust/given_an_asset_described_as_an_array/creates_updates_or_deletes_a_trustline.yml +0 -1156
  35. data/spec/fixtures/vcr_cassettes/Stellar_Client/_create_account/creates_the_account.yml +0 -323
  36. data/spec/fixtures/vcr_cassettes/Stellar_Client/_send_payment/alphanum12_asset/sends_a_alphanum12_asset_to_the_destination.yml +0 -737
  37. data/spec/fixtures/vcr_cassettes/Stellar_Client/_send_payment/alphanum4_asset/sends_a_alphanum4_asset_to_the_destination.yml +0 -737
  38. data/spec/fixtures/vcr_cassettes/Stellar_Client/_send_payment/native_asset/sends_a_native_payment_to_the_account.yml +0 -469
  39. data/spec/fixtures/vcr_cassettes/Stellar_Client/_transactions/account_transactions/accepts_a_cursor_to_return_less_data.yml +0 -94
  40. data/spec/fixtures/vcr_cassettes/Stellar_Client/_transactions/account_transactions/returns_a_list_of_transaction_for_an_account.yml +0 -94
  41. data/spec/fixtures/vcr_cassettes/Stellar_Client/_transactions/all_transactions/accepts_a_cursor_to_return_less_data.yml +0 -94
  42. data/spec/fixtures/vcr_cassettes/Stellar_Client/_transactions/all_transactions/returns_a_list_of_transactions.yml +0 -94
  43. data/spec/lib/stellar/account_spec.rb +0 -59
  44. data/spec/lib/stellar/amount_spec.rb +0 -70
  45. data/spec/lib/stellar/client_spec.rb +0 -302
  46. data/spec/spec_helper.rb +0 -14
  47. data/spec/support/config.rb +0 -3
  48. data/spec/support/vcr.rb +0 -10
  49. data/tasks/rspec.rake +0 -6
  50. data/tasks/travis.rake +0 -1
@@ -1,302 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Stellar::Client do
4
-
5
- subject(:client) { Stellar::Client.default_testnet }
6
-
7
- describe "#default_testnet" do
8
- it 'instantiates a client pointing to horizon testnet' do
9
- client = described_class.default_testnet
10
- expect(client.horizon._url).to eq(described_class::HORIZON_TESTNET_URL)
11
- end
12
- end
13
-
14
- describe "#default" do
15
- it 'instantiates a client pointing to horizon mainnet' do
16
- client = described_class.default
17
- expect(client.horizon._url).to eq(described_class::HORIZON_MAINNET_URL)
18
- end
19
- end
20
-
21
- describe "#localhost" do
22
- it 'instantiates a client pointing to localhost horizon' do
23
- client = described_class.localhost
24
- expect(client.horizon._url).to eq(described_class::HORIZON_LOCALHOST_URL)
25
- end
26
- end
27
-
28
- describe "#initialize" do
29
- let(:custom_horizon_url) { 'https://horizon.domain.com' }
30
- it 'instantiates a client accepting custom options' do
31
- client = described_class.new(horizon: custom_horizon_url)
32
- expect(client.horizon._url).to eq(custom_horizon_url)
33
- end
34
- end
35
-
36
- describe "#create_account" do
37
- let(:source) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
38
- let(:destination) { Stellar::Account.random }
39
-
40
- it "creates the account", vcr: {record: :once, match_requests_on: [:method]} do
41
- client.create_account(
42
- funder: source,
43
- account: destination,
44
- starting_balance: 100,
45
- )
46
-
47
- destination_info = client.account_info(destination)
48
- balances = destination_info.balances
49
- expect(balances).to_not be_empty
50
- native_asset_balance_info = balances.find do |b|
51
- b["asset_type"] == "native"
52
- end
53
- expect(native_asset_balance_info["balance"].to_f).to eq 100.0
54
- end
55
- end
56
-
57
- describe "#account_info" do
58
- let(:account) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
59
- let(:client) { Stellar::Client.default_testnet }
60
-
61
- it "returns the current details for the account", vcr: { record: :once, match_requests_on: [:method]} do
62
- response = client.account_info(account)
63
-
64
- expect(response.id).to eq CONFIG[:source_address]
65
- expect(response.paging_token).to be_empty
66
- expect(response.sequence).to eq "346973227974715"
67
- expect(response.subentry_count).to eq 0
68
- expect(response.thresholds).to include("low_threshold" => 0, "med_threshold" => 0, "high_threshold" => 0)
69
- expect(response.flags).to include("auth_required" => false, "auth_revocable" => false)
70
- expect(response.balances).to include("balance" => "3494.9997500", "asset_type" => "native")
71
- expect(response.signers).to include(
72
- "public_key" => CONFIG[:source_address],
73
- "weight" => 1,
74
- "type" => "ed25519_public_key",
75
- "key" => CONFIG[:source_address]
76
- )
77
- expect(response.data).to be_empty
78
- end
79
- end
80
-
81
- describe "#account_merge" do
82
- let(:funder) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
83
- let(:client) { Stellar::Client.default_testnet }
84
- let(:source) { Stellar::Account.random }
85
- let(:destination) { Stellar::Account.random }
86
-
87
- it "merges source account into destination", vcr: { record: :once, match_requests_on: [:method]} do
88
- [source, destination].each do |account|
89
- account = client.create_account(
90
- funder: funder,
91
- account: account,
92
- starting_balance: 100,
93
- )
94
- end
95
-
96
- client.account_merge(
97
- account: source,
98
- destination: destination
99
- )
100
-
101
- destination_info = client.account_info(destination)
102
- native_asset_balance_info = destination_info.balances.find do |b|
103
- b["asset_type"] == "native"
104
- end
105
- # balance of merged account is the balance of both accounts minus transaction fee for merge
106
- expect(native_asset_balance_info["balance"].to_f).to eq 199.99999
107
- end
108
- end
109
-
110
- describe "#send_payment" do
111
- let(:source) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
112
-
113
- context "native asset" do
114
- let(:destination) { Stellar::Account.random }
115
-
116
- it "sends a native payment to the account", vcr: {record: :once, match_requests_on: [:method]} do
117
- client.create_account(
118
- funder: source,
119
- account: destination,
120
- starting_balance: 100,
121
- )
122
-
123
- amount = Stellar::Amount.new(150)
124
-
125
- client.send_payment(
126
- from: source,
127
- to: destination,
128
- amount: amount,
129
- )
130
-
131
- destination_info = client.account_info(destination)
132
- balances = destination_info.balances
133
- expect(balances).to_not be_empty
134
- native_asset_balance_info = balances.find do |b|
135
- b["asset_type"] == "native"
136
- end
137
- expect(native_asset_balance_info["balance"].to_f).to eq 250.0
138
- end
139
- end
140
-
141
- context "alphanum4 asset" do
142
- let(:issuer) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
143
- let(:destination) { Stellar::Account.random }
144
-
145
- it("sends a alphanum4 asset to the destination", {
146
- vcr: {record: :once, match_requests_on: [:method]},
147
- }) do
148
- client.create_account(
149
- funder: issuer,
150
- account: destination,
151
- starting_balance: 2,
152
- )
153
-
154
- client.change_trust(
155
- asset: [:alphanum4, "BTC", issuer.keypair],
156
- source: destination,
157
- )
158
-
159
- asset = Stellar::Asset.alphanum4("BTC", source.keypair)
160
- amount = Stellar::Amount.new(150, asset)
161
- client.send_payment(
162
- from: source,
163
- to: destination,
164
- amount: amount,
165
- )
166
-
167
- destination_info = client.account_info(destination)
168
- btc_balance = destination_info.balances.find do |b|
169
- b["asset_code"] == "BTC"
170
- end["balance"].to_f
171
-
172
- expect(btc_balance).to eq 150.0
173
- end
174
- end
175
-
176
- context "alphanum12 asset" do
177
- let(:issuer) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
178
- let(:destination) { Stellar::Account.random }
179
-
180
- it("sends a alphanum12 asset to the destination", {
181
- vcr: {record: :once, match_requests_on: [:method]},
182
- }) do
183
- client.create_account(
184
- funder: issuer,
185
- account: destination,
186
- starting_balance: 2,
187
- )
188
-
189
- client.change_trust(
190
- asset: [:alphanum12, "LONGNAME", issuer.keypair],
191
- source: destination,
192
- )
193
-
194
- asset = Stellar::Asset.alphanum12("LONGNAME", source.keypair)
195
- amount = Stellar::Amount.new(150, asset)
196
-
197
- client.send_payment(
198
- from: source,
199
- to: destination,
200
- amount: amount,
201
- )
202
-
203
- destination_info = client.account_info(destination)
204
- btc_balance = destination_info.balances.find do |b|
205
- b["asset_code"] == "LONGNAME"
206
- end["balance"].to_f
207
-
208
- expect(btc_balance).to eq 150.0
209
- end
210
- end
211
- end
212
-
213
- describe "#transactions" do
214
- let(:cursor) { '348403452088320' }
215
-
216
- context "account transactions" do
217
- let(:account) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
218
-
219
- it "returns a list of transaction for an account", vcr: {record: :once, match_requests_on: [:method]} do
220
- response = client.transactions(account: account)
221
- expect(response).to be_a(Stellar::TransactionPage)
222
- end
223
-
224
- it "accepts a cursor to return less data", vcr: {record: :once, match_requests_on: [:method]} do
225
- response = client.transactions(account: account,
226
- cursor: cursor)
227
- expect(response).to be_a(Stellar::TransactionPage)
228
- end
229
- end
230
-
231
- context "all transactions" do
232
- it "returns a list of transactions", vcr: {record: :once, match_requests_on: [:method]} do
233
- response = client.transactions
234
- expect(response).to be_a(Stellar::TransactionPage)
235
- end
236
-
237
- it "accepts a cursor to return less data", vcr: {record: :once, match_requests_on: [:method]} do
238
- response = client.transactions(cursor: cursor)
239
- expect(response).to be_a(Stellar::TransactionPage)
240
- end
241
- end
242
- end
243
-
244
- describe "#change_trust" do
245
- context "given an asset described as an array" do
246
- let(:issuer) { Stellar::Account.from_seed(CONFIG[:source_seed]) }
247
- let(:truster) { Stellar::Account.random }
248
-
249
- it("creates, updates, or deletes a trustline", {
250
- vcr: {record: :once, match_requests_on: [:method]},
251
- }) do
252
- client.create_account(
253
- funder: issuer,
254
- account: truster,
255
- starting_balance: 2,
256
- )
257
-
258
- # Create trustline
259
- client.change_trust(
260
- asset: [:alphanum4, "BTC", issuer.keypair],
261
- source: truster,
262
- )
263
-
264
- truster_info = client.account_info(truster)
265
- btc_balance = truster_info.balances.find do |b|
266
- b["asset_code"] == "BTC" && b["asset_issuer"] == issuer.address
267
- end
268
-
269
- expect(btc_balance).to_not be_nil
270
-
271
- # Update trustline
272
- client.change_trust(
273
- asset: [:alphanum4, "BTC", issuer.keypair],
274
- source: truster,
275
- limit: 100,
276
- )
277
-
278
- truster_info = client.account_info(truster)
279
- btc_balance = truster_info.balances.find do |b|
280
- b["asset_code"] == "BTC" && b["asset_issuer"] == issuer.address
281
- end
282
-
283
- expect(btc_balance["limit"].to_f).to eq 100
284
-
285
- # Delete trustline
286
- client.change_trust(
287
- asset: [:alphanum4, "BTC", issuer.keypair],
288
- source: truster,
289
- limit: 0,
290
- )
291
-
292
- truster_info = client.account_info(truster)
293
- btc_balance = truster_info.balances.find do |b|
294
- b["asset_code"] == "BTC" && b["asset_issuer"] == issuer.address
295
- end
296
-
297
- expect(btc_balance).to be_nil
298
- end
299
- end
300
- end
301
-
302
- end
@@ -1,14 +0,0 @@
1
- require 'simplecov'
2
- SimpleCov.start
3
-
4
- require 'pry'
5
- require 'stellar-sdk'
6
- require "pathname"
7
-
8
- SPEC_ROOT = Pathname.new(File.dirname(__FILE__))
9
-
10
- Dir["#{SPEC_ROOT}/support/**/*.rb"].each { |f| require f }
11
-
12
- RSpec.configure do |config|
13
-
14
- end
@@ -1,3 +0,0 @@
1
- require "yaml"
2
-
3
- CONFIG = YAML.load_file(SPEC_ROOT.join("config.yml")).with_indifferent_access
@@ -1,10 +0,0 @@
1
- require "vcr"
2
-
3
- VCR.configure do |config|
4
- config.cassette_library_dir = "spec/fixtures/vcr_cassettes"
5
- config.hook_into :webmock
6
- config.configure_rspec_metadata!
7
- %i[source_address destination_address].each do |var|
8
- config.filter_sensitive_data("[#{var}]") { CONFIG[var] }
9
- end
10
- end
@@ -1,6 +0,0 @@
1
- begin
2
- require 'rspec/core/rake_task'
3
- RSpec::Core::RakeTask.new(:spec)
4
- task :default => :spec
5
- rescue LoadError
6
- end
@@ -1 +0,0 @@
1
- task :travis => %w(spec)