Commit 822dac87eccad5044e0e82fd671e8b71f21942a5
1 parent
882029d9
Exists in
master
and in
4 other branches
Extract tests for project hooks API
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
2 changed files
with
132 additions
and
116 deletions
Show diff stats
| ... | ... | @@ -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) | ... | ... |