Commit 65601ade2b5c7f255cba752baee65ead148af58c

Authored by miks
1 parent b85ae028

Specs for deploy_keys

spec/factories.rb
@@ -56,6 +56,11 @@ Factory.add(:key, Key) do |obj| @@ -56,6 +56,11 @@ Factory.add(:key, Key) do |obj|
56 obj.key = File.read(File.join(Rails.root, "db", "pkey.example")) 56 obj.key = File.read(File.join(Rails.root, "db", "pkey.example"))
57 end 57 end
58 58
  59 +Factory.add(:deploy_key, DeployKey) do |obj|
  60 + obj.title = "Example key"
  61 + obj.key = File.read(File.join(Rails.root, "db", "pkey.example"))
  62 +end
  63 +
59 Factory.add(:web_hook, WebHook) do |obj| 64 Factory.add(:web_hook, WebHook) do |obj|
60 obj.url = Faker::Internet.url 65 obj.url = Faker::Internet.url
61 end 66 end
spec/models/deploy_key_spec.rb
@@ -10,11 +10,7 @@ describe DeployKey do @@ -10,11 +10,7 @@ describe DeployKey do
10 it { should validate_presence_of(:key) } 10 it { should validate_presence_of(:key) }
11 end 11 end
12 12
13 - describe "Methods" do  
14 - it { should respond_to :projects }  
15 - end  
16 -  
17 - it { Factory.create(:key, 13 + it { Factory.create(:deploy_key,
18 :project => Factory(:project)).should be_valid } 14 :project => Factory(:project)).should be_valid }
19 end 15 end
20 # == Schema Information 16 # == Schema Information
spec/requests/projects_deploy_keys_spec.rb 0 → 100644
@@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
  1 +require 'spec_helper'
  2 +
  3 +describe "DeployKeys" do
  4 + let(:project) { Factory :project }
  5 +
  6 + before do
  7 + login_as :user
  8 + project.add_access(@user, :read, :write, :admin)
  9 + end
  10 +
  11 + describe "GET /keys" do
  12 + before do
  13 + @key = Factory :deploy_key, :project => project
  14 + visit project_deploy_keys_path(project)
  15 + end
  16 +
  17 + subject { page }
  18 +
  19 + it { should have_content(@key.title) }
  20 +
  21 + describe "Destroy" do
  22 + before { visit project_deploy_key_path(project, @key) }
  23 +
  24 + it "should remove entry" do
  25 + expect {
  26 + click_link "Remove"
  27 + }.to change { project.deploy_keys.count }.by(-1)
  28 + end
  29 + end
  30 + end
  31 +
  32 + describe "New key", :js => true do
  33 + before do
  34 + visit project_deploy_keys_path(project)
  35 + click_link "Add new"
  36 + end
  37 +
  38 + it "should open new key popup" do
  39 + page.should have_content("Add new public key")
  40 + end
  41 +
  42 + describe "fill in" do
  43 + before do
  44 + fill_in "deploy_key_title", :with => "laptop"
  45 + fill_in "deploy_key_key", :with => "publickey234="
  46 + end
  47 +
  48 + it { expect { click_button "Save" }.to change {Key.count}.by(1) }
  49 +
  50 + it "should add new key to table" do
  51 + click_button "Save"
  52 +
  53 + page.should_not have_content("Add new public key")
  54 + page.should have_content "laptop"
  55 + end
  56 + end
  57 + end
  58 +
  59 + describe "Show page" do
  60 + before do
  61 + @key = Factory :deploy_key, :project => project
  62 + visit project_deploy_key_path(project, @key)
  63 + end
  64 +
  65 + it { page.should have_content @key.title }
  66 + it { page.should have_content @key.key[0..10] }
  67 + end
  68 +end
spec/requests/projects_security_spec.rb
@@ -105,6 +105,15 @@ describe "Projects" do @@ -105,6 +105,15 @@ describe "Projects" do
105 it { edit_project_path(@project).should be_denied_for :visitor } 105 it { edit_project_path(@project).should be_denied_for :visitor }
106 end 106 end
107 107
  108 + describe "GET /project_code/deploy_keys" do
  109 + it { project_deploy_keys_path(@project).should be_allowed_for @u1 }
  110 + it { project_deploy_keys_path(@project).should be_denied_for @u3 }
  111 + it { project_deploy_keys_path(@project).should be_denied_for :admin }
  112 + it { project_deploy_keys_path(@project).should be_denied_for @u2 }
  113 + it { project_deploy_keys_path(@project).should be_denied_for :user }
  114 + it { project_deploy_keys_path(@project).should be_denied_for :visitor }
  115 + end
  116 +
108 describe "GET /project_code/issues" do 117 describe "GET /project_code/issues" do
109 it { project_issues_path(@project).should be_allowed_for @u1 } 118 it { project_issues_path(@project).should be_allowed_for @u1 }
110 it { project_issues_path(@project).should be_allowed_for @u3 } 119 it { project_issues_path(@project).should be_allowed_for @u3 }