diff options
-rw-r--r-- | app/models/user.rb | 5 | ||||
-rw-r--r-- | lib/api/users.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/users_spec.rb | 11 |
3 files changed, 17 insertions, 1 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 2411b270fc6..526edb9839e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -198,6 +198,11 @@ class User < ActiveRecord::Base User.find_by_username(name_or_id) end end + + def defaults + { projects_limit: Gitlab.config.gitlab.default_projects_limit, can_create_group: Gitlab.config.gitlab.default_can_create_group, can_create_team: Gitlab.config.gitlab.default_can_create_team } + end + end # diff --git a/lib/api/users.rb b/lib/api/users.rb index 84256b51124..3b7ae9f01a1 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -46,7 +46,7 @@ module API authenticated_as_admin! required_attributes! [:email, :password, :name, :username] - attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio] + attrs = User.defaults.merge(attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio]) user = User.new attrs, as: :admin if user.save present user, with: Entities::User diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb index 2f4aaae3890..c09d78993e1 100644 --- a/spec/requests/api/users_spec.rb +++ b/spec/requests/api/users_spec.rb @@ -57,6 +57,17 @@ describe API::API do response.status.should == 201 end + it "creating a user should respect default project limit" do + limit = 123456 + Gitlab.config.gitlab.stub(:default_projects_limit).and_return(limit) + attr = attributes_for(:user ) + expect { + post api("/users", admin), attr + }.to change { User.count }.by(1) + User.find_by_username(attr[:username]).projects_limit.should == limit + Gitlab.config.gitlab.unstub(:default_projects_limit) + end + it "should not create user with invalid email" do post api("/users", admin), { email: "invalid email", password: 'password' } response.status.should == 400 |