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