tracings_controller_spec.rb 2.11 KB
Newer Older
Simon Knox's avatar
Simon Knox committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
# frozen_string_literal: true

require 'spec_helper'

describe Projects::TracingsController do
  set(:user) { create(:user) }

  describe 'GET show' do
    describe 'with valid license' do
      before do
        stub_licensed_features(tracing: true)
      end

      shared_examples 'authorized user' do |visibility_level|
        let(:project) { create(:project, visibility_level) }

        before do
          project.add_reporter(user)
          sign_in(user)
        end

        it 'renders OK' do
          get :show, namespace_id: project.namespace, project_id: project

          expect(response).to have_gitlab_http_status(200)
          expect(response).to render_template(:show)
        end
      end

      it_behaves_like 'authorized user', :public
      it_behaves_like 'authorized user', :internal
      it_behaves_like 'authorized user', :private

      shared_examples 'unauthorized user' do |visibility_level|
        let(:project) { create(:project, visibility_level) }

        before do
          sign_in(user)
        end

        it 'returns 404' do
          get :show, namespace_id: project.namespace, project_id: project

          expect(response).to have_gitlab_http_status(:not_found)
        end
      end

      it_behaves_like 'unauthorized user', :public
      it_behaves_like 'unauthorized user', :internal
      it_behaves_like 'unauthorized user', :private
    end

    context 'with invalid license' do
      before do
        stub_licensed_features(tracing: false)
        sign_in(user)
      end

      shared_examples 'invalid license' do |visibility_level|
        let(:project) { create(:project, visibility_level) }

        before do
          stub_licensed_features(tracing: false)
          project.add_reporter(user)
          sign_in(user)
        end

        it 'returns 404' do
          get :show, namespace_id: project.namespace, project_id: project

          expect(response).to have_gitlab_http_status(:not_found)
        end
      end

      it_behaves_like 'invalid license', :public
      it_behaves_like 'invalid license', :internal
      it_behaves_like 'invalid license', :private
    end
  end
end