Merge branch 'master' into fix_project_access_notification
This commit is contained in:
commit
c09d233611
74 changed files with 1157 additions and 845 deletions
|
@ -2,7 +2,7 @@ require 'spec_helper'
|
|||
|
||||
describe TreeHelper do
|
||||
describe '#markup?' do
|
||||
%w(mdown md markdown textile rdoc org creole mediawiki rst asciidoc pod).each do |type|
|
||||
%w(textile rdoc org creole mediawiki rst asciidoc pod).each do |type|
|
||||
it "returns true for #{type} files" do
|
||||
markup?("README.#{type}").should be_true
|
||||
end
|
||||
|
|
|
@ -73,4 +73,30 @@ describe User do
|
|||
user.authentication_token.should_not be_blank
|
||||
end
|
||||
end
|
||||
|
||||
describe "attributes can be changed by a regular user" do
|
||||
before do
|
||||
@user = Factory :user
|
||||
@user.update_attributes(skype: "testskype", linkedin: "testlinkedin")
|
||||
end
|
||||
it { @user.skype.should == 'testskype' }
|
||||
it { @user.linkedin.should == 'testlinkedin' }
|
||||
end
|
||||
|
||||
describe "attributes that shouldn't be changed by a regular user" do
|
||||
before do
|
||||
@user = Factory :user
|
||||
@user.update_attributes(projects_limit: 50)
|
||||
end
|
||||
it { @user.projects_limit.should_not == 50 }
|
||||
end
|
||||
|
||||
describe "attributes can be changed by an admin user" do
|
||||
before do
|
||||
@admin_user = Factory :admin
|
||||
@admin_user.update_attributes({ skype: "testskype", projects_limit: 50 }, as: :admin)
|
||||
end
|
||||
it { @admin_user.skype.should == 'testskype' }
|
||||
it { @admin_user.projects_limit.should == 50 }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -111,42 +111,52 @@ describe Gitlab::API do
|
|||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/:id/users" do
|
||||
it "should return project users" do
|
||||
get api("/projects/#{project.code}/users", user)
|
||||
|
||||
describe "GET /projects/:id/members" do
|
||||
it "should return project team members" do
|
||||
get api("/projects/#{project.code}/members", user)
|
||||
response.status.should == 200
|
||||
|
||||
json_response.should be_an Array
|
||||
json_response.count.should == 2
|
||||
json_response.first['user']['id'].should == user.id
|
||||
json_response.first['email'].should == user.email
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST /projects/:id/users" do
|
||||
it "should add users to project" do
|
||||
expect {
|
||||
post api("/projects/#{project.code}/users", user),
|
||||
user_ids: {"0" => user2.id}, project_access: UsersProject::DEVELOPER
|
||||
}.to change {project.users_projects.where(:project_access => UsersProject::DEVELOPER).count}.by(1)
|
||||
describe "GET /projects/:id/members/:user_id" do
|
||||
it "should return project team member" do
|
||||
get api("/projects/#{project.code}/members/#{user.id}", user)
|
||||
response.status.should == 200
|
||||
json_response['email'].should == user.email
|
||||
json_response['access_level'].should == UsersProject::MASTER
|
||||
end
|
||||
end
|
||||
|
||||
describe "PUT /projects/:id/users" do
|
||||
it "should update users to new access role" do
|
||||
describe "POST /projects/:id/members" do
|
||||
it "should add user to project team" do
|
||||
expect {
|
||||
put api("/projects/#{project.code}/users", user),
|
||||
user_ids: {"0" => user3.id}, project_access: UsersProject::MASTER
|
||||
}.to change {project.users_projects.where(:project_access => UsersProject::MASTER).count}.by(1)
|
||||
post api("/projects/#{project.code}/members", user), user_id: user2.id,
|
||||
access_level: UsersProject::DEVELOPER
|
||||
}.to change { UsersProject.count }.by(1)
|
||||
|
||||
response.status.should == 201
|
||||
json_response['email'].should == user2.email
|
||||
json_response['access_level'].should == UsersProject::DEVELOPER
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /projects/:id/users" do
|
||||
it "should delete users from project" do
|
||||
describe "PUT /projects/:id/members/:user_id" do
|
||||
it "should update project team member" do
|
||||
put api("/projects/#{project.code}/members/#{user3.id}", user), access_level: UsersProject::MASTER
|
||||
response.status.should == 200
|
||||
json_response['email'].should == user3.email
|
||||
json_response['access_level'].should == UsersProject::MASTER
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /projects/:id/members/:user_id" do
|
||||
it "should remove user from project team" do
|
||||
expect {
|
||||
delete api("/projects/#{project.code}/users", user),
|
||||
user_ids: {"0" => user3.id}
|
||||
}.to change {project.users_projects.count}.by(-1)
|
||||
delete api("/projects/#{project.code}/members/#{user3.id}", user)
|
||||
}.to change { UsersProject.count }.by(-1)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -189,6 +199,27 @@ describe Gitlab::API do
|
|||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/:id/repository/commits" do
|
||||
context "authorized user" do
|
||||
before { project.add_access(user2, :read) }
|
||||
|
||||
it "should return project commits" do
|
||||
get api("/projects/#{project.code}/repository/commits", user)
|
||||
response.status.should == 200
|
||||
|
||||
json_response.should be_an Array
|
||||
json_response.first['id'].should == project.commit.id
|
||||
end
|
||||
end
|
||||
|
||||
context "unauthorized user" do
|
||||
it "should not return project commits" do
|
||||
get api("/projects/#{project.code}/repository/commits")
|
||||
response.status.should == 401
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/:id/snippets/:snippet_id" do
|
||||
it "should return a project snippet" do
|
||||
get api("/projects/#{project.code}/snippets/#{snippet.id}", user)
|
||||
|
|
39
spec/requests/api/session_spec.rb
Normal file
39
spec/requests/api/session_spec.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::API do
|
||||
include ApiHelpers
|
||||
|
||||
let(:user) { Factory :user }
|
||||
|
||||
describe "POST /session" do
|
||||
context "when valid password" do
|
||||
it "should return private token" do
|
||||
post api("/session"), email: user.email, password: '123456'
|
||||
response.status.should == 201
|
||||
|
||||
json_response['email'].should == user.email
|
||||
json_response['private_token'].should == user.private_token
|
||||
end
|
||||
end
|
||||
|
||||
context "when invalid password" do
|
||||
it "should return authentication error" do
|
||||
post api("/session"), email: user.email, password: '123'
|
||||
response.status.should == 401
|
||||
|
||||
json_response['email'].should be_nil
|
||||
json_response['private_token'].should be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context "when empty password" do
|
||||
it "should return authentication error" do
|
||||
post api("/session"), email: user.email
|
||||
response.status.should == 401
|
||||
|
||||
json_response['email'].should be_nil
|
||||
json_response['private_token'].should be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,73 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Keys do
|
||||
include ApiHelpers
|
||||
let(:user) {
|
||||
user = Factory.create :user
|
||||
user.reset_authentication_token!
|
||||
user
|
||||
}
|
||||
let(:key) { Factory.create :key, { user: user}}
|
||||
|
||||
describe "GET /keys" do
|
||||
context "when unauthenticated" do
|
||||
it "should return authentication error" do
|
||||
get api("/keys")
|
||||
response.status.should == 401
|
||||
end
|
||||
end
|
||||
context "when authenticated" do
|
||||
it "should return array of ssh keys" do
|
||||
user.keys << key
|
||||
user.save
|
||||
get api("/keys", user)
|
||||
response.status.should == 200
|
||||
json_response.should be_an Array
|
||||
json_response.first["title"].should == key.title
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /keys/:id" do
|
||||
it "should returm single key" do
|
||||
user.keys << key
|
||||
user.save
|
||||
get api("/keys/#{key.id}", user)
|
||||
response.status.should == 200
|
||||
json_response["title"].should == key.title
|
||||
end
|
||||
it "should return 404 Not Found within invalid ID" do
|
||||
get api("/keys/42", user)
|
||||
response.status.should == 404
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST /keys" do
|
||||
it "should not create invalid ssh key" do
|
||||
post api("/keys", user), { title: "invalid key" }
|
||||
response.status.should == 404
|
||||
end
|
||||
it "should create ssh key" do
|
||||
key_attrs = Factory.attributes :key
|
||||
expect {
|
||||
post api("/keys", user), key_attrs
|
||||
}.to change{ user.keys.count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /keys/:id" do
|
||||
it "should delete existed key" do
|
||||
user.keys << key
|
||||
user.save
|
||||
expect {
|
||||
delete api("/keys/#{key.id}", user)
|
||||
}.to change{user.keys.count}.by(-1)
|
||||
end
|
||||
it "should return 404 Not Found within invalid ID" do
|
||||
delete api("/keys/42", user)
|
||||
response.status.should == 404
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -3,7 +3,8 @@ require 'spec_helper'
|
|||
describe Gitlab::API do
|
||||
include ApiHelpers
|
||||
|
||||
let(:user) { Factory :user }
|
||||
let(:user) { Factory :user }
|
||||
let(:key) { Factory :key, user: user }
|
||||
|
||||
describe "GET /users" do
|
||||
context "when unauthenticated" do
|
||||
|
@ -38,4 +39,68 @@ describe Gitlab::API do
|
|||
json_response['email'].should == user.email
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /user/keys" do
|
||||
context "when unauthenticated" do
|
||||
it "should return authentication error" do
|
||||
get api("/user/keys")
|
||||
response.status.should == 401
|
||||
end
|
||||
end
|
||||
|
||||
context "when authenticated" do
|
||||
it "should return array of ssh keys" do
|
||||
user.keys << key
|
||||
user.save
|
||||
get api("/user/keys", user)
|
||||
response.status.should == 200
|
||||
json_response.should be_an Array
|
||||
json_response.first["title"].should == key.title
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /user/keys/:id" do
|
||||
it "should returm single key" do
|
||||
user.keys << key
|
||||
user.save
|
||||
get api("/user/keys/#{key.id}", user)
|
||||
response.status.should == 200
|
||||
json_response["title"].should == key.title
|
||||
end
|
||||
|
||||
it "should return 404 Not Found within invalid ID" do
|
||||
get api("/user/keys/42", user)
|
||||
response.status.should == 404
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST /user/keys" do
|
||||
it "should not create invalid ssh key" do
|
||||
post api("/user/keys", user), { title: "invalid key" }
|
||||
response.status.should == 404
|
||||
end
|
||||
|
||||
it "should create ssh key" do
|
||||
key_attrs = Factory.attributes :key
|
||||
expect {
|
||||
post api("/user/keys", user), key_attrs
|
||||
}.to change{ user.keys.count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /user/keys/:id" do
|
||||
it "should delete existed key" do
|
||||
user.keys << key
|
||||
user.save
|
||||
expect {
|
||||
delete api("/user/keys/#{key.id}", user)
|
||||
}.to change{user.keys.count}.by(-1)
|
||||
end
|
||||
|
||||
it "should return 404 Not Found within invalid ID" do
|
||||
delete api("/user/keys/42", user)
|
||||
response.status.should == 404
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue