adyen 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'adyen'
3
- s.version = "0.2.2"
4
- s.date = "2009-11-18"
3
+ s.version = "0.2.3"
4
+ s.date = "2009-12-11"
5
5
 
6
6
  s.summary = "Integrate Adyen payment services in you Ruby on Rails application."
7
7
  s.description = <<-EOS
@@ -1,4 +1,27 @@
1
1
  module Adyen
2
+
3
+ # Loads configuration settings from a Hash.
4
+ #
5
+ # This method is called recursively for every module. The second
6
+ # argument is used to denote the current working module.
7
+ def self.load_config(hash, mod = Adyen)
8
+ hash.each do |key, value|
9
+ if key.to_s =~ /^[a-z]/ && mod.respond_to?(:"#{key}=")
10
+ mod.send(:"#{key}=", value)
11
+ elsif key.to_s =~ /^[A-Z]/
12
+ begin
13
+ submodule = mod.const_get(key)
14
+ rescue LoadError => e
15
+ raise "Unknown Adyen module to configure: #{mod.name}::#{key}"
16
+ end
17
+ self.load_config(value, submodule)
18
+ else
19
+ raise "Unknown configuration variable: '#{key}' for #{mod}"
20
+ end
21
+ end
22
+ end
23
+
24
+ # The Rails environment for which to use to Adyen "live" environment.
2
25
  LIVE_RAILS_ENVIRONMENTS = ['production']
3
26
 
4
27
  # Setter voor the current Adyen environment.
@@ -22,7 +45,7 @@ module Adyen
22
45
  def self.const_missing(sym)
23
46
  require "adyen/#{sym.to_s.downcase}"
24
47
  return Adyen.const_get(sym)
25
- rescue
48
+ rescue Exception => e
26
49
  super(sym)
27
50
  end
28
51
  end
@@ -13,12 +13,19 @@ module Adyen
13
13
  @skins ||= {}
14
14
  end
15
15
 
16
+ def self.skins=(hash)
17
+ @skins = hash.inject({}) do |skins, (name, skin)|
18
+ skins[name.to_sym] = skin.merge(:name => name.to_sym)
19
+ skins
20
+ end
21
+ end
22
+
16
23
  def self.register_skin(name, skin_code, shared_secret)
17
- self.skins[name] = {:name => name, :skin_code => skin_code, :shared_secret => shared_secret }
24
+ self.skins[name.to_sym] = {:name => name.to_sym, :skin_code => skin_code, :shared_secret => shared_secret }
18
25
  end
19
26
 
20
27
  def self.skin_by_name(skin_name)
21
- self.skins[skin_name]
28
+ self.skins[skin_name.to_sym]
22
29
  end
23
30
 
24
31
  def self.skin_by_code(skin_code)
@@ -1,17 +1,50 @@
1
1
  require "#{File.dirname(__FILE__)}/spec_helper.rb"
2
2
 
3
3
  describe Adyen do
4
+
5
+ describe '.load_config' do
6
+
7
+ it "should set the environment correctly from the gonfiguration" do
8
+ Adyen.load_config(:environment => 'from_config')
9
+ Adyen.environment.should == 'from_config'
10
+ end
11
+
12
+ it "should recursively set settings for submodules" do
13
+ Adyen.load_config(:SOAP => { :username => 'foo', :password => 'bar' },
14
+ :Form => { :default_parameters => { :merchant_account => 'us' }})
15
+ Adyen::SOAP.username.should == 'foo'
16
+ Adyen::SOAP.password.should == 'bar'
17
+ Adyen::Form.default_parameters.should == { :merchant_account => 'us' }
18
+ end
19
+
20
+ it "should raise an error when using a non-existing module" do
21
+ lambda { Adyen.load_config(:Unknown => { :a => 'b' }) }.should raise_error
22
+ end
23
+
24
+ it "should raise an error when using a non-existing setting" do
25
+ lambda { Adyen.load_config(:blah => 1234) }.should raise_error
26
+ end
27
+
28
+ it "should set skins from a hash configuration" do
29
+ Adyen.load_config(:Form => {:skins => {
30
+ :first => { :skin_code => '1234', :shared_secret => 'abcd' },
31
+ :second => { :skin_code => '5678', :shared_secret => 'efgh' }}})
32
+
33
+ Adyen::Form.skins.should == {
34
+ :first => {:skin_code => "1234", :name => :first, :shared_secret => "abcd" },
35
+ :second => {:skin_code => "5678", :name => :second, :shared_secret => "efgh" }}
36
+ end
37
+ end
38
+
4
39
  describe Adyen::Encoding do
5
40
  it "should a hmac_base64 correcly" do
6
41
  encoded_str = Adyen::Encoding.hmac_base64('bla', 'bla')
7
- encoded_str.should_not be_blank
8
- encoded_str.size.should == 28
42
+ encoded_str.should == '6nItEkVpIYF+i1RwrEyQ7RHmrfU='
9
43
  end
10
44
 
11
45
  it "should gzip_base64 correcly" do
12
46
  encoded_str = Adyen::Encoding.gzip_base64('bla')
13
- encoded_str.should_not be_blank
14
- encoded_str.size.should == 32
47
+ encoded_str.length.should == 32
15
48
  end
16
49
  end
17
50
 
@@ -50,4 +83,4 @@ describe Adyen do
50
83
  Adyen::Formatter::Price.from_cents(1234).should be_kind_of(BigDecimal)
51
84
  end
52
85
  end
53
- end
86
+ end
@@ -3,6 +3,7 @@ $: << File.join(File.dirname(__FILE__), '..', 'lib')
3
3
  require 'rubygems'
4
4
  require 'spec'
5
5
  require 'spec/autorun'
6
+ require 'active_support'
6
7
 
7
8
  require 'adyen'
8
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adyen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willem van Bergen
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-11-18 00:00:00 +01:00
13
+ date: 2009-12-11 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency