Sha256: c381ac696b86f6f45e9a3c464b31ecfc84da2c47697b2b29d1d5311be69ce314

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true
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

1 entries across 1 versions & 1 rubygems

Version Path
apress-api-1.24.2 spec/services/auth_service_spec.rb