63 lines
2 KiB
Ruby
63 lines
2 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe "UserOrganization", type: :request do
|
|
let(:user) { create(:user) }
|
|
let(:organization) { create(:organization, secret: "SECRET", approved: true) }
|
|
|
|
def add_org_admin
|
|
user.update(organization_id: organization.id, org_admin: true)
|
|
user2 = create(:user, organization_id: organization.id)
|
|
post "/users/add_org_admin", params: { user_id: user2.id }
|
|
end
|
|
|
|
before do
|
|
sign_in user
|
|
end
|
|
|
|
it "joins org with proper secret" do
|
|
organization
|
|
post "/users/join_org", params: { org_secret: "SECRET" }
|
|
expect(user.organization_id).to eq(organization.id)
|
|
end
|
|
|
|
it "returns 404 if secret is wrong" do
|
|
expect { post "/users/join_org", params: { org_secret: "NOT SECRET" } }.
|
|
to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
|
|
it "leaves org" do
|
|
post "/users/leave_org"
|
|
expect(user.organization_id).to eq(nil)
|
|
end
|
|
|
|
it "adds org admin" do
|
|
add_org_admin
|
|
expect(User.last.org_admin).to eq(true)
|
|
end
|
|
|
|
it "adds analytics role when adding org admin if org is approved" do
|
|
add_org_admin
|
|
expect(User.last.has_role?(:analytics_beta_tester)).to eq(true)
|
|
end
|
|
|
|
it "raises if user not org_admin" do
|
|
user.update(organization_id: organization.id)
|
|
user2 = create(:user, organization_id: organization.id, org_admin: true)
|
|
expect { post "/users/add_org_admin", params: { user_id: user2.id } }.
|
|
to raise_error Pundit::NotAuthorizedError
|
|
end
|
|
|
|
it "removes org admin" do
|
|
user.update(organization_id: organization.id, org_admin: true)
|
|
user2 = create(:user, organization_id: organization.id, org_admin: true)
|
|
post "/users/remove_org_admin", params: { user_id: user2.id }
|
|
expect(User.last.org_admin).to eq(false)
|
|
end
|
|
|
|
it "remove_org_admin raises if user not org_admin" do
|
|
user.update(organization_id: organization.id)
|
|
user2 = create(:user, organization_id: organization.id, org_admin: true)
|
|
expect { post "/users/remove_org_admin", params: { user_id: user2.id } }.
|
|
to raise_error Pundit::NotAuthorizedError
|
|
end
|
|
end
|