bitpay-rails 0.0.2

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 (55) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/models/bit_pay_client.rb +75 -0
  6. data/config/routes.rb +2 -0
  7. data/db/migrate/20150427150251_bit_pay_rails_client.rb +11 -0
  8. data/lib/bit_pay_rails/engine.rb +4 -0
  9. data/lib/bit_pay_rails/version.rb +3 -0
  10. data/lib/bit_pay_rails.rb +4 -0
  11. data/lib/tasks/bit_pay_rails_tasks.rake +4 -0
  12. data/test/bit_pay_rails_test.rb +7 -0
  13. data/test/dummy/README.rdoc +28 -0
  14. data/test/dummy/Rakefile +6 -0
  15. data/test/dummy/app/assets/javascripts/application.js +13 -0
  16. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  17. data/test/dummy/app/controllers/application_controller.rb +5 -0
  18. data/test/dummy/app/helpers/application_helper.rb +2 -0
  19. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  20. data/test/dummy/bin/bundle +3 -0
  21. data/test/dummy/bin/rails +4 -0
  22. data/test/dummy/bin/rake +4 -0
  23. data/test/dummy/bin/setup +29 -0
  24. data/test/dummy/config/application.rb +26 -0
  25. data/test/dummy/config/boot.rb +5 -0
  26. data/test/dummy/config/database.yml +25 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +41 -0
  29. data/test/dummy/config/environments/production.rb +79 -0
  30. data/test/dummy/config/environments/test.rb +42 -0
  31. data/test/dummy/config/initializers/assets.rb +11 -0
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  33. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  34. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  35. data/test/dummy/config/initializers/inflections.rb +16 -0
  36. data/test/dummy/config/initializers/mime_types.rb +4 -0
  37. data/test/dummy/config/initializers/session_store.rb +3 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  39. data/test/dummy/config/locales/en.yml +23 -0
  40. data/test/dummy/config/routes.rb +56 -0
  41. data/test/dummy/config/secrets.yml +22 -0
  42. data/test/dummy/config.ru +4 -0
  43. data/test/dummy/db/development.sqlite3 +0 -0
  44. data/test/dummy/db/schema.rb +24 -0
  45. data/test/dummy/db/test.sqlite3 +0 -0
  46. data/test/dummy/log/development.log +13 -0
  47. data/test/dummy/log/test.log +525 -0
  48. data/test/dummy/public/404.html +67 -0
  49. data/test/dummy/public/422.html +67 -0
  50. data/test/dummy/public/500.html +66 -0
  51. data/test/dummy/public/favicon.ico +0 -0
  52. data/test/integration/navigation_test.rb +10 -0
  53. data/test/models/bit_pay_client_test.rb +84 -0
  54. data/test/test_helper.rb +26 -0
  55. metadata +238 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+ require 'minitest/autorun'
