zold 0.20.0 → 0.20.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cf98ca9682d1320a73b1abcd73b8d7b05e38e36104cf7b9aa70d5c74f182537
4
- data.tar.gz: 1c63b8e0ce591b4b2082e84a2858ceac34b85c1310f4cd52a209555e8ed55443
3
+ metadata.gz: dec6ef3362deffe905c48db392a63691b2af28e0e1d7935705a7ccee03f72630
4
+ data.tar.gz: d8bc9621312050b27e2d25897585f6f8a9b5d2b0f9d4681c9a08e52ad04990d3
5
5
  SHA512:
6
- metadata.gz: 17d3f4eaa73d06fc4afa419e7acb6cb5a3570150d877cf185c446b5dc75eae9f339a446a3359ccdbcb96e43cf96f18bc55ad66b972bac21b0d511d4e939e2723
7
- data.tar.gz: a4167a3fa33a6d64b3a390d11c4fde7aa645e37f60027e0bb27c73ed4a9385fe0b9240ff0525e8ed511613d8f4383e7170bce2272b53ff52401d45dfbb176bf3
6
+ metadata.gz: 50bf436dc8d8323b83c7fae037e9de22818921e67ede7d1a2fce49c29dcffe515e1f6695199bbd36ec64668aba138782cdb82725f07ae13c2db74f78f1210b2f
7
+ data.tar.gz: 603a47739743f9c77c3a4f6208802534d1ad7c59b9a15d5759324c78ddba22939ae7b4b1181181e26b0de2445ac747eef31aab14e45ffbc640d9791ec8b4e7f1
data/bin/zold CHANGED
@@ -201,7 +201,7 @@ cmd = lambda do
201
201
  Zold::Invoice.new(wallets: wallets, remotes: remotes, copies: copies, log: log).run(args)
202
202
  when 'pay'
203
203
  require_relative '../lib/zold/commands/pay'
204
- Zold::Pay.new(wallets: wallets, remotes: remotes, log: log).run(args)
204
+ Zold::Pay.new(wallets: wallets, copies: copies, remotes: remotes, log: log).run(args)
205
205
  when 'show'
206
206
  require_relative '../lib/zold/commands/show'
207
207
  Zold::Show.new(wallets: wallets, copies: copies, log: log).run(args)
@@ -37,9 +37,10 @@ module Zold
37
37
  class Pay
38
38
  prepend ThreadBadge
39
39
 
40
- def initialize(wallets:, remotes:, log: Log::NULL)
40
+ def initialize(wallets:, remotes:, copies:, log: Log::NULL)
41
41
  @wallets = wallets
42
42
  @remotes = remotes
43
+ @copies = copies
43
44
  @log = log
44
45
  end
45
46
 
@@ -59,6 +60,12 @@ Available options:"
59
60
  o.bool '--force',
60
61
  'Ignore all validations',
61
62
  default: false
63
+ o.bool '--tolerate-edges',
64
+ 'Don\'t fail if only "edge" (not "master" ones) nodes have the wallet',
65
+ default: false
66
+ o.integer '--tolerate-quorum',
67
+ 'The minimum number of nodes required for a successful fetch (default: 4)',
68
+ default: 4
62
69
  o.bool '--dont-pay-taxes',
63
70
  'Don\'t pay taxes even if the wallet is in debt',
64
71
  default: false
@@ -74,9 +81,10 @@ Available options:"
74
81
  invoice = mine[1]
75
82
  unless invoice.include?('@')
76
83
  require_relative 'invoice'
77
- invoice = Invoice.new(
78
- wallets: @wallets, remotes: @remotes, copies: @copies, log: @log
79
- ).run(['invoice', invoice])
84
+ invoice = Invoice.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run(
85
+ ['invoice', invoice, "--tolerate-quorum=#{opts['tolerate-quorum']}"] +
86
+ (opts['tolerate-edges'] ? ['--tolerate-edges'] : [])
87
+ )
80
88
  end
81
89
  raise 'Amount is required (in ZLD) as the third argument' if mine[2].nil?
