debitech_soap 1.2.0 → 1.2.1
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.
- checksums.yaml +5 -5
 - data/.github/workflows/ci.yml +26 -0
 - data/.gitignore +3 -0
 - data/.rubocop.yml +5 -0
 - data/Gemfile +9 -0
 - data/Guardfile +1 -1
 - data/README.markdown +18 -19
 - data/Rakefile +4 -4
 - data/debitech_soap.gemspec +5 -11
 - data/lib/debitech_soap/api.rb +25 -33
 - data/lib/debitech_soap/string_extensions.rb +5 -5
 - data/lib/debitech_soap/version.rb +1 -1
 - data/lib/debitech_soap.rb +1 -1
 - data/spec/debitech_soap_spec.rb +107 -86
 - data/spec/spec_helper.rb +3 -0
 - metadata +10 -66
 - data/.travis.yml +0 -3
 - data/Gemfile.lock +0 -41
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: bd72f376fc8244561d542048c01a2a67f3c6af855b7f5d1f48e79d334935f62c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 58f219906628833960645ee107abed6384bccc57816a56bb7b5d3521b120fbaa
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bf50187ec7a834e00c8260eabe716cefb8291236f357c7c41104afe837961dd37cfb7f1bdb7befa15aba54200ea6bab45175d243722b18de77c0762d2322f17e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0f510554dd1452104ff04df0215a779bb1e9100e3e03a93247368c92b24453af067c7257c47a13844e5eb70044018e1ddbbde3dcdd3d26bc08c31f8c858eb169
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: Ruby CI
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on:
         
     | 
| 
      
 4 
     | 
    
         
            +
              push:
         
     | 
| 
      
 5 
     | 
    
         
            +
                branches: [ master ]
         
     | 
| 
      
 6 
     | 
    
         
            +
              pull_request:
         
     | 
| 
      
 7 
     | 
    
         
            +
                branches: [ master ]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 10 
     | 
    
         
            +
              test:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                strategy:
         
     | 
| 
      
 15 
     | 
    
         
            +
                  matrix:
         
     | 
| 
      
 16 
     | 
    
         
            +
                    ruby-version: ["3.0", "2.7", "2.6", "2.5"]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - uses: actions/checkout@v2
         
     | 
| 
      
 20 
     | 
    
         
            +
                  - name: Set up Ruby ${{ matrix.ruby-version }}
         
     | 
| 
      
 21 
     | 
    
         
            +
                    uses: ruby/setup-ruby@ae9cb3b565e36682a2c6045e4f664388da4c73aa
         
     | 
| 
      
 22 
     | 
    
         
            +
                    with:
         
     | 
| 
      
 23 
     | 
    
         
            +
                      ruby-version: ${{ matrix.ruby-version }}
         
     | 
| 
      
 24 
     | 
    
         
            +
                      bundler-cache: true # runs 'bundle install' and caches installed gems automatically
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - name: Run tests
         
     | 
| 
      
 26 
     | 
    
         
            +
                    run: bundle exec rake
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    ADDED
    
    
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -2,3 +2,12 @@ source "http://rubygems.org" 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # Specify your gem's dependencies in debitech_soap.gemspec
         
     | 
| 
       4 
4 
     | 
    
         
             
            gemspec
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            group :development, :test do
         
     | 
| 
      
 7 
     | 
    
         
            +
              gem "barsoom_utils", github: "barsoom/barsoom_utils"
         
     | 
