cloud_payments 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 9e65806150df505158679b9614835f31235eb91d
4
- data.tar.gz: fb0bbe75f1d804547b4eef7fa4f6e3ec72f65a94
3
+ metadata.gz: 87ad4228e46b088bd3c828392f883daed80b30a9
4
+ data.tar.gz: e557846dcc4fce01747d2d852d717560d4d36068
5
5
  SHA512:
6
- metadata.gz: ebc7f7442b275344048f833e615f889abfb38a1253a06e10199a328835447cf3d076d7a2af3263174461963cbcef1ae8549a9d499d606ccf09652b1486d2bd6b
7
- data.tar.gz: 8bb8fe1362062a6ba1cb73cdfc43a845ff80519380b2be392cc19a0dd738e5d7af529d190bbbfe9fdfc766e8a7555707741695d185a29784d55b5c949b842621
6
+ metadata.gz: f6d77521d6995902f1f6692c4f39faa2ac84c0daffe44d3c57c80e2209b6d37426ab2791158a536d8023706c15170769af00d1f7dbb8d9eac71b89e486266b51
7
+ data.tar.gz: d6c183255aa997ec093fe8ff4b745ed5079e5f85926c350c9e17876689589d29bfb9938da0c3bb8b024017cd03306771a019bc48c25540020fbf49c2c50e5499
@@ -1,16 +1,12 @@
1
1
  language: ruby
2
- sudo: false
3
- cache: bundler
4
- script: bundle exec rspec
2
+ cache: bundler
3
+ script: bundle exec rspec
4
+ before_install: gem install bundler
5
5
  env:
6
6
  - CODECLIMATE_REPO_TOKEN=8e9b89269d9aafc2dec2706a43825201de496b743505d7a7666068f7b22b07d
7
7
  rvm:
8
- - '1.9.3'
9
- - '2.0'
10
- - '2.1'
11
8
  - '2.2'
12
- - '2.3.0'
13
- - rbx-2
9
+ - '2.3'
14
10
  - ruby-head
15
11
  matrix:
16
12
  allow_failures:
data/Gemfile CHANGED
@@ -6,5 +6,5 @@ gemspec
6
6
  gem 'oj'
7
7
  gem 'pry'
8
8
  gem 'rack'
9
- gem 'webmock', require: 'webmock/rspec'
10
- gem "codeclimate-test-reporter", group: :test, require: nil
9
+ gem 'webmock'
10
+ gem "codeclimate-test-reporter", group: :test, require: nil
@@ -1,5 +1,6 @@
1
1
  module CloudPayments
2
2
  class Client
3
+ class ReasonedGatewayError < StandardError; end
3
4
  module GatewayErrors; end
4
5
 
