canvas-lms/spec/factories/account_factory.rb

106 lines
3.7 KiB
Ruby

#
# Copyright (C) 2011 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
module Factories
def account_model(opts={})
@account = factory_with_protected_attributes(Account, valid_account_attributes.merge(opts))
end
def stub_rcs_config
# make sure this is loaded first
allow(Canvas::DynamicSettings).to receive(:find).with(any_args).and_call_original
allow(Canvas::DynamicSettings).to receive(:find).with("rich-content-service", default_ttl: 5.minutes).and_return(
ActiveSupport::HashWithIndifferentAccess.new({
"app-host":"",
"cdn-host":"",
"skip-sidebar":"true",
"sidebar-source":"fake"
})
)
allow(Canvas::DynamicSettings).to receive(:find).with("canvas").and_return(
{
"signing-secret" => "asdfasdfasdfasdfasdfasdfasdfasdf",
"encryption-secret" => "jkl;jkl;jkl;jkl;jkl;jkl;jkl;jkl;"
}
)
end
def account_rcs_model(opts={})
@account = factory_with_protected_attributes(Account, valid_account_attributes.merge(opts))
enable_all_rcs(@account)
LoadAccount.default_domain_root_account.enable_feature!(:rich_content_service_high_risk)
end
def enable_all_rcs(account)
account.enable_feature!(:rich_content_service_high_risk)
end
def provision_quizzes_next(account)
# quizzes_next feature is turned on only if a root account is provisioned
account.root_account.settings[:provision] = {'lti' => 'lti url'}
account.root_account.save!
end
def valid_account_attributes
{
:name => "value for name"
}
end
def account_with_cas(opts={})
@account = opts[:account]
@account ||= Account.create!
config = AccountAuthorizationConfig::CAS.new
cas_url = opts[:cas_url] || "https://localhost/cas"
config.auth_type = "cas"
config.auth_base = cas_url
config.log_in_url = opts[:cas_log_in_url] if opts[:cas_log_in_url]
@account.authentication_providers << config
@account.authentication_providers.first.move_to_bottom
@account
end
def account_with_saml(opts={})
@account = opts[:account]
@account ||= Account.create!
config = AccountAuthorizationConfig::SAML.new
config.idp_entity_id = "saml_entity"
config.auth_type = "saml"
config.log_in_url = opts[:saml_log_in_url] if opts[:saml_log_in_url]
config.log_out_url = opts[:saml_log_out_url] if opts[:saml_log_out_url]
config.parent_registration = opts[:parent_registration] if opts[:parent_registration]
@account.authentication_providers << config
@account.authentication_providers.first.move_to_bottom
@account
end
def account_with_role_changes(opts={})
account = opts[:account] || Account.default
if opts[:role_changes]
opts[:role_changes].each_pair do |permission, enabled|
role = opts[:role] || admin_role
if ro = account.role_overrides.where(:permission => permission.to_s, :role_id => role.id).first
ro.update_attribute(:enabled, enabled)
else
account.role_overrides.create(:permission => permission.to_s, :enabled => enabled, :role => role)
end
end
end
RoleOverride.clear_cached_contexts
end
end