Commit 822dac87eccad5044e0e82fd671e8b71f21942a5

Authored by Dmitriy Zaporozhets
1 parent 882029d9

Extract tests for project hooks API

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
spec/requests/api/project_hooks_spec.rb 0 → 100644
... ... @@ -0,0 +1,132 @@
  1 +require 'spec_helper'
  2 +
  3 +describe API::API, 'ProjectHooks' do
  4 + include ApiHelpers
  5 + before(:each) { enable_observers }
  6 + after(:each) { disable_observers }
  7 +
  8 + let(:user) { create(:user) }
  9 + let(:user3) { create(:user) }
  10 + let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
  11 + let!(:hook) { create(:project_hook, project: project, url: "http://example.com") }
  12 +
  13 + before do
  14 + project.team << [user, :master]
  15 + project.team << [user3, :developer]
  16 + end
  17 +
  18 + describe "GET /projects/:id/hooks" do
  19 + context "authorized user" do
  20 + it "should return project hooks" do
  21 + get api("/projects/#{project.id}/hooks", user)
  22 + response.status.should == 200
  23 +
  24 + json_response.should be_an Array
  25 + json_response.count.should == 1
  26 + json_response.first['url'].should == "http://example.com"
  27 + end
  28 + end
  29 +
  30 + context "unauthorized user" do
  31 + it "should not access project hooks" do
  32 + get api("/projects/#{project.id}/hooks", user3)
  33 + response.status.should == 403
  34 + end
  35 + end
  36 + end
  37 +
  38 + describe "GET /projects/:id/hooks/:hook_id" do
  39 + context "authorized user" do
  40 + it "should return a project hook" do
  41 + get api("/projects/#{project.id}/hooks/#{hook.id}", user)
  42 + response.status.should == 200
  43 + json_response['url'].should == hook.url
  44 + end
  45 +
  46 + it "should return a 404 error if hook id is not available" do
  47 + get api("/projects/#{project.id}/hooks/1234", user)
  48 + response.status.should == 404
  49 + end
  50 + end
  51 +
  52 + context "unauthorized user" do
  53 + it "should not access an existing hook" do
  54 + get api("/projects/#{project.id}/hooks/#{hook.id}", user3)
  55 + response.status.should == 403
  56 + end
  57 + end
  58 +
  59 + it "should return a 404 error if hook id is not available" do
  60 + get api("/projects/#{project.id}/hooks/1234", user)
  61 + response.status.should == 404
  62 + end
  63 + end
  64 +
  65 + describe "POST /projects/:id/hooks" do
  66 + it "should add hook to project" do
  67 + expect {
  68 + post api("/projects/#{project.id}/hooks", user),
  69 + url: "http://example.com"
  70 + }.to change {project.hooks.count}.by(1)
  71 + response.status.should == 201
  72 + end
  73 +
  74 + it "should return a 400 error if url not given" do
  75 + post api("/projects/#{project.id}/hooks", user)
  76 + response.status.should == 400
  77 + end
  78 +
  79 + it "should return a 422 error if url not valid" do
  80 + post api("/projects/#{project.id}/hooks", user), "url" => "ftp://example.com"
  81 + response.status.should == 422
  82 + end
  83 + end
  84 +
  85 + describe "PUT /projects/:id/hooks/:hook_id" do
  86 + it "should update an existing project hook" do
  87 + put api("/projects/#{project.id}/hooks/#{hook.id}", user),
  88 + url: 'http://example.org'
  89 + response.status.should == 200
  90 + json_response['url'].should == 'http://example.org'
  91 + end
  92 +
  93 + it "should return 404 error if hook id not found" do
  94 + put api("/projects/#{project.id}/hooks/1234", user), url: 'http://example.org'
  95 + response.status.should == 404
  96 + end
  97 +
  98 + it "should return 400 error if url is not given" do
  99 + put api("/projects/#{project.id}/hooks/#{hook.id}", user)
  100 + response.status.should == 400
  101 + end
  102 +
  103 + it "should return a 422 error if url is not valid" do
  104 + put api("/projects/#{project.id}/hooks/#{hook.id}", user), url: 'ftp://example.com'
  105 + response.status.should == 422
  106 + end
  107 + end
  108 +
  109 + describe "DELETE /projects/:id/hooks/:hook_id" do
  110 + it "should delete hook from project" do
  111 + expect {
  112 + delete api("/projects/#{project.id}/hooks/#{hook.id}", user)
  113 + }.to change {project.hooks.count}.by(-1)
  114 + response.status.should == 200
  115 + end
  116 +
  117 + it "should return success when deleting hook" do
  118 + delete api("/projects/#{project.id}/hooks/#{hook.id}", user)
  119 + response.status.should == 200
  120 + end
  121 +
  122 + it "should return success when deleting non existent hook" do
  123 + delete api("/projects/#{project.id}/hooks/42", user)
  124 + response.status.should == 200
  125 + end
  126 +
  127 + it "should return a 405 error if hook id not given" do
  128 + delete api("/projects/#{project.id}/hooks", user)
  129 + response.status.should == 405
  130 + end
  131 + end
  132 +end
