summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb5
-rw-r--r--lib/api/users.rb2
-rw-r--r--spec/requests/api/users_spec.rb11
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