buckaruby 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe Buckaruby::Signature do
4
+ describe 'generate_signature_string' do
5
+ it 'should ignore parameters that are not prefixed with brq_, add_ or cust_' do
6
+ params = { abc: 'true', def: 'true', brq_test: 'true', add_test: 'true', cust_test: 'true' }
7
+ string = Buckaruby::Signature.generate_signature_string(params, 'secret')
8
+ expect(string).to eq('add_test=truebrq_test=truecust_test=truesecret')
9
+ end
10
+
11
+ it 'should ignore the brq_signature parameter' do
12
+ params = { brq_test: 'true', add_test: 'true', cust_test: 'true', brq_signature: 'foobar' }
13
+ string = Buckaruby::Signature.generate_signature_string(params, 'secret')
14
+ expect(string).to eq('add_test=truebrq_test=truecust_test=truesecret')
15
+ end
16
+
17
+ it 'should accept boolean, integer and string as parameter types' do
18
+ params = { brq_boolean: true, brq_integer: 1337, brq_string: 'foobar', brq_nil: nil }
19
+ string = Buckaruby::Signature.generate_signature_string(params, 'secret')
20
+ expect(string).to eq('brq_boolean=truebrq_integer=1337brq_nil=brq_string=foobarsecret')
21
+ end
22
+
23
+ it 'should generate a valid signature string' do
24
+ params = { brq_test: 'abcdef', brq_test2: 'foobar' }
25
+ string = Buckaruby::Signature.generate_signature_string(params, 'secret')
26
+ expect(string).to eq('brq_test=abcdefbrq_test2=foobarsecret')
27
+ end
28
+
29
+ it 'should sort parameters case insensitive and preserve casing in keys/values' do
30
+ params = { BRQ_TESTB: 'abcDEF', brq_testA: 'Foobar', BRQ_TestC: 'test' }
31
+ string = Buckaruby::Signature.generate_signature_string(params, 'secret')
32
+ expect(string).to eq('brq_testA=FoobarBRQ_TESTB=abcDEFBRQ_TestC=testsecret')
33
+ end
34
+ end
35
+
36
+ describe 'generate_signature' do
37
+ it 'should raise an exception when generating a signature with an invalid hash method' do
38
+ expect {
39
+ params = { brq_test: 'abcdef', brq_test2: 'foobar' }
40
+ Buckaruby::Signature.generate_signature(params, secret: 'secret', hash_method: :invalid)
41
+ }.to raise_error(ArgumentError)
42
+ end
43
+
44
+ it 'should generate a valid signature with SHA-1 as hash method' do
45
+ params = { brq_test: 'abcdef', brq_test2: 'foobar' }
46
+ string = Buckaruby::Signature.generate_signature(params, secret: 'secret', hash_method: :sha1)
47
+ expect(string).to eq('c864c2abad67580274b2df00fd2a53739952b924')
48
+ end
49
+
50
+ it 'should generate a valid signature with SHA-256 as hash method' do
51
+ params = { brq_test: 'abcdef', brq_test2: 'foobar' }
52
+ string = Buckaruby::Signature.generate_signature(params, secret: 'secret', hash_method: :sha256)
53
+ expect(string).to eq('79afb9eac4182fdc2de222b558bcb0d3978f57bd4bf24eb2e7ea791943443716')
54
+ end
55
+
56
+ it 'should generate a valid signature with SHA-512 as hash method' do
57
+ params = { brq_test: 'abcdef', brq_test2: 'foobar' }
58
+ string = Buckaruby::Signature.generate_signature(params, secret: 'secret', hash_method: :sha512)
59
+ expect(string).to eq('161e485fd71c708fa7f39c1732349fae1e5b8a0c05cd4f9d806ad570b2414f5b99b4aaf89ed48c55c188b82b9565d93471d3d20163002909360f31f29f4a988d')
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe Buckaruby::Support::CaseInsensitiveHash do
4
+ describe 'retrieve and assign' do
5
+ it 'accepts String keys and makes them case insensitive' do
6
+ hash = Buckaruby::Support::CaseInsensitiveHash.new
7
+ hash["foo"] = "bar"
8
+ hash["TesT"] = "test"
9
+
10
+ expect(hash["foo"]).to eq("bar")
11
+ expect(hash["FOO"]).to eq("bar")
12
+ expect(hash[:foo]).to eq("bar")
13
+
14
+ expect(hash["test"]).to eq("test")
15
+ expect(hash["TEST"]).to eq("test")
16
+ expect(hash[:test]).to eq("test")
17
+ end
18
+
19
+ it 'accepts Symbol keys and makes them case insensitive' do
20
+ hash = Buckaruby::Support::CaseInsensitiveHash.new
21
+ hash[:foo] = "bar"
22
+ hash[:TEST] = "test"
23
+
24
+ expect(hash["foo"]).to eq("bar")
25
+ expect(hash["FOO"]).to eq("bar")
26
+ expect(hash[:foo]).to eq("bar")
27
+
28
+ expect(hash["test"]).to eq("test")
29
+ expect(hash["TEST"]).to eq("test")
30
+ expect(hash[:test]).to eq("test")
31
+ end
32
+
33
+ it 'considers uppercase, lowercase and symbol with the same value as the same key' do
34
+ hash = Buckaruby::Support::CaseInsensitiveHash.new
35
+ hash[:foo] = "bar"
36
+ hash["foo"] = "bar2"
37
+ hash["FOO"] = "bar3"
38
+
39
+ expect(hash.keys.count).to eq(1)
40
+
41
+ expect(hash[:foo]).to eq("bar3")
42
+ expect(hash["foo"]).to eq("bar3")
43
+ expect(hash["FOO"]).to eq("bar3")
44
+ end
45
+ end
46
+
47
+ describe 'initialization' do
48
+ it 'constructs a case insensitive hash based on existing hash with String keys' do
49
+ hash = Buckaruby::Support::CaseInsensitiveHash.new("foo" => "bar", "test" => "test")
50
+
51
+ expect(hash["foo"]).to eq("bar")
52
+ expect(hash["FOO"]).to eq("bar")
53
+ expect(hash[:foo]).to eq("bar")
54
+
55
+ expect(hash["test"]).to eq("test")
56
+ expect(hash["TEST"]).to eq("test")
57
+ expect(hash[:test]).to eq("test")
58
+ end
59
+
60
+ it 'constructs a case insensitive hash based on existing hash with Symbol keys' do
61
+ hash = Buckaruby::Support::CaseInsensitiveHash.new(foo: "bar", test: "test")
62
+
63
+ expect(hash["foo"]).to eq("bar")
64
+ expect(hash["FOO"]).to eq("bar")
65
+ expect(hash[:foo]).to eq("bar")
66
+
67
+ expect(hash["test"]).to eq("test")
68
+ expect(hash["TEST"]).to eq("test")
69
+ expect(hash[:test]).to eq("test")
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'buckaruby'
5
+
6
+ RSpec.configure do |config|
7
+ config.color = true
8
+ config.formatter = 'documentation'
9
+
10
+ config.raise_errors_for_deprecations!
11
+ end
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: buckaruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kentaa
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.5.0
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.5.0
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: 3.5.0
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.5.0
61
+ description: The Buckaruby gem provides a Ruby library for communicating with the
62
+ Buckaroo Payment Engine 3.0.
63
+ email:
64
+ - support@kentaa.nl
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - ".gitignore"
70
+ - ".rubocop.yml"
71
+ - ".travis.yml"
72
+ - Gemfile
73
+ - LICENSE.txt
74
+ - README.md
75
+ - Rakefile
76
+ - buckaruby.gemspec
77
+ - lib/buckaruby.rb
78
+ - lib/buckaruby/action.rb
79
+ - lib/buckaruby/currency.rb
80
+ - lib/buckaruby/exception.rb
81
+ - lib/buckaruby/gateway.rb
82
+ - lib/buckaruby/iban.rb
83
+ - lib/buckaruby/ideal.rb
84
+ - lib/buckaruby/language.rb
85
+ - lib/buckaruby/operation.rb
86
+ - lib/buckaruby/payment_method.rb
87
+ - lib/buckaruby/request.rb
88
+ - lib/buckaruby/response.rb
89
+ - lib/buckaruby/signature.rb
90
+ - lib/buckaruby/support/case_insensitive_hash.rb
91
+ - lib/buckaruby/transaction_status.rb
92
+ - lib/buckaruby/transaction_type.rb
93
+ - lib/buckaruby/urls.rb
94
+ - lib/buckaruby/version.rb
95
+ - spec/buckaruby/gateway_spec.rb
96
+ - spec/buckaruby/iban_spec.rb
97
+ - spec/buckaruby/signature_spec.rb
98
+ - spec/buckaruby/support/case_insensitive_hash_spec.rb
99
+ - spec/spec_helper.rb
100
+ homepage: http://www.buckaroo.nl/
101
+ licenses:
102
+ - MIT
103
+ metadata: {}
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 2.0.0
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 2.4.8
121
+ signing_key:
122
+ specification_version: 4
123
+ summary: Ruby library for communicating with the Buckaroo Payment Engine 3.0.
124
+ test_files:
125
+ - spec/buckaruby/gateway_spec.rb
126
+ - spec/buckaruby/iban_spec.rb
127
+ - spec/buckaruby/signature_spec.rb
128
+ - spec/buckaruby/support/case_insensitive_hash_spec.rb
129
+ - spec/spec_helper.rb