Commit 8a361fcd9a84addd2a7d9a81b0c91d9024550d12
Committed by
Daniela Feitosa
1 parent
b1b3e471
Exists in
master
and in
22 other branches
Adding tests for MultiTenancy lib
(ActionItem1845)
Showing
1 changed file
with
90 additions
and
0 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,90 @@ |
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | |
| 2 | +require 'noosfero/multi_tenancy' | |
| 3 | + | |
| 4 | +class MultiTenancyTest < Test::Unit::TestCase | |
| 5 | + | |
| 6 | + def test_get_mapping_if_is_set | |
| 7 | + mapping = { :env => {} } | |
| 8 | + Noosfero::MultiTenancy.instance_variable_set(:@mapping, mapping) | |
| 9 | + assert_equal mapping, Noosfero::MultiTenancy.mapping | |
| 10 | + end | |
| 11 | + | |
| 12 | + def test_set_mapping_if_is_not_set | |
| 13 | + mapping = { :env => {} } | |
| 14 | + Noosfero::MultiTenancy.expects(:load_map).returns(mapping) | |
| 15 | + Noosfero::MultiTenancy.instance_variable_set(:@mapping, nil) | |
| 16 | + assert_equal mapping, Noosfero::MultiTenancy.mapping | |
| 17 | + assert_equal mapping, Noosfero::MultiTenancy.instance_variable_get(:@mapping) | |
| 18 | + end | |
| 19 | + | |
| 20 | + def test_multitenancy_is_on_if_has_mapping | |
| 21 | + Noosfero::MultiTenancy.expects(:mapping).returns({ :env => {} }) | |
| 22 | + assert Noosfero::MultiTenancy.on? | |
| 23 | + end | |
| 24 | + | |
| 25 | + def test_multitenancy_is_on_if_it_is_a_hosted_environment | |
| 26 | + Noosfero::MultiTenancy.expects(:mapping).returns({}) | |
| 27 | + Noosfero::MultiTenancy.expects(:is_hosted_environment?).returns(true) | |
| 28 | + assert Noosfero::MultiTenancy.on? | |
| 29 | + end | |
| 30 | + | |
| 31 | + def test_multitenancy_is_off_if_it_is_not_a_hosted_environment_and_there_is_no_mapping | |
| 32 | + Noosfero::MultiTenancy.expects(:mapping).returns({}) | |
| 33 | + Noosfero::MultiTenancy.expects(:is_hosted_environment?).returns(false) | |
| 34 | + assert !Noosfero::MultiTenancy.on? | |
| 35 | + end | |
| 36 | + | |
| 37 | + def test_set_schema_by_host | |
| 38 | + Noosfero::MultiTenancy.expects(:mapping).returns({ 'host' => 'schema' }) | |
| 39 | + adapter = ActiveRecord::Base.connection.class | |
| 40 | + adapter.any_instance.expects(:schema_search_path=).with('schema').returns(true) | |
| 41 | + assert Noosfero::MultiTenancy.db_by_host = 'host' | |
| 42 | + end | |
| 43 | + | |
| 44 | + def test_load_map | |
| 45 | + YAML.expects(:load_file).returns(db_config) | |
| 46 | + assert_equal({ 'test.one.com' => 'one', 'one.com' => 'one', 'two.com' => 'two' }, Noosfero::MultiTenancy.send(:load_map)) | |
| 47 | + end | |
| 48 | + | |
| 49 | + def test_if_is_hosted_environment | |
| 50 | + YAML.expects(:load_file).returns(db_config) | |
| 51 | + Object.send(:remove_const, :RAILS_ENV) | |
| 52 | + Object.const_set(:RAILS_ENV, 'one_test') | |
| 53 | + assert Noosfero::MultiTenancy.send(:is_hosted_environment?) | |
| 54 | + Object.send(:remove_const, :RAILS_ENV) | |
| 55 | + Object.const_set(:RAILS_ENV, 'test') | |
| 56 | + end | |
| 57 | + | |
| 58 | + def test_if_is_not_hosted_environment | |
| 59 | + YAML.expects(:load_file).returns(db_config) | |
| 60 | + assert !Noosfero::MultiTenancy.send(:is_hosted_environment?) | |
| 61 | + end | |
| 62 | + | |
| 63 | + private | |
| 64 | + | |
| 65 | + def db_config | |
| 66 | + { | |
| 67 | + 'one_test' => { | |
| 68 | + 'schema_search_path' => 'one', | |
| 69 | + 'domains' => ['test.one.com', 'one.com'], | |
| 70 | + 'adapter' => 'PostgreSQL' | |
| 71 | + }, | |
| 72 | + 'two_test' => { | |
| 73 | + 'schema_search_path' => 'two', | |
| 74 | + 'domains' => ['two.com'], | |
| 75 | + 'adapter' => 'PostgreSQL' | |
| 76 | + }, | |
| 77 | + 'test' => { | |
| 78 | + 'schema_search_path' => 'public', | |
| 79 | + 'domains' => ['test.com'], | |
| 80 | + 'adapter' => 'PostgreSQL' | |
| 81 | + }, | |
| 82 | + 'production' => { | |
| 83 | + 'schema_search_path' => 'production', | |
| 84 | + 'domains' => ['production.com'], | |
| 85 | + 'adapter' => 'PostgreSQL' | |
| 86 | + } | |
| 87 | + } | |
| 88 | + end | |
| 89 | + | |
| 90 | +end | ... | ... |