82
90
  amount = Amount.new(zld: mine[2].to_f)
data/lib/zold/version.rb CHANGED
@@ -25,7 +25,7 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.20.0'
28
+ VERSION = '0.20.1'
29
29
  PROTOCOL = 2
30
30
  REPO = 'zold-io/zold'
31
31
  end
@@ -44,6 +44,15 @@ class TestClean < Zold::Test
44
44
  end
45
45
  end
46
46
 
47
+ def test_clean_no_copies
48
+ FakeHome.new(log: test_log).run do |home|
49
+ wallet = home.create_wallet
50
+ copies = home.copies(wallet)
51
+ Zold::Clean.new(wallets: home.wallets, copies: copies.root, log: test_log).run(['clean'])
52
+ assert(copies.all.empty?)
53
+ end
54
+ end
55
+
47
56
  def test_cleans_empty_wallets
48
57
  FakeHome.new(log: test_log).run do |home|
49
58
  Zold::Clean.new(wallets: home.wallets, copies: File.join(home.dir, 'c'), log: test_log).run(['clean'])
@@ -46,7 +46,7 @@ class TestDiff < Zold::Test
46
46
  IO.write(first.path, IO.read(wallet.path))
47
47
  second = home.create_wallet
48
48
  IO.write(second.path, IO.read(wallet.path))
49
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
49
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
50
50
  ['pay', wallet.id.to_s, "NOPREFIX@#{Zold::Id.new}", '14.95', '--force', '--private-key=fixtures/id_rsa']
51
51
  )
52
52
  copies = home.copies(wallet)
@@ -48,7 +48,7 @@ class TestMerge < Zold::Test
48
48
  IO.write(first.path, IO.read(wallet.path))
49
49
  second = home.create_wallet
50
50
  IO.write(second.path, IO.read(wallet.path))
51
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
51
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
52
52
  ['pay', wallet.id.to_s, "NOPREFIX@#{Zold::Id.new}", '14.95', '--force', '--private-key=fixtures/id_rsa']
53
53
  )
54
54
  copies = home.copies(wallet)
@@ -69,7 +69,7 @@ class TestMerge < Zold::Test
69
69
  IO.write(first.path, IO.read(wallet.path))
70
70
  second = home.create_wallet
71
71
  IO.write(second.path, IO.read(wallet.path))
72
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
72
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
73
73
  ['pay', wallet.id.to_s, "NOPREFIX@#{Zold::Id.new}", '14.95', '--force', '--private-key=fixtures/id_rsa']
74
74
  )
75
75
  copies = home.copies(wallet)
@@ -21,10 +21,12 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  require 'minitest/autorun'
24
+ require 'webmock/minitest'
24
25
  require 'threads'
25
26
  require_relative '../test__helper'
26
27
  require_relative '../fake_home'
27
28
  require_relative '../../lib/zold/wallets'
29
+ require_relative '../../lib/zold/json_page'
28
30
  require_relative '../../lib/zold/amount'
29
31
  require_relative '../../lib/zold/key'
30
32
  require_relative '../../lib/zold/id'
@@ -40,7 +42,7 @@ class TestPay < Zold::Test
40
42
  source = home.create_wallet
41
43
  target = home.create_wallet
42
44
  amount = Zold::Amount.new(zld: 14.95)
