Sha256: ff4ef3a9b3c66f4e515808aa4d0925d91b19842eb8287fdb3a7eef04d237f01d

Contents?: true

Size: 1.63 KB

Versions: 6

Compression:

Stored size: 1.63 KB

Contents

require 'spec_helper'

describe CandyCheck::AppStore::Verification do
  subject { CandyCheck::AppStore::Verification.new(endpoint, data, secret) }
  let(:endpoint) { 'https://some.endpoint' }
  let(:data)     { 'some_data'   }
  let(:secret)   { 'some_secret' }

  it 'returns a verification failure for status != 0' do
    with_mocked_response('status' => 21_000) do |client, recorded|
      result = subject.call!
      client.receipt_data.must_equal data
      client.secret.must_equal secret

      recorded.first.must_equal [endpoint]

      result.must_be_instance_of CandyCheck::AppStore::VerificationFailure
      result.code.must_equal 21_000
    end
  end

  it 'returns a verification failure when receipt is missing' do
    with_mocked_response({}) do |client, recorded|
      result = subject.call!
      client.receipt_data.must_equal data
      client.secret.must_equal secret

      recorded.first.must_equal [endpoint]

      result.must_be_instance_of CandyCheck::AppStore::VerificationFailure
      result.code.must_equal(-1)
    end
  end

  it 'returns a receipt when status is 0 and receipt exists' do
    response = { 'status' => 0, 'receipt' => { 'item_id' => 'some_id' } }
    with_mocked_response(response) do
      result = subject.call!
      result.must_be_instance_of CandyCheck::AppStore::Receipt
      result.item_id.must_equal('some_id')
    end
  end

  private

  def with_mocked_response(response)
    recorded = []
    dummy    = DummyClient.new(response)
    stub     = proc do |*args|
      recorded << args
      dummy
    end
    CandyCheck::AppStore::Client.stub :new, stub do
      yield dummy, recorded
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
candy_check-0.3.0 spec/app_store/verification_spec.rb
candy_check-0.2.1 spec/app_store/verification_spec.rb
candy_check-0.2.0 spec/app_store/verification_spec.rb
candy_check-0.1.2 spec/app_store/verification_spec.rb
candy_check-0.1.1 spec/app_store/verification_spec.rb
candy_check-0.1.0.pre spec/app_store/verification_spec.rb