Sha256: 2d81ff50ec882ec23a487d132b27626d03101731c955095ce3da9f155fa54548
Contents?: true
Size: 1.92 KB
Versions: 3
Compression:
Stored size: 1.92 KB
Contents
require 'spec_helper' RSpec.describe Airbrake::Rack::User do let(:faulty_app) do proc { raise AirbrakeTestError } end let(:endpoint) do 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822' end let(:user) do OpenStruct.new( id: 1, email: 'qa@example.com', username: 'qa-dept', first_name: 'Bingo', last_name: 'Bongo' ) end def env_for(url, opts = {}) Rack::MockRequest.env_for(url, opts) end before do stub_request(:post, endpoint).to_return(status: 201, body: '{}') end describe ".extract" do context "when the Warden authentication framework is present" do it "returns the user" do warden = instance_double('Warden::Proxy') allow(warden).to receive(:user) { user } retval = described_class.extract(env_for('/', 'warden' => warden)) expect(retval).to be_a(described_class) end end context "when the Warden authentication framework is absent" do it "returns nil" do retval = described_class.extract(env_for('/')) expect(retval).to be_nil end end end describe "#to_hash" do context "when Rack user contains all expect fields" do let(:rack_user) { described_class.new(user).to_hash[:user] } it "contains the 'id' key" do expect(rack_user.to_hash).to include(:id) end it "contains the 'name' key" do expect(rack_user.to_hash).to include(:name) end it "contains the 'username' key" do expect(rack_user.to_hash).to include(:username) end it "contains the 'email' key" do expect(rack_user.to_hash).to include(:email) end end context "when Rack user doesn't contain any of the expect fields" do let(:rack_user) { described_class.new(OpenStruct.new) } it "is empty" do expect(rack_user.to_hash).to be_empty end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
airbrake-5.0.1 | spec/unit/rack/user_spec.rb |
airbrake-5.0.0 | spec/unit/rack/user_spec.rb |
airbrake-5.0.0.rc.1 | spec/unit/rack/user_spec.rb |