Sha256: f16a13eef7c06d073ef071d64f34ecc29a4c5916a6599cc168cb006d1814b062

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

require 'rest_client'
require 'json'

RSpec.describe 'testing complex body params' do
  subject do
    SageoneApiSigner.new({
      request_method: 'post',
      url: 'https://api.sageone.com/test/accounts/v1/contacts',
      signing_secret: 'TestSigningSecret',
      access_token: 'TestToken',
    })
  end

  let(:headers) do
    subject.request_headers('foo')
  end

  it 'with multi-level hashes' do
    subject.body_params = {
      first: 'level',
      second: {
        multi: 'level',
        third: {
          level: 'the last one'
        },
        ok: 'this is enough'
      }
    }

    check_signature!
  end

  it 'with something like "arrays"' do
    subject.body_params = {
      simple: 'param',
      complex: {
        0 => {one:11, two:12, three:13},
        1 => {one:21, two:22, three:23},
      }
    }
    check_signature!
  end

  def check_signature!
    RestClient.post subject.url, subject.body_params, headers

    rescue => e
      raise e unless e.respond_to? :response

      response = JSON.parse(e.response.to_s)

      expect(subject.nonce).to eql(response['nonce'])
      expect(subject.request_method).to eql(response['request_method'])
      expect(subject.access_token).to eql(response['token'])
      expect(subject.base_url).to eql(response['base_url'])
      expect(subject.parameter_string).to eql(response['parameter_string'])
      expect(subject.signature_base_string).to eql(response['signature_base_string'])
      expect(subject.signing_secret).to eql(response['signing_secret'])
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sageone_api_signer-1.3.0 spec/integration/complex_body_params_spec.rb