1# frozen_string_literal: true
2
3require 'spec_helper'
4
5RSpec.describe IdentityProviderPolicy do
6  subject(:policy) { described_class.new(user, provider) }
7
8  let(:user) { User.new }
9  let(:provider) { :a_provider }
10
11  describe '#rules' do
12    it { is_expected.to be_allowed(:link) }
13    it { is_expected.to be_allowed(:unlink) }
14
15    context 'when user is anonymous' do
16      let(:user) { nil }
17
18      it { is_expected.not_to be_allowed(:link) }
19      it { is_expected.not_to be_allowed(:unlink) }
20    end
21
22    %w[saml cas3].each do |provider_name|
23      context "when provider is #{provider_name}" do
24        let(:provider) { provider_name }
25
26        it { is_expected.to be_allowed(:link) }
27        it { is_expected.not_to be_allowed(:unlink) }
28      end
29    end
30  end
31end
32