docbrown/spec/requests/user_organization_spec.rb
Mac Siri dd5a22dc80 Create UserPolicy (#480)
* Fix lint

* Create User#settings_tab_list

* Remove UsersController#finish_signup

* Remove UsersController#index

* Create UserPolicy WIP

* Replace UsersController's spec with request spec

* Fix broken specs

* Fix broken specs

* Remove comment

* Upgrade UserPolicy

* Fix specs
2018-06-22 20:40:08 -04:00

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 ActionController::RoutingError
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