admin_runners_spec.rb 2.47 KB
Newer Older
1 2 3 4
require 'spec_helper'

describe "Admin Runners" do
  before do
5
    login_as :admin
6 7 8 9
  end

  describe "Runners page" do
    before do
Valery Sizov's avatar
Valery Sizov committed
10 11 12
      runner = FactoryGirl.create(:ci_runner)
      commit = FactoryGirl.create(:ci_commit)
      FactoryGirl.create(:ci_build, commit: commit, runner_id: runner.id)
13
      visit admin_runners_path
14 15 16 17 18 19 20 21
    end

    it { page.has_text? "Manage Runners" }
    it { page.has_text? "To register a new runner" }
    it { page.has_text? "Runners with last contact less than a minute ago: 1" }

    describe 'search' do
      before do
22 23
        FactoryGirl.create :ci_runner, description: 'runner-foo'
        FactoryGirl.create :ci_runner, description: 'runner-bar'
24

25
        search_form = find('#runners-search')
26
        search_form.fill_in 'search', with: 'runner-foo'
27
        search_form.click_button 'Search'
28 29
      end

30 31
      it { expect(page).to have_content("runner-foo") }
      it { expect(page).not_to have_content("runner-bar") }
32 33 34 35
    end
  end

  describe "Runner show page" do
Valery Sizov's avatar
Valery Sizov committed
36
    let(:runner) { FactoryGirl.create :ci_runner }
37 38

    before do
39 40 41
      @project1 = FactoryGirl.create(:empty_project)
      @project2 = FactoryGirl.create(:empty_project)
      visit admin_runner_path(runner)
42 43 44
    end

    describe 'runner info' do
45
      it { expect(find_field('runner_token').value).to eq runner.token }
46 47 48
    end

    describe 'projects' do
49 50
      it { expect(page).to have_content(@project1.name_with_namespace) }
      it { expect(page).to have_content(@project2.name_with_namespace) }
51 52 53 54
    end

    describe 'search' do
      before do
55
        search_form = find('#runner-projects-search')
56
        search_form.fill_in 'search', with: @project1.name
57
        search_form.click_button 'Search'
58 59
      end

60 61
      it { expect(page).to have_content(@project1.name_with_namespace) }
      it { expect(page).not_to have_content(@project2.name_with_namespace) }
62 63
    end
  end
64 65

  describe 'runners registration token' do
66
    let!(:token) { current_application_settings.runners_registration_token }
67
    before { visit admin_runners_path }
68 69 70 71 72 73 74 75 76 77 78 79 80 81

    it 'has a registration token' do
      expect(page).to have_content("Registration token is #{token}")
      expect(page).to have_selector('#runners-token', text: token)
    end

    describe 'reload registration token' do
      let(:page_token) { find('#runners-token').text }

      before do
        click_button 'Reset runners registration token'
      end

      it 'changes registration token' do
82
        expect(page_token).not_to eq token
83 84 85
      end
    end
  end
86
end