43
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
45
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
44
46
  [
45
47
  'pay', '--force', '--private-key=fixtures/id_rsa',
46
48
  source.id.to_s, target.id.to_s, amount.to_zld, 'For the car'
@@ -50,12 +52,33 @@ class TestPay < Zold::Test
50
52
  end
51
53
  end
52
54
 
55
+ def test_pay_without_invoice
56
+ FakeHome.new(log: test_log).run do |home|
57
+ remotes = home.remotes
58
+ remotes.add('localhost', 4096)
59
+ json = home.create_wallet_json
60
+ id = Zold::JsonPage.new(json).to_hash['id']
61
+ stub_request(:get, "http://localhost:4096/wallet/#{id}/size").to_return(status: 200, body: '10000')
62
+ stub_request(:get, "http://localhost:4096/wallet/#{id}").to_return(status: 200, body: json)
63
+ home.wallets.acq(Zold::Id.new(id)) { |w| File.delete(w.path) }
64
+ source = home.create_wallet
65
+ amount = Zold::Amount.new(zld: 14.95)
66
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: remotes, log: test_log).run(
67
+ [
68
+ 'pay', '--force', '--private-key=fixtures/id_rsa', '--tolerate-edges', '--tolerate-quorum=1',
69
+ source.id.to_s, id, amount.to_zld, 'For the car'
70
+ ]
71
+ )
72
+ assert_equal(amount * -1, source.balance)
73
+ end
74
+ end
75
+
53
76
  def test_pay_in_many_threads
54
77
  FakeHome.new(log: test_log).run do |home|
55
78
  wallet = home.create_wallet
56
79
  amount = Zold::Amount.new(zld: 2.0)
57
80
  Threads.new(10).assert do
58
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
81
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
59
82
  [
60
83
  'pay', '--force', '--private-key=fixtures/id_rsa',
61
84
  wallet.id.to_s, 'NOPREFIX@dddd0000dddd0000', amount.to_zld, '-'
@@ -71,7 +94,7 @@ class TestPay < Zold::Test
71
94
  source = home.create_wallet(Zold::Id::ROOT)
72
95
  target = home.create_wallet
73
96
  amount = Zold::Amount.new(zld: 14.95)
74
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
97
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
75
98
  [
76
99
  'pay', '--private-key=fixtures/id_rsa',
77
100
  source.id.to_s, target.id.to_s, amount.to_zld, 'For the car'
@@ -92,7 +115,7 @@ class TestPay < Zold::Test
92
115
  'NOPREFIX', Zold::Id.new, '-'
93
116
  )
94
117
  )
95
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
118
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
96
119
  [
97
120
  'pay', '--private-key=fixtures/id_rsa',
98
121
  source.id.to_s, target.id.to_s, amount.to_zld, 'here is the refund'
@@ -115,7 +138,7 @@ class TestPay < Zold::Test
115
138
  (@info_messages ||= []) << message
116
139
  end
117
140
  end
118
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: accumulating_log).run(
141
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: accumulating_log).run(
119
142
  [
120
143
  'pay', '--force', '--private-key=fixtures/id_rsa',
121
144
  source.id.to_s, target.id.to_s, amount.to_zld, 'For the car'
@@ -37,7 +37,7 @@ class TestPropagate < Zold::Test
37
37
  wallet = home.create_wallet
38
38
  friend = home.create_wallet
39
39
  amount = Zold::Amount.new(zld: 14.95)
40
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
40
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
41
41
  ['pay', wallet.id.to_s, friend.id.to_s, amount.to_zld, '--force', '--private-key=fixtures/id_rsa']
42
42
  )
43
43
  Zold::Propagate.new(wallets: home.wallets, log: test_log).run(
@@ -42,7 +42,7 @@ class TestEntrance < Zold::Test
42
42
  body = FakeHome.new(log: test_log).run do |home|
43
43
  source = home.create_wallet(sid)
44
44
  target = home.create_wallet(tid)
45
- Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: test_log).run(
45
+ Zold::Pay.new(wallets: home.wallets, copies: home.dir, remotes: home.remotes, log: test_log).run(
46
46
  [
47
47
  'pay', '--force', '--private-key=fixtures/id_rsa',
48
48
  source.id.to_s, target.id.to_s, '19.99', 'testing'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.20.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -690,7 +690,7 @@ licenses:
690
690
  - MIT
691
691
  metadata: {}
692
692
  post_install_message: |-
693
- Thanks for installing Zold 0.20.0!
693
+ Thanks for installing Zold 0.20.1!
694
694
  Study our White Paper: https://papers.zold.io/wp.pdf
695
695
  Read our blog posts: https://blog.zold.io
696
696
  Try online wallet at: https://wts.zold.io