... ...
spec/requests/api/projects_spec.rb
... ... @@ -10,7 +10,6 @@ describe API::API do
10 10 let(:user3) { create(:user) }
11 11 let(:admin) { create(:admin) }
12 12 let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
13   - let!(:hook) { create(:project_hook, project: project, url: "http://example.com") }
14 13 let!(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
15 14 let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
16 15 let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
... ... @@ -439,121 +438,6 @@ describe API::API do
439 438 end
440 439 end
441 440  
442   - describe "GET /projects/:id/hooks" do
443   - context "authorized user" do
444   - it "should return project hooks" do
445   - get api("/projects/#{project.id}/hooks", user)
446   - response.status.should == 200
447   -
448   - json_response.should be_an Array
449   - json_response.count.should == 1
450   - json_response.first['url'].should == "http://example.com"
451   - end
452   - end
453   -
454   - context "unauthorized user" do
455   - it "should not access project hooks" do
456   - get api("/projects/#{project.id}/hooks", user3)
457   - response.status.should == 403
458   - end
459   - end
460   - end
461   -
462   - describe "GET /projects/:id/hooks/:hook_id" do
463   - context "authorized user" do
464   - it "should return a project hook" do
465   - get api("/projects/#{project.id}/hooks/#{hook.id}", user)
466   - response.status.should == 200
467   - json_response['url'].should == hook.url
468   - end
469   -
470   - it "should return a 404 error if hook id is not available" do
471   - get api("/projects/#{project.id}/hooks/1234", user)
472   - response.status.should == 404
473   - end
474   - end
475   -
476   - context "unauthorized user" do
477   - it "should not access an existing hook" do
478   - get api("/projects/#{project.id}/hooks/#{hook.id}", user3)
479   - response.status.should == 403
480   - end
481   - end
482   -
483   - it "should return a 404 error if hook id is not available" do
484   - get api("/projects/#{project.id}/hooks/1234", user)
485   - response.status.should == 404
486   - end
487   - end
488   -
489   - describe "POST /projects/:id/hooks" do
490   - it "should add hook to project" do
491   - expect {
492   - post api("/projects/#{project.id}/hooks", user),
493   - url: "http://example.com"
494   - }.to change {project.hooks.count}.by(1)
495   - response.status.should == 201
496   - end
497   -
498   - it "should return a 400 error if url not given" do
499   - post api("/projects/#{project.id}/hooks", user)
500   - response.status.should == 400
501   - end
502   -
503   - it "should return a 422 error if url not valid" do
504   - post api("/projects/#{project.id}/hooks", user), "url" => "ftp://example.com"
505   - response.status.should == 422
506   - end
507   - end
508   -
509   - describe "PUT /projects/:id/hooks/:hook_id" do
510   - it "should update an existing project hook" do
511   - put api("/projects/#{project.id}/hooks/#{hook.id}", user),
512   - url: 'http://example.org'
513   - response.status.should == 200
514   - json_response['url'].should == 'http://example.org'
515   - end
516   -
517   - it "should return 404 error if hook id not found" do
518   - put api("/projects/#{project.id}/hooks/1234", user), url: 'http://example.org'
519   - response.status.should == 404
520   - end
521   -
522   - it "should return 400 error if url is not given" do
523   - put api("/projects/#{project.id}/hooks/#{hook.id}", user)
524   - response.status.should == 400
525   - end
526   -
527   - it "should return a 422 error if url is not valid" do
528   - put api("/projects/#{project.id}/hooks/#{hook.id}", user), url: 'ftp://example.com'
529   - response.status.should == 422
530   - end
531   - end
532   -
533   - describe "DELETE /projects/:id/hooks/:hook_id" do
534   - it "should delete hook from project" do
535   - expect {
536   - delete api("/projects/#{project.id}/hooks/#{hook.id}", user)
537   - }.to change {project.hooks.count}.by(-1)
538   - response.status.should == 200
539   - end
540   -
541   - it "should return success when deleting hook" do
542   - delete api("/projects/#{project.id}/hooks/#{hook.id}", user)
543   - response.status.should == 200
544   - end
545   -
546   - it "should return success when deleting non existent hook" do
547   - delete api("/projects/#{project.id}/hooks/42", user)
548   - response.status.should == 200
549   - end
550   -
551   - it "should return a 405 error if hook id not given" do
552   - delete api("/projects/#{project.id}/hooks", user)
553   - response.status.should == 405
554   - end
555   - end
556   -
557 441 describe "GET /projects/:id/snippets" do
558 442 it "should return an array of project snippets" do
559 443 get api("/projects/#{project.id}/snippets", user)
... ...