5
6
  REASON_CODES = {
@@ -29,7 +30,7 @@ module CloudPayments
29
30
 
30
31
  GATEWAY_ERRORS = REASON_CODES.inject({}) do |result, error|
31
32
  status, name = error
32
- result[status] = GatewayErrors.const_set(name, Class.new(StandardError))
33
+ result[status] = GatewayErrors.const_set(name, Class.new(ReasonedGatewayError))
33
34
  result
34
35
  end
35
36
  end
@@ -20,7 +20,14 @@ module CloudPayments
20
20
 
21
21
  def convert_keys_from_api(attributes)
22
22
  attributes.each_with_object({}) do |(key, value), result|
23
- value = convert_keys_from_api(value) if value.is_a?(Hash)
23
+ value = case value
24
+ when Hash
25
+ convert_keys_from_api(value)
26
+ when Array
27
+ value.map { |item| convert_keys_from_api(item) }
28
+ else
29
+ value
30
+ end
24
31
 
25
32
  key = key.to_s.gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
26
33
  key.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
@@ -6,6 +6,11 @@ module CloudPayments
6
6
  Subscription.new(response[:model])
7
7
  end
8
8
 
9
+ def find_all(account_id)
10
+ response = request(:find, account_id: account_id)
11
+ Array(response[:model]).map { |item| Subscription.new(item) }
12
+ end
13
+
9
14
  def create(attributes)
10
15
  response = request(:create, attributes)
11
16
  Subscription.new(response[:model])
@@ -1,3 +1,3 @@
1
1
  module CloudPayments
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -205,7 +205,7 @@ describe CloudPayments::Transaction do
205
205
  subject{ CloudPayments::Transaction.new(default_attributes.merge(attributes)) }
206
206
 
207
207
  describe '#subscription' do
208
- before{ stub_api_request('subscriptions/find/successful').perform }
208
+ before{ stub_api_request('subscriptions/get/successful').perform }
209
209
 
210
210
  context 'with subscription_id' do
211
211
  let(:attributes){ { subscription_id: 'sc_8cf8a9338fb' } }
@@ -14,8 +14,8 @@ describe CloudPayments::Namespaces::Base do
14
14
  subject{ TestNamespace.new(CloudPayments.client) }
15
15
 
16
16
  def stub_api(path, body = '')
17
- url = "http://user:pass@localhost:9292#{path}"
18
- stub_request(:post, url).with(body: body, headers: headers)
17
+ url = "http://localhost:9292#{path}"
18
+ stub_request(:post, url).with(body: body, headers: headers, basic_auth: ['user', 'pass'])
19
19
  end
20
20
 
21
21
  describe '#request' do
@@ -63,7 +63,13 @@ describe CloudPayments::Namespaces::Base do
63
63
 
64
64
  context 'config.raise_banking_errors = true' do
65
65
  before { CloudPayments.config.raise_banking_errors = true }
66
- specify{ expect{ subject.request(:path, request_params) }.to raise_error(CloudPayments::Client::GatewayErrors::LostCard) }
66
+ specify do
67
+ begin
68
+ subject.request(:path, request_params)
69
+ rescue CloudPayments::Client::GatewayErrors::LostCard => err
70
+ expect(err).to be_a CloudPayments::Client::ReasonedGatewayError
71
+ end
72
+ end
67
73
  end
68
74
 
69
75
  context 'config.raise_banking_errors = false' do
@@ -5,7 +5,7 @@ describe CloudPayments::Namespaces::Subscriptions do
5
5
 
6
6
  describe '#find' do
7
7
  context do
8
- before{ stub_api_request('subscriptions/find/successful').perform }
8
+ before{ stub_api_request('subscriptions/get/successful').perform }
9
9
 
10
10
  specify{ expect(subject.find('sc_8cf8a9338fb')).to be_instance_of(CloudPayments::Subscription) }
11
11
 
@@ -21,6 +21,25 @@ describe CloudPayments::Namespaces::Subscriptions do
21
21
  end
22
22
  end
23
23
 
24
+ describe '#find_all' do
25
+ context do
26
+ before{ stub_api_request('subscriptions/find/successful').perform }
27
+
28
+ specify{ expect(subject.find_all("user@example.com")).to be_instance_of(Array) }
29
+ specify{ expect(subject.find_all("user@example.com").first).to be_instance_of(CloudPayments::Subscription) }
30
+
31
+ context do
32
+ let(:sub){ subject.find_all("user@example.com").first }
33
+
34
+ specify{ expect(sub.id).to eq('sc_8cf8a9338fb') }
35
+ specify{ expect(sub.account_id).to eq('user@example.com') }
36
+ specify{ expect(sub.description).to eq('Monthly subscription') }
37
+ specify{ expect(sub.started_at).to eq(DateTime.parse('2014-08-09T11:49:41')) }
38
+ specify{ expect(sub).to be_active }
39
+ end
40
+ end
41
+ end
42
+
24
43
  describe '#create' do
25
44
  let(:attributes){ {
26
45
  token: '477BBA133C182267F',
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  :request:
3
- :url: '/subscriptions/get'
4
- :body: '{"Id":"sc_8cf8a9338fb"}'
3
+ :url: '/subscriptions/find'
4
+ :body: '{"AccountId":"user@example.com"}'
5
5
  :response:
6
6
  :body: >
7
7
  {
8
- "Model":{
8
+ "Model":[{
9
9
  "Id":"sc_8cf8a9338fb",
10
10
  "AccountId":"user@example.com",
11
11
  "Description":"Monthly subscription",
@@ -25,7 +25,7 @@
25
25
  "FailedTransactionsNumber":0,
26
26
  "LastTransactionDateIso":"2014-08-09T11:49:41",
27
27
  "NextTransactionDateIso":"2014-08-09T11:49:41"
28
- },
28
+ }],
29
29
  "Success":true,
30
30
  "Message": null
31
31
  }
@@ -0,0 +1,31 @@
1
+ ---
2
+ :request:
3
+ :url: '/subscriptions/get'
4
+ :body: '{"Id":"sc_8cf8a9338fb"}'
5
+ :response:
6
+ :body: >
7
+ {
8
+ "Model":{
9
+ "Id":"sc_8cf8a9338fb",
10
+ "AccountId":"user@example.com",
11
+ "Description":"Monthly subscription",
12
+ "Email":"user@example.com",
13
+ "Amount":1.02,
14
+ "CurrencyCode":0,
15
+ "Currency":"RUB",
16
+ "RequireConfirmation":false,
17
+ "StartDateIso":"2014-08-09T11:49:41",
18
+ "IntervalCode":1,
19
+ "Interval":"Month",
20
+ "Period":1,
21
+ "MaxPeriods":12,
22
+ "StatusCode":0,
23
+ "Status":"Active",
24
+ "SuccessfulTransactionsNumber":0,
25
+ "FailedTransactionsNumber":0,
26
+ "LastTransactionDateIso":"2014-08-09T11:49:41",
27
+ "NextTransactionDateIso":"2014-08-09T11:49:41"
28
+ },
29
+ "Success":true,
30
+ "Message": null
31
+ }
@@ -8,6 +8,9 @@ end
8
8
  require 'bundler'
9
9
  Bundler.require(:default, :test)
10
10
 
11
+ require 'webmock/rspec'
12
+
13
+ WebMock.enable!
11
14
  WebMock.disable_net_connect!
12
15
 
13
16
  Dir["./spec/support/**/*.rb"].each { |f| require f }
@@ -25,14 +28,4 @@ RSpec.configure do |config|
25
28
  config.include CloudPayments::RSpec::Helpers
26
29
 
27
30
  config.after(:suite){ WebMock.allow_net_connect! }
28
-
29
- # config.around :each, time_freeze: ->(v){ v.is_a?(Date) || v.is_a?(Time) || v.is_a?(String) } do |example|
30
- # datetime = if example.metadata[:time_freeze].is_a?(String)
31
- # DateTime.parse(example.metadata[:time_freeze])
32
- # else
33
- # example.metadata[:time_freeze]
34
- # end
35
-
36
- # Timecop.freeze(datetime){ example.run }
37
- # end
38
31
  end
@@ -44,13 +44,13 @@ module CloudPayments
44
44
  @webmock_stub ||= begin
45
45
  if fixture
46
46
  WebMock::StubRegistry.instance.register_request_stub(WebMock::RequestStub.new(:post, url)).
47
- with(body: request[:body] || '', headers: request_headers)
47
+ with(body: request[:body] || '', headers: request_headers, basic_auth: ['user', 'pass'])
48
48
  end
49
49
  end
50
50
  end
51
51
 
52
52
  def url
53
- "http://user:pass@localhost:9292#{request[:url]}"
53
+ "http://localhost:9292#{request[:url]}"
54
54
  end
55
55
 
56
56
  def request_headers
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud_payments
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - undr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-22 00:00:00.000000000 Z
11
+ date: 2016-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -163,6 +163,7 @@ files:
163
163
  - spec/fixtures/apis/subscriptions/cancel/successful.yml
164
164
  - spec/fixtures/apis/subscriptions/create/successful.yml
165
165
  - spec/fixtures/apis/subscriptions/find/successful.yml
166
+ - spec/fixtures/apis/subscriptions/get/successful.yml
166
167
  - spec/fixtures/apis/subscriptions/update/successful.yml
167
168
  - spec/fixtures/apis/tokens/auth/failed.yml
168
169
  - spec/fixtures/apis/tokens/auth/successful.yml
@@ -235,6 +236,7 @@ test_files:
235
236
  - spec/fixtures/apis/subscriptions/cancel/successful.yml
236
237
  - spec/fixtures/apis/subscriptions/create/successful.yml
237
238
  - spec/fixtures/apis/subscriptions/find/successful.yml
239
+ - spec/fixtures/apis/subscriptions/get/successful.yml
238
240
  - spec/fixtures/apis/subscriptions/update/successful.yml
239
241
  - spec/fixtures/apis/tokens/auth/failed.yml
240
242
  - spec/fixtures/apis/tokens/auth/successful.yml