3
+ require 'minitest/mock'
4
+ require 'webmock/minitest'
5
+
6
+ class BitPayClientTest < ActiveSupport::TestCase
7
+ # test "the truth" do
8
+ def setup
9
+ @client = BitPayClient.new(api_uri: "https://this.is")
10
+ @client.save!
11
+ @pem = @client.send(:get_pem)
12
+ @mock_client = double("BitPay::SDK::Client")
13
+ allow(BitPay::SDK::Client).to receive(:new).with(api_uri: "https://this.is", pem: @pem).and_return(@mock_client)
14
+ end
15
+
16
+ def teardown
17
+ allow(BitPay::SDK::Client).to receive(:new).and_call_original
18
+ end
19
+
20
+ test "client uses bitpay client to retrieve token" do
21
+ allow(@mock_client).to receive(:pair_client).and_return([
22
+ {"policies"=>[{"policy"=>"id", "method"=>"inactive", "params"=>["TfHzWm98MfsjyNAhF2cjeYvQiwamBSM1wFQ"]}],
23
+ "token"=>"AZCfNBFtSx593kjGSaRqwTJCWgSJFAGwrMUwzTY5c5gw",
24
+ "dateCreated"=>1429386951019,
25
+ "pairingExpiration"=>1429473351019,
26
+ "pairingCode"=>"5bvUecC"}])
27
+ pairing_code = @client.get_pairing_code()
28
+ assert_equal pairing_code, "5bvUecC"
29
+ end
30
+
31
+ test 'client uses bitpay client to create invoice' do
32
+ expect(@mock_client).to receive(:create_invoice).with(price: 200, currency: "USD", facade: "merchant", params: {param1: 'a value', param2: 'b value'})
33
+ params = {price: 200, currency: "USD", param1: "a value", param2: "b value"}
34
+ @client.create_invoice(params)
35
+ end
36
+
37
+ test 'client call bitpay client to get invoice' do
38
+ expect(@mock_client).to receive(:get_invoice).with(id: "aninvoiceid")
39
+ params = {id: "aninvoiceid"}
40
+ @client.get_invoice(params)
41
+ end
42
+
43
+ test 'client calls bitpay client to refund invoice' do
44
+ expect(@mock_client).to receive(:refund_invoice).with(id: "invoiceid", params: {this: "that", the: "other"})
45
+ params = {id: "invoiceid", this: "that", the: "other"}
46
+ @client.refund_invoice(params)
47
+ end
48
+
49
+ test 'client calls bitpay client to get all refuns for invoice' do
50
+ expect(@mock_client).to receive(:get_all_refunds_for_invoice).with(id: "idinvoice")
51
+ params = {id: "idinvoice", notincluded: "notincluded"}
52
+ @client.get_all_refunds_for_invoice(params)
53
+ end
54
+
55
+ test 'client calls bitpay client to get a specific refund for an invoice' do
56
+ expect(@mock_client).to receive(:get_refund).with(invoice_id: 'invoiceid', request_id: 'refundid')
57
+ params = {invoice_id: 'invoiceid', request_id: 'refundid', ignored: 'ignoreme'}
58
+ @client.get_refund(params)
59
+ end
60
+
61
+ test 'client calls bitpay client to cancel refunds' do
62
+ expect(@mock_client).to receive(:cancel_refund).with(invoice_id: 'invoiceid', request_id: 'refundid')
63
+ params = {invoice_id: 'invoiceid', request_id: 'refundid', ignored: 'ignoreme'}
64
+ @client.cancel_refund(params)
65
+ end
66
+ end
67
+
68
+ class ClientLogTest < ActiveSupport::TestCase
69
+ test 'client logs bad currency or price' do
70
+ client = BitPayClient.new(api_uri: "https://api.uri")
71
+ client.save!
72
+ expect(Rails.logger).to receive(:error).with(/BitPay::ArgumentError/)
73
+ client.create_invoice(price: "two", currency: "DAL")
74
+ end
75
+
76
+ test 'client logs bad replies from server' do
77
+ stub_request(:any, /https:\/\/api.uri.*/).to_return(status: 403, body: "{\n \"error\": \"this is a 403 error\"\n}")
78
+ client = BitPayClient.new(api_uri: "https://api.uri")
79
+ client.save!
80
+ expect(Rails.logger).to receive(:error).with(/403/)
81
+ client.get_pairing_code()
82
+ end
83
+ end
84
+
@@ -0,0 +1,26 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+ ENV["BPSECRET"] = "1234568675757575752012459"
4
+ ENV["BPSALT"] = "iamtheeggman"
5
+
6
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
7
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
8
+ require "rails/test_help"
9
+ require 'minitest/rspec_mocks'
10
+
11
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
12
+ # to be shown.
13
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
14
+
15
+ # Load support files
16
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
17
+
18
+ # Load fixtures from the engine
19
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
20
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
21
+ ActiveSupport::TestCase.fixtures :all
22
+ end
23
+
24
+ class ActiveSupport::TestCase
25
+ include Minitest::RSpecMocks
26
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bitpay-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - BitPay, Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bitpay-sdk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-rspec_mocks
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Basic connector to the BitPay cryptographic API
112
+ email:
113
+ - integrations@bitpay.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - MIT-LICENSE
119
+ - README.rdoc
120
+ - Rakefile
121
+ - app/models/bit_pay_client.rb
122
+ - config/routes.rb
123
+ - db/migrate/20150427150251_bit_pay_rails_client.rb
124
+ - lib/bit_pay_rails.rb
125
+ - lib/bit_pay_rails/engine.rb
126
+ - lib/bit_pay_rails/version.rb
127
+ - lib/tasks/bit_pay_rails_tasks.rake
128
+ - test/bit_pay_rails_test.rb
129
+ - test/dummy/README.rdoc
130
+ - test/dummy/Rakefile
131
+ - test/dummy/app/assets/javascripts/application.js
132
+ - test/dummy/app/assets/stylesheets/application.css
133
+ - test/dummy/app/controllers/application_controller.rb
134
+ - test/dummy/app/helpers/application_helper.rb
135
+ - test/dummy/app/views/layouts/application.html.erb
136
+ - test/dummy/bin/bundle
137
+ - test/dummy/bin/rails
138
+ - test/dummy/bin/rake
139
+ - test/dummy/bin/setup
140
+ - test/dummy/config.ru
141
+ - test/dummy/config/application.rb
142
+ - test/dummy/config/boot.rb
143
+ - test/dummy/config/database.yml
144
+ - test/dummy/config/environment.rb
145
+ - test/dummy/config/environments/development.rb
146
+ - test/dummy/config/environments/production.rb
147
+ - test/dummy/config/environments/test.rb
148
+ - test/dummy/config/initializers/assets.rb
149
+ - test/dummy/config/initializers/backtrace_silencers.rb
150
+ - test/dummy/config/initializers/cookies_serializer.rb
151
+ - test/dummy/config/initializers/filter_parameter_logging.rb
152
+ - test/dummy/config/initializers/inflections.rb
153
+ - test/dummy/config/initializers/mime_types.rb
154
+ - test/dummy/config/initializers/session_store.rb
155
+ - test/dummy/config/initializers/wrap_parameters.rb
156
+ - test/dummy/config/locales/en.yml
157
+ - test/dummy/config/routes.rb
158
+ - test/dummy/config/secrets.yml
159
+ - test/dummy/db/development.sqlite3
160
+ - test/dummy/db/schema.rb
161
+ - test/dummy/db/test.sqlite3
162
+ - test/dummy/log/development.log
163
+ - test/dummy/log/test.log
164
+ - test/dummy/public/404.html
165
+ - test/dummy/public/422.html
166
+ - test/dummy/public/500.html
167
+ - test/dummy/public/favicon.ico
168
+ - test/integration/navigation_test.rb
169
+ - test/models/bit_pay_client_test.rb
170
+ - test/test_helper.rb
171
+ homepage: https://bitpay.com
172
+ licenses:
173
+ - MIT
174
+ metadata: {}
175
+ post_install_message:
176
+ rdoc_options: []
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubyforge_project:
191
+ rubygems_version: 2.4.6
192
+ signing_key:
193
+ specification_version: 4
194
+ summary: Use bitcoin with BitPay
195
+ test_files:
196
+ - test/bit_pay_rails_test.rb
197
+ - test/dummy/app/assets/javascripts/application.js
198
+ - test/dummy/app/assets/stylesheets/application.css
199
+ - test/dummy/app/controllers/application_controller.rb
200
+ - test/dummy/app/helpers/application_helper.rb
201
+ - test/dummy/app/views/layouts/application.html.erb
202
+ - test/dummy/bin/bundle
203
+ - test/dummy/bin/rails
204
+ - test/dummy/bin/rake
205
+ - test/dummy/bin/setup
206
+ - test/dummy/config/application.rb
207
+ - test/dummy/config/boot.rb
208
+ - test/dummy/config/database.yml
209
+ - test/dummy/config/environment.rb
210
+ - test/dummy/config/environments/development.rb
211
+ - test/dummy/config/environments/production.rb
212
+ - test/dummy/config/environments/test.rb
213
+ - test/dummy/config/initializers/assets.rb
214
+ - test/dummy/config/initializers/backtrace_silencers.rb
215
+ - test/dummy/config/initializers/cookies_serializer.rb
216
+ - test/dummy/config/initializers/filter_parameter_logging.rb
217
+ - test/dummy/config/initializers/inflections.rb
218
+ - test/dummy/config/initializers/mime_types.rb
219
+ - test/dummy/config/initializers/session_store.rb
220
+ - test/dummy/config/initializers/wrap_parameters.rb
221
+ - test/dummy/config/locales/en.yml
222
+ - test/dummy/config/routes.rb
223
+ - test/dummy/config/secrets.yml
224
+ - test/dummy/config.ru
225
+ - test/dummy/db/development.sqlite3
226
+ - test/dummy/db/schema.rb
227
+ - test/dummy/db/test.sqlite3
228
+ - test/dummy/log/development.log
229
+ - test/dummy/log/test.log
230
+ - test/dummy/public/404.html
231
+ - test/dummy/public/422.html
232
+ - test/dummy/public/500.html
233
+ - test/dummy/public/favicon.ico
234
+ - test/dummy/Rakefile
235
+ - test/dummy/README.rdoc
236
+ - test/integration/navigation_test.rb
237
+ - test/models/bit_pay_client_test.rb
238
+ - test/test_helper.rb