forked from External/greenlight
Added mapping roles through email to site settings (#2373)
This commit is contained in:
@ -79,6 +79,51 @@ describe AccountActivationsController, type: :controller do
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
|
||||
context "email mapping" do
|
||||
before do
|
||||
@role1 = Role.create(name: "role1", priority: 2, provider: "greenlight")
|
||||
@role2 = Role.create(name: "role2", priority: 3, provider: "greenlight")
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_return("-123@test.com=role1,@testing.com=role2")
|
||||
end
|
||||
|
||||
it "correctly sets users role if email mapping is set" do
|
||||
@user = create(:user, email: "test-123@test.com", email_verified: false, provider: "greenlight", role: nil)
|
||||
|
||||
get :edit, params: { token: @user.create_activation_token }
|
||||
|
||||
u = User.last
|
||||
expect(u.role).to eq(@role1)
|
||||
end
|
||||
|
||||
it "correctly sets users role if email mapping is set (second test)" do
|
||||
@user = create(:user, email: "test@testing.com", email_verified: false, provider: "greenlight", role: nil)
|
||||
|
||||
get :edit, params: { token: @user.create_activation_token }
|
||||
|
||||
u = User.last
|
||||
expect(u.role).to eq(@role2)
|
||||
end
|
||||
|
||||
it "does not replace the role if already set" do
|
||||
pending = Role.find_by(name: "pending", provider: "greenlight")
|
||||
@user = create(:user, email: "test@testing.com", email_verified: false, provider: "greenlight", role: pending)
|
||||
|
||||
get :edit, params: { token: @user.create_activation_token }
|
||||
|
||||
u = User.last
|
||||
expect(u.role).to eq(pending)
|
||||
end
|
||||
|
||||
it "defaults to user if no mapping matches" do
|
||||
@user = create(:user, email: "test@testing1.com", email_verified: false, provider: "greenlight")
|
||||
|
||||
get :edit, params: { token: @user.create_activation_token }
|
||||
|
||||
u = User.last
|
||||
expect(u.role).to eq(Role.find_by(name: "user", provider: "greenlight"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET #resend" do
|
||||
|
@ -531,6 +531,53 @@ describe SessionsController, type: :controller do
|
||||
new_u = User.find_by(social_uid: "bn-launcher-user-new")
|
||||
expect(users_old_uid).to eq(new_u.uid)
|
||||
end
|
||||
|
||||
context "email mapping" do
|
||||
before do
|
||||
@role1 = Role.create(name: "role1", priority: 2, provider: "greenlight")
|
||||
@role2 = Role.create(name: "role2", priority: 3, provider: "greenlight")
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_return("-123@test.com=role1,@testing.com=role2")
|
||||
end
|
||||
|
||||
it "correctly sets users role if email mapping is set" do
|
||||
params = OmniAuth.config.mock_auth[:google]
|
||||
params[:info][:email] = "test-123@test.com"
|
||||
|
||||
request.env["omniauth.auth"] = params
|
||||
|
||||
get :omniauth, params: { provider: :google }
|
||||
|
||||
u = User.last
|
||||
|
||||
expect(u.role).to eq(@role1)
|
||||
end
|
||||
|
||||
it "correctly sets users role if email mapping is set (second test)" do
|
||||
params = OmniAuth.config.mock_auth[:google]
|
||||
params[:info][:email] = "test-123@testing.com"
|
||||
|
||||
request.env["omniauth.auth"] = params
|
||||
|
||||
get :omniauth, params: { provider: :google }
|
||||
|
||||
u = User.last
|
||||
|
||||
expect(u.role).to eq(@role2)
|
||||
end
|
||||
|
||||
it "defaults to user if no mapping matches" do
|
||||
params = OmniAuth.config.mock_auth[:google]
|
||||
params[:info][:email] = "test@test.com"
|
||||
|
||||
request.env["omniauth.auth"] = params
|
||||
|
||||
get :omniauth, params: { provider: :google }
|
||||
|
||||
u = User.last
|
||||
|
||||
expect(u.role).to eq(Role.find_by(name: "user", provider: "greenlight"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST #ldap" do
|
||||
|
@ -148,6 +148,47 @@ describe UsersController, type: :controller do
|
||||
|
||||
expect(u.last_login).to_not be_nil
|
||||
end
|
||||
|
||||
context "email mapping" do
|
||||
before do
|
||||
@role1 = Role.create(name: "role1", priority: 2, provider: "greenlight")
|
||||
@role2 = Role.create(name: "role2", priority: 3, provider: "greenlight")
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_return("-123@test.com=role1,@testing.com=role2")
|
||||
end
|
||||
|
||||
it "correctly sets users role if email mapping is set" do
|
||||
params = random_valid_user_params
|
||||
params[:user][:email] = "test-123@test.com"
|
||||
|
||||
post :create, params: params
|
||||
|
||||
u = User.find_by(name: params[:user][:name], email: params[:user][:email])
|
||||
|
||||
expect(u.role).to eq(@role1)
|
||||
end
|
||||
|
||||
it "correctly sets users role if email mapping is set (second test)" do
|
||||
params = random_valid_user_params
|
||||
params[:user][:email] = "test@testing.com"
|
||||
|
||||
post :create, params: params
|
||||
|
||||
u = User.find_by(name: params[:user][:name], email: params[:user][:email])
|
||||
|
||||
expect(u.role).to eq(@role2)
|
||||
end
|
||||
|
||||
it "defaults to user if no mapping matches" do
|
||||
params = random_valid_user_params
|
||||
params[:user][:email] = "test@testing1.com"
|
||||
|
||||
post :create, params: params
|
||||
|
||||
u = User.find_by(name: params[:user][:name], email: params[:user][:email])
|
||||
|
||||
expect(u.role).to eq(Role.find_by(name: "user", provider: "greenlight"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "disallow greenlight accounts" do
|
||||
|
Reference in New Issue
Block a user