forked from External/greenlight
GRN2-247: Added Active Pending Banned Deleted tabs to manage users (#816)
* Added Active Pending Banned Deleted tabs to manage users * Removed hard coded strings * Fixed issues with sign in flow * Fixed issues with rooms not deleting
This commit is contained in:
committed by
Jesus Federico
parent
03bde37a2b
commit
49def8f405
@ -166,6 +166,37 @@ describe AdminsController, type: :controller do
|
||||
expect { post :approve, params: params }.to change { ActionMailer::Base.deliveries.count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
context "POST #undelete" do
|
||||
it "undeletes a user" do
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
@user.delete
|
||||
|
||||
expect(User.find_by(uid: @user.uid)).to be_nil
|
||||
|
||||
post :undelete, params: { user_uid: @user.uid }
|
||||
|
||||
expect(User.find_by(uid: @user.uid)).to be_present
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(admins_path)
|
||||
end
|
||||
|
||||
it "undeletes the users rooms" do
|
||||
@request.session[:user_id] = @admin.id
|
||||
|
||||
@user.main_room.delete
|
||||
@user.delete
|
||||
|
||||
expect(Room.find_by(uid: @user.main_room.uid)).to be_nil
|
||||
|
||||
post :undelete, params: { user_uid: @user.uid }
|
||||
|
||||
expect(Room.find_by(uid: @user.main_room.uid)).to be_present
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(admins_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "User Design" do
|
||||
|
@ -134,6 +134,26 @@ describe SessionsController, type: :controller do
|
||||
expect(response).to redirect_to(account_activation_path(email: @user3.email))
|
||||
end
|
||||
|
||||
it "should not login user if account is deleted" do
|
||||
user = create(:user, provider: "greenlight",
|
||||
password: "example", password_confirmation: 'example')
|
||||
|
||||
user.delete
|
||||
user.reload
|
||||
expect(user.deleted?).to be true
|
||||
|
||||
post :create, params: {
|
||||
session: {
|
||||
email: user.email,
|
||||
password: 'example',
|
||||
},
|
||||
}
|
||||
|
||||
expect(@request.session[:user_id]).to be_nil
|
||||
expect(flash[:alert]).to eq(I18n.t("registration.banned.fail"))
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
|
||||
it "redirects the user to the page they clicked sign in from" do
|
||||
user = create(:user, provider: "greenlight",
|
||||
password: "example", password_confirmation: 'example')
|
||||
@ -289,6 +309,27 @@ describe SessionsController, type: :controller do
|
||||
expect(@request.session[:user_id]).to eql(u.id)
|
||||
end
|
||||
|
||||
it "redirects a deleted user to the root page" do
|
||||
# Create the user first
|
||||
request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:bn_launcher]
|
||||
get :omniauth, params: { provider: 'bn_launcher' }
|
||||
|
||||
# Delete the user
|
||||
user = User.find_by(social_uid: "bn-launcher-user")
|
||||
|
||||
@request.session[:user_id] = nil
|
||||
user.delete
|
||||
user.reload
|
||||
expect(user.deleted?).to be true
|
||||
|
||||
# Try to sign back in
|
||||
get :omniauth, params: { provider: 'bn_launcher' }
|
||||
|
||||
expect(@request.session[:user_id]).to be_nil
|
||||
expect(flash[:alert]).to eq(I18n.t("registration.banned.fail"))
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
|
||||
it "should redirect to root on invalid omniauth login" do
|
||||
request.env["omniauth.auth"] = :invalid_credentials
|
||||
get :omniauth, params: { provider: :google }
|
||||
|
@ -396,16 +396,17 @@ describe UsersController, type: :controller do
|
||||
describe "DELETE #user" do
|
||||
before { allow(Rails.configuration).to receive(:allow_user_signup).and_return(true) }
|
||||
|
||||
it "properly deletes user" do
|
||||
it "permanently deletes user" do
|
||||
user = create(:user)
|
||||
@request.session[:user_id] = user.id
|
||||
|
||||
delete :destroy, params: { user_uid: user.uid }
|
||||
|
||||
expect(User.include_deleted.find_by(uid: user.uid)).to be_nil
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
|
||||
it "allows admins to delete users" do
|
||||
it "allows admins to tombstone users" do
|
||||
allow(Rails.configuration).to receive(:loadbalanced_configuration).and_return(true)
|
||||
allow_any_instance_of(User).to receive(:greenlight_account?).and_return(true)
|
||||
allow_any_instance_of(ApplicationController).to receive(:set_user_domain).and_return("provider1")
|
||||
@ -418,6 +419,46 @@ describe UsersController, type: :controller do
|
||||
|
||||
delete :destroy, params: { user_uid: user.uid }
|
||||
|
||||
expect(User.deleted.find_by(uid: user.uid)).to be_present
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(admins_path)
|
||||
end
|
||||
|
||||
it "allows admins to permanently delete users" do
|
||||
allow(Rails.configuration).to receive(:loadbalanced_configuration).and_return(true)
|
||||
allow_any_instance_of(User).to receive(:greenlight_account?).and_return(true)
|
||||
allow_any_instance_of(ApplicationController).to receive(:set_user_domain).and_return("provider1")
|
||||
controller.instance_variable_set(:@user_domain, "provider1")
|
||||
|
||||
user = create(:user, provider: "provider1")
|
||||
admin = create(:user, provider: "provider1")
|
||||
admin.add_role :admin
|
||||
@request.session[:user_id] = admin.id
|
||||
|
||||
delete :destroy, params: { user_uid: user.uid, permanent: "true" }
|
||||
|
||||
expect(User.include_deleted.find_by(uid: user.uid)).to be_nil
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(admins_path)
|
||||
end
|
||||
|
||||
it "permanently deletes the users rooms if the user is permanently deleted" do
|
||||
allow(Rails.configuration).to receive(:loadbalanced_configuration).and_return(true)
|
||||
allow_any_instance_of(User).to receive(:greenlight_account?).and_return(true)
|
||||
allow_any_instance_of(ApplicationController).to receive(:set_user_domain).and_return("provider1")
|
||||
controller.instance_variable_set(:@user_domain, "provider1")
|
||||
|
||||
user = create(:user, provider: "provider1")
|
||||
admin = create(:user, provider: "provider1")
|
||||
admin.add_role :admin
|
||||
@request.session[:user_id] = admin.id
|
||||
uid = user.main_room.uid
|
||||
|
||||
expect(Room.find_by(uid: uid)).to be_present
|
||||
|
||||
delete :destroy, params: { user_uid: user.uid, permanent: "true" }
|
||||
|
||||
expect(Room.include_deleted.find_by(uid: uid)).to be_nil
|
||||
expect(flash[:success]).to be_present
|
||||
expect(response).to redirect_to(admins_path)
|
||||
end
|
||||
@ -435,7 +476,8 @@ describe UsersController, type: :controller do
|
||||
|
||||
delete :destroy, params: { user_uid: user.uid }
|
||||
|
||||
expect(response).to redirect_to(root_path)
|
||||
expect(flash[:alert]).to be_present
|
||||
expect(response).to redirect_to(admins_path)
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user