1# frozen_string_literal: true 2 3require 'spec_helper' 4 5RSpec.describe Terraform::StateVersionPolicy do 6 let_it_be(:project) { create(:project) } 7 let_it_be(:terraform_state) { create(:terraform_state, :with_version, project: project)} 8 9 subject { described_class.new(user, terraform_state.latest_version) } 10 11 describe 'rules' do 12 context 'no access' do 13 let(:user) { create(:user) } 14 15 it { is_expected.to be_disallowed(:read_terraform_state) } 16 it { is_expected.to be_disallowed(:admin_terraform_state) } 17 end 18 19 context 'developer' do 20 let(:user) { create(:user, developer_projects: [project]) } 21 22 it { is_expected.to be_allowed(:read_terraform_state) } 23 it { is_expected.to be_disallowed(:admin_terraform_state) } 24 end 25 26 context 'maintainer' do 27 let(:user) { create(:user, maintainer_projects: [project]) } 28 29 it { is_expected.to be_allowed(:read_terraform_state) } 30 it { is_expected.to be_allowed(:admin_terraform_state) } 31 end 32 end 33end 34