Sha256: 04e1b248aff00bd49a676c278b393690c1513be135f0e2e1e770d83d9c134f30

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

require "spec_helper"
require "rack/request"
require "rack/mock"

describe Apress::Api::AuthService do
  let(:request) { Rack::Request.new(Rack::MockRequest.env_for("/", "HTTP_HOST" => "ex.com")) }
  let(:service) { described_class.new(request) }
  let(:client) { create "api/client" }
  let(:params) { {} }

  before do
    allow(request).to receive(:query_parameters).and_return(params)
  end

  context "when client not found" do
    it { expect(service.call).to be false }
  end

  context "when find client from headers" do
    it do
      ApiAuth.sign!(request, client.access_id, client.secret_token)
      service.call
      expect(service.client).to eq client
    end
  end

  context "when find client from query params" do
    let(:params) { {access_id: client.access_id} }

    it do
      service.call
      expect(service.client).to eq client
    end
  end

  context "when secret token expired" do
    it do
      client
      Timecop.freeze(1.year.since)
      ApiAuth.sign!(request, client.access_id, client.secret_token)

      expect(service.call).to be false

      Timecop.return
    end
  end

  context "when not check signature" do
    let(:params) { {access_id: client.access_id, check_signature: 0} }

    context "when rails env production" do
      it do
        allow(Rails.env).to receive(:production?).and_return(true)
        expect(service.call).to be false
      end
    end

    context "when rails env not production" do
      it do
        expect(service.call).to be true
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
apress-api-1.24.0 spec/services/auth_service_spec.rb
apress-api-1.23.0 spec/services/auth_service_spec.rb
apress-api-1.22.1 spec/services/auth_service_spec.rb
apress-api-1.22.0 spec/services/auth_service_spec.rb