]>
gitweb.michael.orlitzky.com - mailshears.git/blob - test/test_rm.rb
5 # WARNING: Test output is dependent on the order these classes include
6 # certain modules; i.e. on the 'require' order.
7 require 'common/configuration'
8 require "rm/plugins/agendav"
9 require "rm/plugins/davical"
10 require "rm/plugins/postfixadmin"
11 require "rm/plugins/roundcube"
12 require "rm/rm_runner"
13 require "rm/rm_dummy_runner"
16 class TestRm
< Test
::Unit::TestCase
18 TESTCONF_PATH
= 'test/mailshears.test.conf.yml'
20 def connect_superuser()
29 connection
= PGconn
.connect(db_host
,
41 # Create databases using from the test configuration file.
42 cfg
= Configuration
.new(TESTCONF_PATH
)
43 connection
= connect_superuser()
45 cfg
.plugins
.each
do |plugin
|
46 plugin_dbname
= cfg
.send("#{plugin}_dbname")
47 query
= "CREATE DATABASE #{plugin_dbname};"
48 connection
.query(query
)
50 plugin_dbhost
= cfg
.send("#{plugin}_dbhost")
51 plugin_dbport
= cfg
.send("#{plugin}_dbport")
52 plugin_dbopts
= cfg
.send("#{plugin}_dbopts")
53 plugin_dbtty
= cfg
.send("#{plugin}_dbtty")
54 plugin_dbuser
= cfg
.send("#{plugin}_dbuser")
55 plugin_dbpass
= cfg
.send("#{plugin}_dbpass")
57 plugin_conn
= PGconn
.connect(plugin_dbhost
,
65 sql
= File
.open("test/sql/#{plugin}.sql").read()
66 plugin_conn
.query(sql
)
67 sql
= File
.open("test/sql/#{plugin}-fixtures.sql").read()
68 plugin_conn
.query(sql
)
78 cfg
= Configuration
.new(TESTCONF_PATH
)
79 argv = ["adam@example.net"]
81 output_buffer
= StringIO
.new()
83 $stdout = output_buffer
84 plugin_class
= RmPlugin
.run(cfg
, *argv)
87 actual
= output_buffer
.string()
90 "AgendavRm - Removed user: adam@example.net " +
91 "(Username: adam@example.net)\n" +
92 "DavicalRm - User not found: adam@example.net\n" +
93 "PostfixadminRm - Removed user: " +
94 "adam@example.net (adam@example.net)\n" +
95 "RoundcubeRm - Removed user: adam@example.net (User ID: 2)\n"
97 assert_equal(expected
, actual
)
99 # Now make sure the database has what we expect.
101 arm
= AgendavRm
.new(cfg
)
102 actual
= arm
.list_users()
104 assert_equal(expected
, actual
)
106 drm
= DavicalRm
.new(cfg
)
107 actual
= drm
.list_users()
108 expected
= ['alice@example.com']
109 assert_equal(expected
, actual
)
111 pfarm
= PostfixadminRm
.new(cfg
)
112 actual
= pfarm
.list_users()
113 expected
= ['alice@example.com',
117 assert_equal(expected
, actual
)
119 actual
= pfarm
.list_domains()
120 expected
= ['example.com', 'example.net']
121 assert_equal(expected
, actual
)
123 actual
= pfarm
.list_aliases()
124 expected
= [{'address' => 'alice@example.com',
125 'goto' => 'alice@example.com'},
126 {'address' => 'bob@example.com',
127 'goto' => 'bob@example.com'},
128 {'address' => 'beth@example.net',
129 'goto' => 'beth@example.net'},
130 {'address' => 'carol@example.net',
131 'goto' => 'carol@example.net'}]
132 assert_equal(expected
, actual
)
134 rrm
= RoundcubeRm
.new(cfg
)
135 actual
= rrm
.list_users()
136 expected
= ['alice@example.com']
137 assert_equal(expected
, actual
)
143 # This must (and should) run after test_rm_user().
145 cfg
= Configuration
.new(TESTCONF_PATH
)
146 argv = ["example.net"]
148 output_buffer
= StringIO
.new()
150 $stdout = output_buffer
151 plugin_class
= RmPlugin
.run(cfg
, *argv)
154 actual
= output_buffer
.string()
157 "AgendavRm - Removed domain: example.net (example.net)\n" +
158 "DavicalRm - Domain not found: example.net\n" +
159 "PostfixadminRm - Removed domain: example.net (example.net)\n" +
160 "RoundcubeRm - Removed domain: example.net (example.net)\n"
162 assert_equal(expected
, actual
)
164 # Now make sure the database has what we expect.
166 arm
= AgendavRm
.new(cfg
)
167 actual
= arm
.list_users()
169 assert_equal(expected
, actual
)
171 drm
= DavicalRm
.new(cfg
)
172 actual
= drm
.list_users()
173 expected
= ['alice@example.com']
174 assert_equal(expected
, actual
)
176 pfarm
= PostfixadminRm
.new(cfg
)
177 actual
= pfarm
.list_users()
178 expected
= ['alice@example.com', 'bob@example.com']
179 assert_equal(expected
, actual
)
181 actual
= pfarm
.list_domains()
182 expected
= ['example.com']
183 assert_equal(expected
, actual
)
185 actual
= pfarm
.list_aliases()
186 expected
= [{'address' => 'alice@example.com',
187 'goto' => 'alice@example.com'},
188 {'address' => 'bob@example.com',
189 'goto' => 'bob@example.com'}]
190 assert_equal(expected
, actual
)
192 rrm
= RoundcubeRm
.new(cfg
)
193 actual
= rrm
.list_users()
194 expected
= ['alice@example.com']
195 assert_equal(expected
, actual
)
201 cfg
= Configuration
.new(TESTCONF_PATH
)
202 connection
= connect_superuser()
204 cfg
.plugins
.each
do |plugin
|
205 plugin_dbname
= cfg
.send("#{plugin}_dbname")
206 query
= "DROP DATABASE #{plugin_dbname};"
207 connection
.query(query
)