Migrate spec for creating user with custom rate limit

pull/16084/head
Alberto Miedes Garcés 4 years ago
parent db1b39bda8
commit bc4fb7f0c4

@ -118,6 +118,7 @@ end
group :development, :test do
gem 'byebug'
gem 'faker'
gem 'pry-byebug', '3.9.0'
gem 'rack'
gem 'rb-readline'

@ -166,6 +166,8 @@ GEM
factory_girl_rails (4.0.0)
factory_girl (~> 4.0.0)
railties (>= 3.0.0)
faker (2.2.1)
i18n (>= 0.8)
faraday (0.15.4)
multipart-post (>= 1.2, < 3)
faraday_middleware (0.14.0)
@ -549,6 +551,7 @@ DEPENDENCIES
execjs (~> 0.4)
factory_girl_rails (~> 4.0.0)
fake_net_ldap!
faker
gc_tracer (= 1.5.1)
gibbon (= 1.1.4)
google-api-client (= 0.34.1)

@ -41,31 +41,56 @@ describe CentralUserCommands do
describe '#create_user' do
let(:account_type) { create_account_type_fg(nil) }
it 'creates a user with the provided params' do
user_params = {
username: 'testuser',
email: 'testuser@acme.org',
let(:username) { Faker::Internet.username(separators: ['-']) }
let(:default_user_params) do
{
username: username,
email: Faker::Internet.safe_email,
password: 'supersecret',
account_type: account_type.account_type
}
notifications_topic.stubs(:publish)
message = Carto::Common::MessageBroker::Message.new(payload: user_params)
central_user_commands.create_user(message)
end
created_user = Carto::User.find_by(username: 'testuser')
before { notifications_topic.stubs(:publish) }
expect(created_user).to be_present
expect(created_user.crypted_password).to be_present
context 'when everything is OK' do
let(:user_params) { default_user_params }
it 'creates a user with the provided params' do
message = Carto::Common::MessageBroker::Message.new(payload: user_params)
central_user_commands.create_user(message)
created_user = Carto::User.find_by(username: username)
expect(created_user).to be_present
expect(created_user.crypted_password).to be_present
end
end
context 'when the payload contains invalid attributes' do
it 'does not create the user and fails silently' do
user_params = { username: 'invalid-user' }
let(:user_params) { default_user_params.merge(email: nil) }
it 'raises an error' do
message = Carto::Common::MessageBroker::Message.new(payload: user_params)
expect { central_user_commands.create_user(message) }.to raise_error(Sequel::ValidationFailed)
end
end
context 'when specifying custom rate limit attributes' do
let(:rate_limits) { create(:rate_limits) }
let(:user_params) do
default_user_params.merge(rate_limit: rate_limits.api_attributes)
end
it 'assigns the correct rate limits' do
message = Carto::Common::MessageBroker::Message.new(payload: user_params)
central_user_commands.create_user(message)
expect(Carto::User.exists?(username: 'invalid-user')).to eq(false)
created_user = Carto::User.find_by(username: username)
expect(created_user).to be_present
expect(created_user.rate_limit.api_attributes).to eq(rate_limits.api_attributes)
end
end
end

@ -71,25 +71,6 @@ feature "Superadmin's users API" do
::User.where(username: @user_atts[:username]).first.destroy
end
scenario "user create with rate limits" do
t = Time.now
@user_atts[:upgraded_at] = t
rate_limits = FactoryGirl.create(:rate_limits)
@user_atts[:rate_limit] = rate_limits.api_attributes
CartoDB::UserModule::DBService.any_instance.stubs(:enable_remote_db_user).returns(true)
post_json superadmin_users_path, { user: @user_atts }, superadmin_headers do |response|
response.status.should == 201
response.body[:rate_limit_id].should_not be_nil
# Double check that the user has been created properly
user = ::User.filter(email: @user_atts[:email]).first
user.rate_limit.api_attributes.should eq @user_atts[:rate_limit]
end
::User.where(username: @user_atts[:username]).first.destroy
rate_limits.destroy
end
scenario "user create non-default account settings" do
@user_atts[:quota_in_bytes] = 2000
@user_atts[:table_quota] = 20

Loading…
Cancel
Save