| 
      
 8 
     | 
    
         
            +
              gem "guard"
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem "guard-rspec"
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem "rake"
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem "rspec"
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem "rubocop"
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
    
        data/Guardfile
    CHANGED
    
    
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -1,5 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            [](https://codeclimate.com/github/joakimk/debitech_soap)
         
     | 
| 
      
 1 
     | 
    
         
            +
            [](https://github.com/barsoom/debitech_soap/actions/workflows/ci.yml)
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            This is a wrapper of the DebiTech SOAP API. It's intended to be API compatible with the DebiTech Java client but also supports a more developer friendly syntax :).
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
         @@ -7,33 +6,33 @@ If you're looking for a more complete solution, check the [debitech](https://git 
     | 
|
| 
       7 
6 
     | 
    
         | 
| 
       8 
7 
     | 
    
         
             
            Installing
         
     | 
| 
       9 
8 
     | 
    
         
             
            ----
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 10 
     | 
    
         
            +
            gem install debitech_soap
         
     | 
| 
      
 11 
     | 
    
         
            +
            ```
         
     | 
| 
       13 
12 
     | 
    
         
             
            Usage
         
     | 
| 
       14 
13 
     | 
    
         
             
            ----
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
15 
     | 
    
         
             
            This is how you would have used the DebiTech Java API:
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
            ```java
         
     | 
| 
      
 17 
     | 
    
         
            +
            include_class "com.verifyeasy.server.VEServer"
         
     | 
| 
      
 18 
     | 
    
         
            +
            veserver = VEServer.get_instance("https://secure.incab.se/verify/server/merchant_name")
         
     | 
| 
      
 19 
     | 
    
         
            +
            ```
         
     | 
| 
       21 
20 
     | 
    
         
             
            This is how you use DebitechSoap:
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'debitech_soap'
         
     | 
| 
      
 23 
     | 
    
         
            +
            veserver = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 24 
     | 
    
         
            +
            ```
         
     | 
| 
       26 
25 
     | 
    
         
             
            Supported arguments
         
     | 
| 
       27 
26 
     | 
    
         
             
            ----
         
     | 
| 
       28 
27 
     | 
    
         | 
| 
       29 
28 
     | 
    
         
             
            Java style (see DebitechSoap::API::PARAMS.keys in lib/debitech_soap.rb):
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
            ```java
         
     | 
| 
      
 30 
     | 
    
         
            +
            veserver.refund(1234567, 23456, 100, "extra")
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```
         
     | 
| 
       33 
32 
     | 
    
         
             
            Hash:
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 34 
     | 
    
         
            +
            veserver.refund(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra")
         
     | 
| 
      
 35 
     | 
    
         
            +
            ```
         
     | 
| 
       37 
36 
     | 
    
         
             
            Custom methods
         
     | 
| 
       38 
37 
     | 
    
         
             
            ----
         
     | 
| 
       39 
38 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "bundler"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "rspec/core/rake_task"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            Bundler::GemHelper.install_tasks
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            desc "Run all specs"
         
     | 
| 
       7 
     | 
    
         
            -
            RSpec::Core::RakeTask.new( 
     | 
| 
       8 
     | 
    
         
            -
              t.pattern =  
     | 
| 
      
 7 
     | 
    
         
            +
            RSpec::Core::RakeTask.new("spec") do |t|
         
     | 
| 
      
 8 
     | 
    
         
            +
              t.pattern = "spec/**/*.rb"
         
     | 
| 
       9 
9 
     | 
    
         
             
            end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            task :default => :spec
         
     | 
    
        data/debitech_soap.gemspec
    CHANGED
    
    | 
         @@ -6,11 +6,12 @@ Gem::Specification.new do |s| 
     | 
|
| 
       6 
6 
     | 
    
         
             
              s.name        = "debitech_soap"
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.version     = DebitechSoap::VERSION
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.platform    = Gem::Platform::RUBY
         
     | 
| 
       9 
     | 
    
         
            -
              s.authors     = ["Joakim Kolsjö",  
     | 
| 
       10 
     | 
    
         
            -
              s.email       = ["joakim.kolsjo@gmail.com",  
     | 
| 
       11 
     | 
    
         
            -
              s.homepage    = "http://github.com/ 
     | 
| 
      
 9 
     | 
    
         
            +
              s.authors     = [ "Joakim Kolsjö", "Niklas Holmgren", "Henrik Nyh", "Daniel Eriksson" ]
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.email       = [ "joakim.kolsjo@gmail.com", "niklas.holmgren@bukowskis.com", "henrik@barsoom.se" ]
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.homepage    = "http://github.com/barsoom/debitech_soap"
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.summary     = %q{A pure ruby way to make payments with DebiTech}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{An implementation of the DebiTech Java API using pure ruby and the SOAP API.}
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.metadata      = { "rubygems_mfa_required" => "true" }
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
              # Earlier versions of HTTPClient may prefer SSLv3 as its ssl_version,
         
     | 
| 
       16 
17 
     | 
    
         
             
              # but 2014-10-15 Debitech started having issues with SSLv3, sometimes returning
         
     | 
| 
         @@ -21,13 +22,6 @@ Gem::Specification.new do |s| 
     | 
|
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
              s.add_dependency "mumboe-soap4r", "~> 1.5.8.4"
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
              s.add_development_dependency "rake"
         
     | 
| 
       25 
     | 
    
         
            -
              s.add_development_dependency 'rspec'
         
     | 
| 
       26 
     | 
    
         
            -
              s.add_development_dependency "guard"
         
     | 
| 
       27 
     | 
    
         
            -
              s.add_development_dependency "guard-rspec"
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
25 
     | 
    
         
             
              s.files         = `git ls-files`.split("\n")
         
     | 
| 
       30 
     | 
    
         
            -
              s. 
     | 
| 
       31 
     | 
    
         
            -
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
       32 
     | 
    
         
            -
              s.require_paths = ["lib"]
         
     | 
| 
      
 26 
     | 
    
         
            +
              s.require_paths = [ "lib" ]
         
     | 
| 
       33 
27 
     | 
    
         
             
            end
         
     | 
    
        data/lib/debitech_soap/api.rb
    CHANGED
    
    | 
         @@ -1,34 +1,28 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "stringio"
         
     | 
| 
       2 
2 
     | 
    
         
             
            $previous_stderr = $stderr
         
     | 
| 
       3 
3 
     | 
    
         
             
            $stderr = StringIO.new
         
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
      
 4 
     | 
    
         
            +
            require "soap/wsdlDriver"
         
     | 
| 
       5 
5 
     | 
    
         
             
            $stderr = $previous_stderr
         
     | 
| 
       6 
     | 
    
         
            -
            require  
     | 
| 
       7 
     | 
    
         
            -
            require  
     | 
| 
      
 6 
     | 
    
         
            +
            require "ostruct"
         
     | 
| 
      
 7 
     | 
    
         
            +
            require "debitech_soap/string_extensions"
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            module DebitechSoap
         
     | 
| 
       10 
10 
     | 
    
         
             
              class API
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                RETURN_DATA = %w{aCSUrl acquirerAddress acquirerAuthCode acquirerAuthResponseCode acquirerCity acquirerConsumerLimit acquirerErrorDescription acquirerFirstName acquirerLastName acquirerMerchantLimit acquirerZipCode amount errorMsg infoCode infoDescription pAReqMsg resultCode resultText verifyID}
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                PARAMS = { 
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                           %w(authReversal auth_reversal) => ["verifyID", "amount", "transID", "extra"],
         
     | 
| 
       27 
     | 
    
         
            -
                           %w(authorize3DS authorize_3ds) => ["verifyID", "paRes", "extra"],
         
     | 
| 
       28 
     | 
    
         
            -
                           %w(subscribe)                  => ["verifyID", "transID", "data", "ip", "extra"],
         
     | 
| 
       29 
     | 
    
         
            -
                           %w(authorizeAndSettle authorize_and_settle) \
         
     | 
| 
       30 
     | 
    
         
            -
                                                          => ["billingFirstName", "billingLastName", "billingAddress", "billingCity", "billingCountry",
         
     | 
| 
       31 
     | 
    
         
            -
                                                              "cc", "expM", "expY", "eMail", "ip", "data", "currency", "transID", "extra"] }
         
     | 
| 
      
 14 
     | 
    
         
            +
                PARAMS = {
         
     | 
| 
      
 15 
     | 
    
         
            +
                  %w(settle)                                         => [ "verifyID", "transID", "amount", "extra" ],
         
     | 
| 
      
 16 
     | 
    
         
            +
                  %w(subscribeAndSettle subscribe_and_settle)        => [ "verifyID", "transID", "data", "ip", "extra" ],
         
     | 
| 
      
 17 
     | 
    
         
            +
                  %w(authorize)                                      => [ "billingFirstName", "billingLastName", "billingAddress", "billingCity", "billingCountry", "cc", "expM", "expY", "eMail", "ip", "data", "currency", "transID", "extra" ],
         
     | 
| 
      
 18 
     | 
    
         
            +
                  %w(authorizeAndSettle3DS authorize_and_settle_3ds) => [ "verifyID", "paRes", "extra" ],
         
     | 
| 
      
 19 
     | 
    
         
            +
                  %w(refund)                                         => [ "verifyID", "transID", "amount", "extra" ],
         
     | 
| 
      
 20 
     | 
    
         
            +
                  %w(askIf3DSEnrolled ask_if_3ds_enrolled)           => [ "billingFirstName", "billingLastName", "billingAddress", "billingCity", "billingCountry", "cc", "expM", "expY", "eMail", "ip", "data", "currency", "transID", "httpAcceptHeader", "httpUserAgentHeader", "method", "referenceNo", "extra" ],
         
     | 
| 
      
 21 
     | 
    
         
            +
                  %w(authReversal auth_reversal)                     => [ "verifyID", "amount", "transID", "extra" ],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  %w(authorize3DS authorize_3ds)                     => [ "verifyID", "paRes", "extra" ],
         
     | 
| 
      
 23 
     | 
    
         
            +
                  %w(subscribe)                                      => [ "verifyID", "transID", "data", "ip", "extra" ],
         
     | 
| 
      
 24 
     | 
    
         
            +
                  %w(authorizeAndSettle authorize_and_settle)        => [ "billingFirstName", "billingLastName", "billingAddress", "billingCity", "billingCountry", "cc", "expM", "expY", "eMail", "ip", "data", "currency", "transID", "extra" ],
         
     | 
| 
      
 25 
     | 
    
         
            +
                }
         
     | 
| 
       32 
26 
     | 
    
         | 
| 
       33 
27 
     | 
    
         
             
                def initialize(opts = {})
         
     | 
| 
       34 
28 
     | 
    
         
             
                  @api_credentials = {}
         
     | 
| 
         @@ -58,7 +52,7 @@ module DebitechSoap 
     | 
|
| 
       58 
52 
     | 
    
         
             
                  disable_stderr do
         
     | 
| 
       59 
53 
     | 
    
         
             
                    # We make a "refund" request, but we make sure to set the amount to 0 and to enter a verify ID that will never match a real one.
         
     | 
| 
       60 
54 
     | 
    
         
             
                    # Previously, we'd confirm credentials with the safer checkSwedishPersNo call, but that seems broken now (always returns false).
         
     | 
| 
       61 
     | 
    
         
            -
                    response_value = return_value(@client.refund(@api_credentials.merge({ : 
     | 
| 
      
 55 
     | 
    
         
            +
                    response_value = return_value(@client.refund(@api_credentials.merge({ verifyID: -1, amount: 0 })))
         
     | 
| 
       62 
56 
     | 
    
         
             
                    result_text = response_value.resultText
         
     | 
| 
       63 
57 
     | 
    
         | 
| 
       64 
58 
     | 
    
         
             
                    case result_text
         
     | 
| 
         @@ -89,18 +83,18 @@ module DebitechSoap 
     | 
|
| 
       89 
83 
     | 
    
         
             
                      define_method(method) do |*args|                                # def refund(*args)
         
     | 
| 
       90 
84 
     | 
    
         
             
                        attributes = @api_credentials.clone
         
     | 
| 
       91 
85 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
                        if args.first.is_a?(Hash) 
     | 
| 
      
 86 
     | 
    
         
            +
                        if args.first.is_a?(Hash)
         
     | 
| 
       93 
87 
     | 
    
         
             
                          attributes.merge!(args.first)
         
     | 
| 
       94 
88 
     | 
    
         
             
                        else
         
     | 
| 
       95 
89 
     | 
    
         
             
                          parameter_order = api_signature(method).last
         
     | 
| 
       96 
90 
     | 
    
         
             
                          args.each_with_index { |argument, i|
         
     | 
| 
       97 
91 
     | 
    
         
             
                            attributes[parameter_order[i].to_sym] = argument
         
     | 
| 
       98 
92 
     | 
    
         
             
                          }
         
     | 
| 
       99 
     | 
    
         
            -
                        end 
     | 
| 
      
 93 
     | 
    
         
            +
                        end
         
     | 
| 
       100 
94 
     | 
    
         
             
                        begin
         
     | 
| 
       101 
95 
     | 
    
         
             
                          client_result = return_value(@client.send(api_signature(method).first.first, attributes))
         
     | 
| 
       102 
96 
     | 
    
         
             
                        rescue Timeout::Error
         
     | 
| 
       103 
     | 
    
         
            -
                          client_result = OpenStruct.new(: 
     | 
| 
      
 97 
     | 
    
         
            +
                          client_result = OpenStruct.new(resultCode: 403, resultText: "SOAP Timeout")
         
     | 
| 
       104 
98 
     | 
    
         
             
                          return return_data(client_result)
         
     | 
| 
       105 
99 
     | 
    
         
             
                        end
         
     | 
| 
       106 
100 
     | 
    
         
             
                        return_data(client_result)
         
     | 
| 
         @@ -130,16 +124,14 @@ module DebitechSoap 
     | 
|
| 
       130 
124 
     | 
    
         
             
                end
         
     | 
| 
       131 
125 
     | 
    
         | 
| 
       132 
126 
     | 
    
         
             
                def disable_stderr
         
     | 
| 
       133 
     | 
    
         
            -
                   
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
                   
     | 
| 
       137 
     | 
    
         
            -
                    $stderr = STDERR
         
     | 
| 
       138 
     | 
    
         
            -
                  end
         
     | 
| 
      
 127 
     | 
    
         
            +
                  $stderr = File.open("/dev/null", "w")
         
     | 
| 
      
 128 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 129 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 130 
     | 
    
         
            +
                  $stderr = STDERR
         
     | 
| 
       139 
131 
     | 
    
         
             
                end
         
     | 
| 
       140 
132 
     | 
    
         | 
| 
       141 
133 
     | 
    
         
             
                def api_signature(method)
         
     | 
| 
       142 
     | 
    
         
            -
                  PARAMS.find {|key,value| key.include?(method.to_s) }
         
     | 
| 
      
 134 
     | 
    
         
            +
                  PARAMS.find { |key, value| key.include?(method.to_s) }
         
     | 
| 
       143 
135 
     | 
    
         
             
                end
         
     | 
| 
       144 
136 
     | 
    
         | 
| 
       145 
137 
     | 
    
         
             
              end
         
     | 
| 
         @@ -4,9 +4,9 @@ module DebitechSoap 
     | 
|
| 
       4 
4 
     | 
    
         
             
                module Underscore
         
     | 
| 
       5 
5 
     | 
    
         
             
                  def underscore
         
     | 
| 
       6 
6 
     | 
    
         
             
                    word = dup
         
     | 
| 
       7 
     | 
    
         
            -
                    word.gsub!(/::/,  
     | 
| 
       8 
     | 
    
         
            -
                    word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
         
     | 
| 
       9 
     | 
    
         
            -
                    word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
         
     | 
| 
      
 7 
     | 
    
         
            +
                    word.gsub!(/::/, "/")
         
     | 
| 
      
 8 
     | 
    
         
            +
                    word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
         
     | 
| 
      
 9 
     | 
    
         
            +
                    word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
         
     | 
| 
       10 
10 
     | 
    
         
             
                    word.tr!("-", "_")
         
     | 
| 
       11 
11 
     | 
    
         
             
                    word.downcase!
         
     | 
| 
       12 
12 
     | 
    
         
             
                    word
         
     | 
| 
         @@ -26,13 +26,13 @@ module DebitechSoap 
     | 
|
| 
       26 
26 
     | 
    
         
             
              end
         
     | 
| 
       27 
27 
     | 
    
         
             
            end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
            unless String.methods.include?( 
     | 
| 
      
 29 
     | 
    
         
            +
            unless String.methods.include?("underscore")
         
     | 
| 
       30 
30 
     | 
    
         
             
              String.class_eval do
         
     | 
| 
       31 
31 
     | 
    
         
             
                include DebitechSoap::StringExtensions::Underscore
         
     | 
| 
       32 
32 
     | 
    
         
             
              end
         
     | 
| 
       33 
33 
     | 
    
         
             
            end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
            unless String.methods.include?( 
     | 
| 
      
 35 
     | 
    
         
            +
            unless String.methods.include?("camelcase")
         
     | 
| 
       36 
36 
     | 
    
         
             
              String.class_eval do
         
     | 
| 
       37 
37 
     | 
    
         
             
                include DebitechSoap::StringExtensions::CamelCase
         
     | 
| 
       38 
38 
     | 
    
         
             
              end
         
     | 
    
        data/lib/debitech_soap.rb
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module DebitechSoap
         
     | 
| 
       2 
2 
     | 
    
         
             
              # It takes a little while to load, so don't load it when rails loads.
         
     | 
| 
       3 
     | 
    
         
            -
              autoload :API, File.expand_path(File.join(File.dirname(__FILE__),  
     | 
| 
      
 3 
     | 
    
         
            +
              autoload :API, File.expand_path(File.join(File.dirname(__FILE__), "debitech_soap/api"))
         
     | 
| 
       4 
4 
     | 
    
         
             
            end
         
     | 
    
        data/spec/debitech_soap_spec.rb
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.expand_path(File.join(File.dirname(__FILE__),  
     | 
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "../lib/debitech_soap"))
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            class MockSoapResult
         
     | 
| 
       4 
4 
     | 
    
         
             
              class MockReturn
         
     | 
| 
         @@ -20,7 +20,7 @@ class MockSoapResultRuby19 
     | 
|
| 
       20 
20 
     | 
    
         
             
              end
         
     | 
| 
       21 
21 
     | 
    
         
             
            end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
            describe DebitechSoap::API do
         
     | 
| 
      
 23 
     | 
    
         
            +
            RSpec.describe DebitechSoap::API do
         
     | 
| 
       24 
24 
     | 
    
         
             
              # When it can't find the wsdl file it throws an error. We need to ensure
         
     | 
| 
       25 
25 
     | 
    
         
             
              # it can find the file (fixed regression bug).
         
     | 
| 
       26 
26 
     | 
    
         
             
              it "can be initialized" do
         
     | 
| 
         @@ -28,74 +28,84 @@ describe DebitechSoap::API do 
     | 
|
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         
             
            end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
            describe DebitechSoap::API, "valid_credentials?" do
         
     | 
| 
      
 31 
     | 
    
         
            +
            RSpec.describe DebitechSoap::API, "valid_credentials?" do
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
              before do
         
     | 
| 
       34 
     | 
    
         
            -
                @client =  
     | 
| 
       35 
     | 
    
         
            -
                SOAP::WSDLDriverFactory. 
     | 
| 
      
 34 
     | 
    
         
            +
                @client = double("client")
         
     | 
| 
      
 35 
     | 
    
         
            +
                allow(SOAP::WSDLDriverFactory).to receive(:new).and_return(double("a-factory", create_rpc_driver: @client))
         
     | 
| 
       36 
36 
     | 
    
         
             
              end
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
              it "should call 'refund' with the credentials and dummy values, returning true if we were authed but failed to refund" do
         
     | 
| 
       39 
     | 
    
         
            -
                @client. 
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 39 
     | 
    
         
            +
                expect(@client).to receive(:refund)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  .with(shopName: "merchant_name", userName: "api_user_name", password: "api_user_password", verifyID: -1, amount: 0)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  .and_return(double("refund", return: double("return", resultText: "error_transID_or_verifyID")))
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                expect(api.valid_credentials?).to eq true
         
     | 
| 
       45 
46 
     | 
    
         
             
              end
         
     | 
| 
       46 
47 
     | 
    
         | 
| 
       47 
48 
     | 
    
         
             
              it "should return false if the service returns an auth error" do
         
     | 
| 
       48 
     | 
    
         
            -
                @client. 
     | 
| 
       49 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(double("refund", return: double("return", resultText: "336 web_service_login_failed")))
         
     | 
| 
      
 50 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                expect(api.valid_credentials?).to eq false
         
     | 
| 
       51 
53 
     | 
    
         
             
              end
         
     | 
| 
       52 
54 
     | 
    
         | 
| 
       53 
55 
     | 
    
         
             
              it "raises if the service returns an unexpected result" do
         
     | 
| 
       54 
     | 
    
         
            -
                @client. 
     | 
| 
       55 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
      
 56 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(double("refund", return: double("return", resultText: "let's have lunch")))
         
     | 
| 
      
 57 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       56 
59 
     | 
    
         
             
                expect { api.valid_credentials? }.to raise_error(%{Unexpected result text: "let's have lunch"})
         
     | 
| 
       57 
60 
     | 
    
         
             
              end
         
     | 
| 
       58 
61 
     | 
    
         | 
| 
       59 
62 
     | 
    
         
             
              it "should work with Ruby 1.9 SOAP API" do
         
     | 
| 
       60 
     | 
    
         
            -
                @client. 
     | 
| 
      
 63 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(double("refund", m_return: double("m_return", resultText: "error_transID_or_verifyID")))
         
     | 
| 
       61 
64 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                expect(api.valid_credentials?).to eq true
         
     | 
| 
       63 
67 
     | 
    
         
             
              end
         
     | 
| 
       64 
68 
     | 
    
         | 
| 
       65 
69 
     | 
    
         
             
            end
         
     | 
| 
       66 
70 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
            describe DebitechSoap::API, "calling a method with java-style arguments" do
         
     | 
| 
      
 71 
     | 
    
         
            +
            RSpec.describe DebitechSoap::API, "calling a method with java-style arguments" do
         
     | 
| 
       68 
72 
     | 
    
         | 
| 
       69 
73 
     | 
    
         
             
              before do
         
     | 
| 
       70 
     | 
    
         
            -
                @client =  
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
                @client = double("client")
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                expect(SOAP::WSDLDriverFactory).to receive(:new).and_return(double("a-factory", create_rpc_driver: @client))
         
     | 
| 
       72 
77 
     | 
    
         
             
              end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
       74 
79 
     | 
    
         
             
              it "should map the arguments to a hash and call the corresponding SOAP method" do
         
     | 
| 
       75 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                expect(@client).to receive("refund")
         
     | 
| 
      
 83 
     | 
    
         
            +
                  .with(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra", shopName: "merchant_name", userName: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 84 
     | 
    
         
            +
                  .and_return(MockSoapResult.new)
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
       79 
86 
     | 
    
         
             
                api.refund(1234567, 23456, 100, "extra")
         
     | 
| 
       80 
87 
     | 
    
         
             
              end
         
     | 
| 
       81 
88 
     | 
    
         | 
| 
       82 
89 
     | 
    
         
             
              it "should camel case method names" do
         
     | 
| 
       83 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                expect(@client).to receive("authorize3DS")
         
     | 
| 
      
 93 
     | 
    
         
            +
                  .with(verifyID: 1234567, paRes: "RES", extra: "extra", shopName: "merchant_name", userName: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 94 
     | 
    
         
            +
                  .and_return(MockSoapResult.new)
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
       87 
96 
     | 
    
         
             
                api.authorize_3ds(1234567, "RES", "extra")
         
     | 
| 
       88 
97 
     | 
    
         
             
              end
         
     | 
| 
       89 
98 
     | 
    
         | 
| 
       90 
99 
     | 
    
         
             
              it "should not keep old attributes when making subsequent api calls" do
         
     | 
| 
       91 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
      
 100 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                expect(@client).to receive("refund")
         
     | 
| 
      
 103 
     | 
    
         
            +
                  .with(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra", shopName: "merchant_name", userName: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 104 
     | 
    
         
            +
                  .and_return(MockSoapResult.new)
         
     | 
| 
      
 105 
     | 
    
         
            +
                expect(@client).to receive("authorize3DS")
         
     | 
| 
      
 106 
     | 
    
         
            +
                  .with(verifyID: 1234567, paRes: "RES", extra: "extra", shopName: "merchant_name", userName: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 107 
     | 
    
         
            +
                  .and_return(MockSoapResult.new)
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
       99 
109 
     | 
    
         
             
                api.refund(1234567, 23456, 100, "extra")
         
     | 
| 
       100 
110 
     | 
    
         
             
                api.authorize3DS(1234567, "RES", "extra")
         
     | 
| 
       101 
111 
     | 
    
         
             
              end
         
     | 
| 
         @@ -103,112 +113,123 @@ describe DebitechSoap::API, "calling a method with java-style arguments" do 
     | 
|
| 
       103 
113 
     | 
    
         
             
              it "should create a return object" do
         
     | 
| 
       104 
114 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       105 
115 
     | 
    
         
             
                mock_soap_result = MockSoapResult.new
         
     | 
| 
       106 
     | 
    
         
            -
                mock_soap_result.return. 
     | 
| 
       107 
     | 
    
         
            -
                @client. 
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
      
 116 
     | 
    
         
            +
                expect(mock_soap_result.return).to receive(:resultText).and_return("success")
         
     | 
| 
      
 117 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                expect(api.refund(1234567, 23456, 100, "extra").resultText).to eq "success"
         
     | 
| 
       109 
120 
     | 
    
         
             
              end
         
     | 
| 
       110 
121 
     | 
    
         | 
| 
       111 
122 
     | 
    
         
             
              it "should return nil when there is no data" do
         
     | 
| 
       112 
123 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       113 
124 
     | 
    
         
             
                mock_soap_result = MockSoapResult.new
         
     | 
| 
       114 
     | 
    
         
            -
                @client. 
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
      
 125 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                expect(api.refund(1234567, 23456, 100, "extra").resultCode).to be_nil
         
     | 
| 
       116 
128 
     | 
    
         
             
              end
         
     | 
| 
       117 
129 
     | 
    
         | 
| 
       118 
130 
     | 
    
         
             
              it "should be able to access the data using getCamelCase, get_underscore and underscore methods" do
         
     | 
| 
       119 
131 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       120 
132 
     | 
    
         
             
                mock_soap_result = MockSoapResult.new
         
     | 
| 
       121 
     | 
    
         
            -
                mock_soap_result.return. 
     | 
| 
       122 
     | 
    
         
            -
                @client. 
     | 
| 
      
 133 
     | 
    
         
            +
                expect(mock_soap_result.return).to receive(:resultText).and_return("success")
         
     | 
| 
      
 134 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
       123 
136 
     | 
    
         
             
                result = api.refund(1234567, 23456, 100, "extra")
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
                result. 
     | 
| 
       126 
     | 
    
         
            -
                result. 
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                expect(result.getResultText).to eq "success"
         
     | 
| 
      
 139 
     | 
    
         
            +
                expect(result.get_result_text).to eq "success"
         
     | 
| 
      
 140 
     | 
    
         
            +
                expect(result.result_text).to eq "success"
         
     | 
| 
       127 
141 
     | 
    
         
             
              end
         
     | 
| 
       128 
142 
     | 
    
         | 
| 
       129 
143 
     | 
    
         
             
              it "should convert the result to an integer when its a number" do
         
     | 
| 
       130 
144 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       131 
145 
     | 
    
         
             
                mock_soap_result = MockSoapResult.new
         
     | 
| 
       132 
     | 
    
         
            -
                mock_soap_result.return. 
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
      
 146 
     | 
    
         
            +
                expect(mock_soap_result.return).to receive(:resultCode).and_return("100")
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
       134 
150 
     | 
    
         
             
                result = api.refund(1234567, 23456, 100, "extra")
         
     | 
| 
       135 
     | 
    
         
            -
                result.resultCode. 
     | 
| 
       136 
     | 
    
         
            -
                result.getResultCode. 
     | 
| 
       137 
     | 
    
         
            -
                result.get_result_code. 
     | 
| 
      
 151 
     | 
    
         
            +
                expect(result.resultCode).to eq 100
         
     | 
| 
      
 152 
     | 
    
         
            +
                expect(result.getResultCode).to eq 100
         
     | 
| 
      
 153 
     | 
    
         
            +
                expect(result.get_result_code).to eq 100
         
     | 
| 
       138 
154 
     | 
    
         
             
              end
         
     | 
| 
       139 
155 
     | 
    
         | 
| 
       140 
156 
     | 
    
         
             
              it "should convert the result to an integer when its zero" do
         
     | 
| 
       141 
157 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       142 
158 
     | 
    
         
             
                mock_soap_result = MockSoapResult.new
         
     | 
| 
       143 
     | 
    
         
            -
                mock_soap_result.return. 
     | 
| 
       144 
     | 
    
         
            -
                @client. 
     | 
| 
      
 159 
     | 
    
         
            +
                expect(mock_soap_result.return).to receive(:resultCode).and_return("0")
         
     | 
| 
      
 160 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
       145 
162 
     | 
    
         
             
                result = api.refund(1234567, 23456, 100, "extra")
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                expect(result.resultCode).to eq 0
         
     | 
| 
       147 
165 
     | 
    
         
             
              end
         
     | 
| 
       148 
166 
     | 
    
         | 
| 
       149 
167 
     | 
    
         
             
              it "should work with Ruby 1.9 SOAP API" do
         
     | 
| 
       150 
168 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       151 
169 
     | 
    
         
             
                mock_soap_result = MockSoapResultRuby19.new
         
     | 
| 
       152 
     | 
    
         
            -
                mock_soap_result.m_return. 
     | 
| 
       153 
     | 
    
         
            -
                @client. 
     | 
| 
      
 170 
     | 
    
         
            +
                expect(mock_soap_result.m_return).to receive(:resultCode).and_return("0")
         
     | 
| 
      
 171 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
       154 
173 
     | 
    
         
             
                result = api.refund(1234567, 23456, 100, "extra")
         
     | 
| 
       155 
     | 
    
         
            -
                result.resultCode.should == 0
         
     | 
| 
       156 
     | 
    
         
            -
              end
         
     | 
| 
       157 
174 
     | 
    
         | 
| 
      
 175 
     | 
    
         
            +
                expect(result.resultCode).to eq 0
         
     | 
| 
      
 176 
     | 
    
         
            +
              end
         
     | 
| 
       158 
177 
     | 
    
         
             
            end
         
     | 
| 
       159 
178 
     | 
    
         | 
| 
       160 
     | 
    
         
            -
            describe DebitechSoap::API, "calling a method with hash-style arguments" do
         
     | 
| 
      
 179 
     | 
    
         
            +
            RSpec.describe DebitechSoap::API, "calling a method with hash-style arguments" do
         
     | 
| 
       161 
180 
     | 
    
         | 
| 
       162 
181 
     | 
    
         
             
              before do
         
     | 
| 
       163 
     | 
    
         
            -
                @client =  
     | 
| 
       164 
     | 
    
         
            -
                SOAP::WSDLDriverFactory. 
     | 
| 
      
 182 
     | 
    
         
            +
                @client = double("client")
         
     | 
| 
      
 183 
     | 
    
         
            +
                expect(SOAP::WSDLDriverFactory).to receive(:new).and_return(double("factory", create_rpc_driver: @client))
         
     | 
| 
       165 
184 
     | 
    
         
             
              end
         
     | 
| 
       166 
185 
     | 
    
         | 
| 
       167 
186 
     | 
    
         
             
              it "should call the corresponding soap method" do
         
     | 
| 
       168 
     | 
    
         
            -
                api = DebitechSoap::API.new(: 
     | 
| 
       169 
     | 
    
         
            -
                @client. 
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
       171 
     | 
    
         
            -
             
     | 
| 
       172 
     | 
    
         
            -
                api.refund(: 
     | 
| 
      
 187 
     | 
    
         
            +
                api = DebitechSoap::API.new(merchant: "merchant_name", username: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 188 
     | 
    
         
            +
                expect(@client).to receive("refund")
         
     | 
| 
      
 189 
     | 
    
         
            +
                  .with(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra", shopName: "merchant_name", userName: "api_user_name", password: "api_user_password")
         
     | 
| 
      
 190 
     | 
    
         
            +
                  .and_return(MockSoapResult.new)
         
     | 
| 
      
 191 
     | 
    
         
            +
                api.refund(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra")
         
     | 
| 
       173 
192 
     | 
    
         
             
              end
         
     | 
| 
       174 
193 
     | 
    
         | 
| 
       175 
194 
     | 
    
         
             
              it "should return data" do
         
     | 
| 
       176 
195 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       177 
196 
     | 
    
         
             
                mock_soap_result = MockSoapResult.new
         
     | 
| 
       178 
     | 
    
         
            -
                mock_soap_result.return. 
     | 
| 
       179 
     | 
    
         
            -
                @client. 
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
      
 197 
     | 
    
         
            +
                expect(mock_soap_result.return).to receive(:resultText).and_return("success")
         
     | 
| 
      
 198 
     | 
    
         
            +
                expect(@client).to receive("refund").and_return(mock_soap_result)
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                expect(api.refund(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra").getResultText).to eq "success"
         
     | 
| 
       181 
201 
     | 
    
         
             
              end
         
     | 
| 
       182 
202 
     | 
    
         | 
| 
       183 
203 
     | 
    
         
             
              it "should work with Ruby 1.9 SOAP API" do
         
     | 
| 
       184 
204 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       185 
205 
     | 
    
         
             
                mock_soap_result = MockSoapResultRuby19.new
         
     | 
| 
       186 
     | 
    
         
            -
                mock_soap_result.m_return. 
     | 
| 
       187 
     | 
    
         
            -
                @client. 
     | 
| 
       188 
     | 
    
         
            -
                result = api.refund(:verifyID => 1234567, :transID => 23456, :amount => 100, :extra => "extra")
         
     | 
| 
       189 
     | 
    
         
            -
                result.getResultText.should == "success"
         
     | 
| 
       190 
     | 
    
         
            -
              end
         
     | 
| 
      
 206 
     | 
    
         
            +
                expect(mock_soap_result.m_return).to receive(:resultText).and_return("success")
         
     | 
| 
      
 207 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_return(mock_soap_result)
         
     | 
| 
       191 
208 
     | 
    
         | 
| 
      
 209 
     | 
    
         
            +
                result = api.refund(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra")
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
                expect(result.getResultText).to eq "success"
         
     | 
| 
      
 212 
     | 
    
         
            +
              end
         
     | 
| 
       192 
213 
     | 
    
         
             
            end
         
     | 
| 
       193 
214 
     | 
    
         | 
| 
       194 
     | 
    
         
            -
            describe DebitechSoap::API, "handling exceptions" do
         
     | 
| 
      
 215 
     | 
    
         
            +
            RSpec.describe DebitechSoap::API, "handling exceptions" do
         
     | 
| 
       195 
216 
     | 
    
         | 
| 
       196 
217 
     | 
    
         
             
              before do
         
     | 
| 
       197 
     | 
    
         
            -
                @client =  
     | 
| 
       198 
     | 
    
         
            -
                SOAP::WSDLDriverFactory. 
     | 
| 
      
 218 
     | 
    
         
            +
                @client = double
         
     | 
| 
      
 219 
     | 
    
         
            +
                expect(SOAP::WSDLDriverFactory).to receive(:new).and_return(double("factory", create_rpc_driver: @client))
         
     | 
| 
       199 
220 
     | 
    
         
             
              end
         
     | 
| 
       200 
221 
     | 
    
         | 
| 
       201 
222 
     | 
    
         
             
              it "should catch Timeout::Error and return 403" do
         
     | 
| 
       202 
223 
     | 
    
         
             
                api = DebitechSoap::API.new
         
     | 
| 
       203 
     | 
    
         
            -
                @client. 
     | 
| 
       204 
     | 
    
         
            -
                result = api.refund(: 
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
       206 
     | 
    
         
            -
                result. 
     | 
| 
      
 224 
     | 
    
         
            +
                expect(@client).to receive(:refund).and_raise(Timeout::Error)
         
     | 
| 
      
 225 
     | 
    
         
            +
                result = api.refund(verifyID: 1234567, transID: 23456, amount: 100, extra: "extra")
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
                expect(result.getResultCode).to eq 403
         
     | 
| 
      
 228 
     | 
    
         
            +
                expect(result.getResultText).to eq "SOAP Timeout"
         
     | 
| 
       207 
229 
     | 
    
         
             
              end
         
     | 
| 
       208 
     | 
    
         
            -
              
         
     | 
| 
       209 
230 
     | 
    
         
             
            end
         
     | 
| 
       210 
231 
     | 
    
         | 
| 
       211 
     | 
    
         
            -
            describe DebitechSoap::API, "overriding ciphers with ENV" do
         
     | 
| 
      
 232 
     | 
    
         
            +
            RSpec.describe DebitechSoap::API, "overriding ciphers with ENV" do
         
     | 
| 
       212 
233 
     | 
    
         
             
              around do |example|
         
     | 
| 
       213 
234 
     | 
    
         
             
                old_env = ENV["DIBS_HTTPCLIENT_CIPHERS"]
         
     | 
| 
       214 
235 
     | 
    
         
             
                ENV["DIBS_HTTPCLIENT_CIPHERS"] = "FOO"
         
     | 
| 
         @@ -221,7 +242,7 @@ describe DebitechSoap::API, "overriding ciphers with ENV" do 
     | 
|
| 
       221 
242 
     | 
    
         | 
| 
       222 
243 
     | 
    
         
             
                httpclient = api.instance_variable_get("@client").streamhandler.client
         
     | 
| 
       223 
244 
     | 
    
         | 
| 
       224 
     | 
    
         
            -
                httpclient. 
     | 
| 
       225 
     | 
    
         
            -
                httpclient.ssl_config.ciphers. 
     | 
| 
      
 245 
     | 
    
         
            +
                expect(httpclient).to be_instance_of HTTPClient
         
     | 
| 
      
 246 
     | 
    
         
            +
                expect(httpclient.ssl_config.ciphers).to eq "FOO"
         
     | 
| 
       226 
247 
     | 
    
         
             
              end
         
     | 
| 
       227 
248 
     | 
    
         
             
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: debitech_soap
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.2.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Joakim Kolsjö
         
     | 
| 
         @@ -11,7 +11,7 @@ authors: 
     | 
|
| 
       11 
11 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
13 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
     | 
    
         
            -
            date:  
     | 
| 
      
 14 
     | 
    
         
            +
            date: 2021-11-19 00:00:00.000000000 Z
         
     | 
| 
       15 
15 
     | 
    
         
             
            dependencies:
         
     | 
| 
       16 
16 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       17 
17 
     | 
    
         
             
              name: httpclient
         
     | 
| 
         @@ -41,62 +41,6 @@ dependencies: 
     | 
|
| 
       41 
41 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       42 
42 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       43 
43 
     | 
    
         
             
                    version: 1.5.8.4
         
     | 
| 
       44 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       45 
     | 
    
         
            -
              name: rake
         
     | 
| 
       46 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       47 
     | 
    
         
            -
                requirements:
         
     | 
| 
       48 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       49 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       50 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       51 
     | 
    
         
            -
              type: :development
         
     | 
| 
       52 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       53 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       54 
     | 
    
         
            -
                requirements:
         
     | 
| 
       55 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       56 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       57 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       58 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
     | 
    
         
            -
              name: rspec
         
     | 
| 
       60 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       61 
     | 
    
         
            -
                requirements:
         
     | 
| 
       62 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       63 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       64 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       65 
     | 
    
         
            -
              type: :development
         
     | 
| 
       66 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       67 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       68 
     | 
    
         
            -
                requirements:
         
     | 
| 
       69 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       70 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       71 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       72 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       73 
     | 
    
         
            -
              name: guard
         
     | 
| 
       74 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       75 
     | 
    
         
            -
                requirements:
         
     | 
| 
       76 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       77 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       78 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       79 
     | 
    
         
            -
              type: :development
         
     | 
| 
       80 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       81 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       82 
     | 
    
         
            -
                requirements:
         
     | 
| 
       83 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       84 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       85 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       86 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       87 
     | 
    
         
            -
              name: guard-rspec
         
     | 
| 
       88 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       89 
     | 
    
         
            -
                requirements:
         
     | 
| 
       90 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       91 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       92 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       93 
     | 
    
         
            -
              type: :development
         
     | 
| 
       94 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       95 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       96 
     | 
    
         
            -
                requirements:
         
     | 
| 
       97 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       98 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       99 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       100 
44 
     | 
    
         
             
            description: An implementation of the DebiTech Java API using pure ruby and the SOAP
         
     | 
| 
       101 
45 
     | 
    
         
             
              API.
         
     | 
| 
       102 
46 
     | 
    
         
             
            email:
         
     | 
| 
         @@ -107,12 +51,12 @@ executables: [] 
     | 
|
| 
       107 
51 
     | 
    
         
             
            extensions: []
         
     | 
| 
       108 
52 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       109 
53 
     | 
    
         
             
            files:
         
     | 
| 
      
 54 
     | 
    
         
            +
            - ".github/workflows/ci.yml"
         
     | 
| 
       110 
55 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
      
 56 
     | 
    
         
            +
            - ".rubocop.yml"
         
     | 
| 
       111 
57 
     | 
    
         
             
            - ".rvmrc"
         
     | 
| 
       112 
     | 
    
         
            -
            - ".travis.yml"
         
     | 
| 
       113 
58 
     | 
    
         
             
            - CHANGELOG
         
     | 
| 
       114 
59 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       115 
     | 
    
         
            -
            - Gemfile.lock
         
     | 
| 
       116 
60 
     | 
    
         
             
            - Guardfile
         
     | 
| 
       117 
61 
     | 
    
         
             
            - LICENCE
         
     | 
| 
       118 
62 
     | 
    
         
             
            - README.markdown
         
     | 
| 
         @@ -124,9 +68,11 @@ files: 
     | 
|
| 
       124 
68 
     | 
    
         
             
            - lib/debitech_soap/version.rb
         
     | 
| 
       125 
69 
     | 
    
         
             
            - lib/service.wsdl
         
     | 
| 
       126 
70 
     | 
    
         
             
            - spec/debitech_soap_spec.rb
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
      
 71 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 72 
     | 
    
         
            +
            homepage: http://github.com/barsoom/debitech_soap
         
     | 
| 
       128 
73 
     | 
    
         
             
            licenses: []
         
     | 
| 
       129 
     | 
    
         
            -
            metadata: 
     | 
| 
      
 74 
     | 
    
         
            +
            metadata:
         
     | 
| 
      
 75 
     | 
    
         
            +
              rubygems_mfa_required: 'true'
         
     | 
| 
       130 
76 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       131 
77 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       132 
78 
     | 
    
         
             
            require_paths:
         
     | 
| 
         @@ -142,10 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       142 
88 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       143 
89 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       144 
90 
     | 
    
         
             
            requirements: []
         
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
     | 
    
         
            -
            rubygems_version: 2.6.11
         
     | 
| 
      
 91 
     | 
    
         
            +
            rubygems_version: 3.2.28
         
     | 
| 
       147 
92 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       148 
93 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       149 
94 
     | 
    
         
             
            summary: A pure ruby way to make payments with DebiTech
         
     | 
| 
       150 
     | 
    
         
            -
            test_files:
         
     | 
| 
       151 
     | 
    
         
            -
            - spec/debitech_soap_spec.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            test_files: []
         
     | 
    
        data/.travis.yml
    DELETED
    
    
    
        data/Gemfile.lock
    DELETED
    
    | 
         @@ -1,41 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            PATH
         
     | 
| 
       2 
     | 
    
         
            -
              remote: .
         
     | 
| 
       3 
     | 
    
         
            -
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                debitech_soap (1.1.1)
         
     | 
| 
       5 
     | 
    
         
            -
                  httpclient (>= 2.4.0)
         
     | 
| 
       6 
     | 
    
         
            -
                  mumboe-soap4r (~> 1.5.8.4)
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            GEM
         
     | 
| 
       9 
     | 
    
         
            -
              remote: http://rubygems.org/
         
     | 
| 
       10 
     | 
    
         
            -
              specs:
         
     | 
| 
       11 
     | 
    
         
            -
                diff-lcs (1.1.3)
         
     | 
| 
       12 
     | 
    
         
            -
                guard (0.8.8)
         
     | 
| 
       13 
     | 
    
         
            -
                  thor (~> 0.14.6)
         
     | 
| 
       14 
     | 
    
         
            -
                guard-rspec (0.5.0)
         
     | 
| 
       15 
     | 
    
         
            -
                  guard (>= 0.8.4)
         
     | 
| 
       16 
     | 
    
         
            -
                httpclient (2.8.3)
         
     | 
| 
       17 
     | 
    
         
            -
                mumboe-soap4r (1.5.8.7)
         
     | 
| 
       18 
     | 
    
         
            -
                  httpclient (>= 2.1.1)
         
     | 
| 
       19 
     | 
    
         
            -
                rake (0.9.2)
         
     | 
| 
       20 
     | 
    
         
            -
                rspec (2.7.0)
         
     | 
| 
       21 
     | 
    
         
            -
                  rspec-core (~> 2.7.0)
         
     | 
| 
       22 
     | 
    
         
            -
                  rspec-expectations (~> 2.7.0)
         
     | 
| 
       23 
     | 
    
         
            -
                  rspec-mocks (~> 2.7.0)
         
     | 
| 
       24 
     | 
    
         
            -
                rspec-core (2.7.1)
         
     | 
| 
       25 
     | 
    
         
            -
                rspec-expectations (2.7.0)
         
     | 
| 
       26 
     | 
    
         
            -
                  diff-lcs (~> 1.1.2)
         
     | 
| 
       27 
     | 
    
         
            -
                rspec-mocks (2.7.0)
         
     | 
| 
       28 
     | 
    
         
            -
                thor (0.14.6)
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            PLATFORMS
         
     | 
| 
       31 
     | 
    
         
            -
              ruby
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
            DEPENDENCIES
         
     | 
| 
       34 
     | 
    
         
            -
              debitech_soap!
         
     | 
| 
       35 
     | 
    
         
            -
              guard
         
     | 
| 
       36 
     | 
    
         
            -
              guard-rspec
         
     | 
| 
       37 
     | 
    
         
            -
              rake
         
     | 
| 
       38 
     | 
    
         
            -
              rspec
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            BUNDLED WITH
         
     | 
| 
       41 
     | 
    
         
            -
               1.15.4
         
     |