From d4d4a78f834b409631b012aa555c0cb2c4e3166d Mon Sep 17 00:00:00 2001 From: Izaak Alpert <ialpert@blackberry.com> Date: Thu, 8 Aug 2013 14:09:33 -0400 Subject: [PATCH] Update User api to respect default settings -API now respects default_projects_limit, default_can_create_group, and default_can_create_team Change-Id: I059d060d576df1050e5371e707381c5e8c608a7a --- app/models/user.rb | 5 +++++ lib/api/users.rb | 2 +- spec/requests/api/users_spec.rb | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 2411b270fc..526edb9839 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 84256b5112..3b7ae9f01a 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 2f4aaae389..c09d78993e 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 -- 2.30.9