From 0dac6ead77004b007b4058714ca109346016950c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 19 Dec 2022 15:12:08 +0100 Subject: [PATCH] Raise an exception when accessing a domain as subdomain We were returning `nil` in this case, meaning we would be accessing the main tenant in this situation instead of returning "Not Found". --- app/models/tenant.rb | 6 +++++- spec/models/tenant_spec.rb | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/models/tenant.rb b/app/models/tenant.rb index 54a254c39..ffbba3442 100644 --- a/app/models/tenant.rb +++ b/app/models/tenant.rb @@ -30,7 +30,11 @@ class Tenant < ApplicationRecord host_domain = allowed_domains.find { |domain| host == domain || host.ends_with?(".#{domain}") } schema = host_without_www.sub(/\.?#{host_domain}\Z/, "").presence - schema unless find_by_domain(schema) + if find_by_domain(schema) + raise Apartment::TenantNotFound + else + schema + end end end diff --git a/spec/models/tenant_spec.rb b/spec/models/tenant_spec.rb index e6d4bae67..b15dc7560 100644 --- a/spec/models/tenant_spec.rb +++ b/spec/models/tenant_spec.rb @@ -86,10 +86,10 @@ describe Tenant do expect(Tenant.resolve_host("saturn.consul.dev")).to eq "saturn" end - it "returns nil when a domain is accessed as a subdomain" do + it "raises an exception when a domain is accessed as a subdomain" do insert(:tenant, :domain, schema: "saturn.dev") - expect(Tenant.resolve_host("saturn.dev.consul.dev")).to be nil + expect { Tenant.resolve_host("saturn.dev.consul.dev") }.to raise_exception(Apartment::TenantNotFound) end it "returns nested subdomains when there's a subdomain-type tenant with nested subdomains" do