diff --git a/app/models/signup.rb b/app/models/signup.rb index e11ab3bfd..a02858cd6 100644 --- a/app/models/signup.rb +++ b/app/models/signup.rb @@ -55,7 +55,7 @@ class Signup end def tenant_name - @tenant_name ||= signal_account.subdomain + @tenant_name ||= @queenbee_account.id.to_s end def to_h diff --git a/script/load-prod-db-in-dev.rb b/script/load-prod-db-in-dev.rb new file mode 100755 index 000000000..8585a2bba --- /dev/null +++ b/script/load-prod-db-in-dev.rb @@ -0,0 +1,40 @@ +#!/usr/bin/env ruby + +if ARGV.length != 1 + puts "Usage: #{$0} " + exit 1 +end +original_dbfile = ARGV[0] + +require_relative "../config/environment" + +unless Rails.env.local? + abort "This script should only be run in a local development environment." +end + +identifier = SecureRandom.hex(4) +signup = Signup.new( + email_address: "dev-#{identifier}@example.com", + full_name: "Developer #{identifier}", + company_name: "Company #{identifier}", + password: "secret123456" +) + +puts "Creating signal identity for #{signup.email_address}..." +signup.send(:create_signal_identity) + +puts "Creating queenbee account ..." +signup.send(:create_queenbee_account) + +path = ApplicationRecord.tenanted_root_config.database_path_for(signup.tenant_name) +FileUtils.mkdir_p(File.dirname(path), verbose: true) +FileUtils.cp original_dbfile, path, verbose: true + +ActiveRecord::Tenanted::DatabaseTasks.migrate_all + +ApplicationRecord.with_tenant(signup.tenant_name) do |tenant| + Account.sole.update! queenbee_id: signup.queenbee_account.id + User.first.update! signal_user_id: signup.signal_account.owner.id + + puts "\n\nLogin to http://launchpad.localhost:3011/ as #{signup.email_address} / #{signup.password}" +end diff --git a/test/controllers/signup/accounts_controller_test.rb b/test/controllers/signup/accounts_controller_test.rb index 78a1c1af5..413cf54c1 100644 --- a/test/controllers/signup/accounts_controller_test.rb +++ b/test/controllers/signup/accounts_controller_test.rb @@ -66,7 +66,7 @@ class Signup::AccountsControllerTest < ActionDispatch::IntegrationTest end signal_account = SignalId::Account.last - ApplicationRecord.with_tenant(signal_account.subdomain) do + ApplicationRecord.with_tenant(signal_account.queenbee_id) do assert_equal Account.last, signal_account.peer end end diff --git a/test/models/signup_test.rb b/test/models/signup_test.rb index fc9f89d7a..37d96bd6f 100644 --- a/test/models/signup_test.rb +++ b/test/models/signup_test.rb @@ -44,7 +44,8 @@ class SignupTest < ActiveSupport::TestCase assert @signup.user.persisted? assert_equal @signup.user.signal_user, @signup.signal_account.owner - assert_includes ApplicationRecord.tenants, @signup.signal_account.subdomain + assert_equal @signup.queenbee_account.id.to_s, @signup.tenant_name + assert_includes ApplicationRecord.tenants, @signup.tenant_name end test "the new account is named with company name if present" do @@ -87,7 +88,8 @@ class SignupTest < ActiveSupport::TestCase assert @signup.user.persisted? assert_equal @signup.user.signal_user, @signup.signal_account.owner - assert_includes ApplicationRecord.tenants, @signup.signal_account.subdomain + assert_equal @signup.queenbee_account.id.to_s, @signup.tenant_name + assert_includes ApplicationRecord.tenants, @signup.tenant_name end test "#process does nothing if a validation error occurs creating identity" do