]>
gitweb.michael.orlitzky.com - mailshears.git/blob - test/test_rm.rb
3 require "minitest/autorun"
4 require 'minitest/unit'
6 # WARNING: Test output is dependent on the order these classes include
7 # certain modules; i.e. on the 'require' order.
8 require 'common/configuration'
9 require 'common/domain'
11 require "rm/plugins/agendav"
12 require "rm/plugins/davical"
13 require "rm/plugins/postfixadmin"
14 require "rm/plugins/roundcube"
15 require "rm/rm_runner"
16 require "rm/rm_dummy_runner"
18 class TestRm
< MiniTest
::Unit::TestCase
19 TESTCONF_PATH
= 'test/mailshears.test.conf.yml'
21 def connect_superuser()
30 connection
= PGconn
.connect(db_host
,
42 # Create databases using from the test configuration file.
43 cfg
= Configuration
.new(TESTCONF_PATH
)
44 connection
= connect_superuser()
46 cfg
.plugins
.each
do |plugin
|
47 plugin_dbname
= cfg
.send("#{plugin}_dbname")
48 query
= "CREATE DATABASE #{plugin_dbname};"
49 connection
.query(query
)
51 plugin_dbhost
= cfg
.send("#{plugin}_dbhost")
52 plugin_dbport
= cfg
.send("#{plugin}_dbport")
53 plugin_dbopts
= cfg
.send("#{plugin}_dbopts")
54 plugin_dbtty
= cfg
.send("#{plugin}_dbtty")
55 plugin_dbuser
= cfg
.send("#{plugin}_dbuser")
56 plugin_dbpass
= cfg
.send("#{plugin}_dbpass")
58 plugin_conn
= PGconn
.connect(plugin_dbhost
,
66 sql
= File
.open("test/sql/#{plugin}.sql").read()
67 plugin_conn
.query(sql
)
68 sql
= File
.open("test/sql/#{plugin}-fixtures.sql").read()
69 plugin_conn
.query(sql
)
79 cfg
= Configuration
.new(TESTCONF_PATH
)
80 users
= [ User
.new("adam@example.net") ]
82 output_buffer
= StringIO
.new()
84 $stdout = output_buffer
85 RmPlugin
.run(cfg
, *users
)
88 actual
= output_buffer
.string()
91 "AgendavRm - Removed user adam@example.net.\n" +
92 "DavicalRm - User adam@example.net not found.\n" +
93 "PostfixadminRm - Removed user adam@example.net.\n" +
94 "RoundcubeRm - Removed user adam@example.net (User ID: 2).\n"
96 assert_equal(expected
, actual
)
98 # Now make sure the database has what we expect.
100 arm
= AgendavRm
.new(cfg
)
101 actual
= arm
.list_users()
103 assert_equal(expected
, actual
)
105 drm
= DavicalRm
.new(cfg
)
106 actual
= drm
.list_users()
107 expected
= [User
.new('alice@example.com')]
108 assert_equal(expected
, actual
)
110 pfarm
= PostfixadminRm
.new(cfg
)
111 actual
= pfarm
.list_users()
112 expected
= [User
.new('alice@example.com'),
113 User
.new('bob@example.com'),
114 User
.new('beth@example.net'),
115 User
.new('carol@example.net')]
116 assert_equal(expected
, actual
)
118 actual
= pfarm
.list_domains()
119 expected
= [Domain
.new('example.com'), Domain
.new('example.net')]
120 assert_equal(expected
, actual
)
122 actual
= pfarm
.list_aliases()
123 expected
= [{'address' => 'alice@example.com',
124 'goto' => 'alice@example.com'},
125 {'address' => 'bob@example.com',
126 'goto' => 'bob@example.com'},
127 {'address' => 'beth@example.net',
128 'goto' => 'beth@example.net'},
129 {'address' => 'carol@example.net',
130 'goto' => 'carol@example.net'}]
131 assert_equal(expected
, actual
)
133 rrm
= RoundcubeRm
.new(cfg
)
134 actual
= rrm
.list_users()
135 expected
= [User
.new('alice@example.com')]
136 assert_equal(expected
, actual
)
141 cfg
= Configuration
.new(TESTCONF_PATH
)
142 domains
= [Domain
.new("example.net")]
144 output_buffer
= StringIO
.new()
146 $stdout = output_buffer
147 RmPlugin
.run(cfg
, *domains
)
150 actual
= output_buffer
.string()
153 "AgendavRm - Removed domain example.net.\n" +
154 "DavicalRm - Domain example.net not found.\n" +
155 "PostfixadminRm - Removed domain example.net.\n" +
156 "RoundcubeRm - Removed domain example.net.\n"
158 assert_equal(expected
, actual
)
160 # Now make sure the database has what we expect.
162 arm
= AgendavRm
.new(cfg
)
163 actual
= arm
.list_users()
165 assert_equal(expected
, actual
)
167 drm
= DavicalRm
.new(cfg
)
168 actual
= drm
.list_users()
169 expected
= [User
.new('alice@example.com')]
170 assert_equal(expected
, actual
)
172 pfarm
= PostfixadminRm
.new(cfg
)
173 actual
= pfarm
.list_users()
174 expected
= [User
.new('alice@example.com'),
175 User
.new('bob@example.com')]
176 assert_equal(expected
, actual
)
178 actual
= pfarm
.list_domains()
179 expected
= [Domain
.new('example.com')]
180 assert_equal(expected
, actual
)
182 actual
= pfarm
.list_aliases()
183 expected
= [{'address' => 'alice@example.com',
184 'goto' => 'alice@example.com'},
185 {'address' => 'bob@example.com',
186 'goto' => 'bob@example.com'}]
187 assert_equal(expected
, actual
)
189 rrm
= RoundcubeRm
.new(cfg
)
190 actual
= rrm
.list_users()
191 expected
= [User
.new('alice@example.com')]
192 assert_equal(expected
, actual
)
198 cfg
= Configuration
.new(TESTCONF_PATH
)
199 connection
= connect_superuser()
201 cfg
.plugins
.each
do |plugin
|
202 plugin_dbname
= cfg
.send("#{plugin}_dbname")
203 query
= "DROP DATABASE #{plugin_dbname};"
204 connection
.query(query
)