update docviewer iwork flag to check region
The docviewer iwork flag only looked at the shipping address before, this follows the model of what we did with heap, but is contained as a separate file as the two projects requirements may drift. closes CAS-1123 test plan: - specs pass Change-Id: Ia9c9a72f7bf000a1dcf352b09751ac0a28713b90 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/307660 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Murilo Paiva <murilo.paiva@instructure.com> QA-Review: Keith Garner <kgarner@instructure.com> Product-Review: Keith Garner <kgarner@instructure.com>
This commit is contained in:
parent
1f9174aa8d
commit
9ec9597907
|
@ -0,0 +1,50 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
#
|
||||
# Copyright (C) 2022 - 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/>.
|
||||
#
|
||||
|
||||
# This was copied from usage_metrics_predicate as the requirements are the same right now. This might not always be
|
||||
# true, so this was recreated in a separate file.
|
||||
#
|
||||
# Right now Apple only has a server in the US, to comply with GDPR, we'll only turn this on for folks in the US.
|
||||
module FeatureFlags
|
||||
class DocviewerIworkPredicate
|
||||
def initialize(context, region)
|
||||
@context = context
|
||||
@region = region
|
||||
end
|
||||
|
||||
def call
|
||||
overridden? || (us_billing_code? && in_approved_us_aws_region?)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def overridden?
|
||||
@context&.root_account&.settings&.[](:docviewer_enable_iwork_files)
|
||||
end
|
||||
|
||||
def us_billing_code?
|
||||
@context&.root_account&.external_integration_keys&.find_by(key_type: "salesforce_billing_country_code")&.key_value == "US"
|
||||
end
|
||||
|
||||
def in_approved_us_aws_region?
|
||||
["us-east-1", "us-west-2"].include? @region
|
||||
end
|
||||
end
|
||||
end
|
|
@ -67,10 +67,7 @@ module FeatureFlags
|
|||
end
|
||||
|
||||
def self.docviewer_enable_iwork_visible_on_hook(context)
|
||||
root_account = context.root_account
|
||||
|
||||
# Right now Apple only has a server in the US, to comply with GDPR, we'll only turn this on for folks in the US.
|
||||
root_account.external_integration_keys.find_by(key_type: "salesforce_billing_country_code")&.key_value == "US"
|
||||
DocviewerIworkPredicate.new(context, Shard.current.database_server.config[:region]).call
|
||||
end
|
||||
|
||||
def self.usage_metrics_allowed_hook(context)
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
#
|
||||
# Copyright (C) 2019 - 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/>.
|
||||
#
|
||||
|
||||
describe FeatureFlags::DocviewerIworkPredicate do
|
||||
let(:settings) { nil }
|
||||
let(:external_integration_keys) { nil }
|
||||
let(:root_account) { double(settings: settings, external_integration_keys: external_integration_keys) }
|
||||
let(:context) { double(root_account: root_account) }
|
||||
let(:region) { nil }
|
||||
let(:predicate) { FeatureFlags::DocviewerIworkPredicate.new context, region }
|
||||
|
||||
it "defaults to false" do
|
||||
expect(predicate.call).to be_falsey
|
||||
end
|
||||
|
||||
describe "when overridden" do
|
||||
let(:settings) { { docviewer_enable_iwork_files: true } }
|
||||
|
||||
it "returns true" do
|
||||
expect(predicate.call).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
describe "when US billing country and approved US aws region" do
|
||||
let(:external_integration_keys) do
|
||||
keys = double
|
||||
allow(keys).to receive(:find_by).with({ key_type: "salesforce_billing_country_code" }) { double(key_value: "US") }
|
||||
keys
|
||||
end
|
||||
let(:region) { "us-east-1" }
|
||||
|
||||
it "returns true" do
|
||||
expect(predicate.call).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
|
@ -151,6 +151,8 @@ describe "Canvadoc" do
|
|||
before do
|
||||
Account.current_domain_root_account = Account.default
|
||||
Account.default.external_integration_keys.create!(key_type: "salesforce_billing_country_code", key_value: "US")
|
||||
allow(Shard.current.database_server.config).to receive(:[]).and_call_original
|
||||
allow(Shard.current.database_server.config).to receive(:[]).with(:region).and_return("us-east-1")
|
||||
end
|
||||
|
||||
after do
|
||||
|
|
Loading…
Reference in New Issue