Commit 65601ade2b5c7f255cba752baee65ead148af58c
1 parent
b85ae028
Exists in
master
and in
4 other branches
Specs for deploy_keys
Showing
4 changed files
with
83 additions
and
5 deletions
Show diff stats
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 |
@@ -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 } |