]>
gitweb.michael.orlitzky.com - mailshears.git/blob - test/test_mv.rb
1 # WARNING: Test output is dependent on the order these classes include
2 # certain modules; i.e. on the 'require' order.
3 require 'common/domain'
5 require 'mailshears_test'
6 require 'mv/plugins/davical'
7 require 'mv/plugins/dovecot'
8 require 'mv/plugins/postfixadmin'
9 require 'mv/plugins/roundcube'
10 require 'mv/mv_runner'
13 class TestMv
< MailshearsTest
17 src
= User
.new("alice@example.com")
18 dst
= User
.new("alice@example.net")
20 output_buffer
= StringIO
.new()
22 $stdout = output_buffer
23 MvPlugin
.run(cfg
, src
, dst
)
26 actual
= output_buffer
.string()
29 "DavicalMv - Moved user alice@example.com (Principal ID: 1) " +
30 "to alice@example.net (Principal ID: 1).\n" +
31 "DovecotMv - Moved user alice@example.com " +
32 "(#{cfg.dovecot_mail_root()}/example.com/alice) to " +
33 "alice@example.net (#{cfg.dovecot_mail_root()}/example.net/alice).\n" +
34 "PostfixadminMv - Moved user alice@example.com to alice@example.net.\n" +
35 "RoundcubeMv - Moved user alice@example.com (User ID: 1) to " +
36 "alice@example.net (User ID: 1).\n"
38 assert_equal(expected
, actual
)
40 # Now check the database.
42 dmv
= DavicalMv
.new(cfg
)
43 actual
= dmv
.list_users()
44 expected
= [User
.new('alice@example.net'), User
.new('booger@example.com')]
45 assert_equal(expected
.sort(), actual
.sort())
47 pfamv
= PostfixadminMv
.new(cfg
)
48 actual
= pfamv
.list_users()
49 expected
= [User
.new('alice@example.net'),
50 User
.new('bob@example.com'),
51 User
.new('adam@example.net'),
52 User
.new('beth@example.net'),
53 User
.new('carol@example.net')]
54 assert_equal(expected
.sort(), actual
.sort())
56 actual
= pfamv
.list_domains()
57 expected
= [Domain
.new('example.com'), Domain
.new('example.net')]
58 assert_equal(expected
.sort(), actual
.sort())
60 actual
= pfamv
.list_aliases()
61 expected
= [{'address' => 'adam@example.net',
62 'goto' => 'adam@example.net'},
63 {'address' => 'alice@example.net',
64 'goto' => 'alice@example.net,' +
68 {'address' => 'beth@example.net',
69 'goto' => 'beth@example.net'},
70 {'address' => 'bob@example.com',
71 'goto' => 'bob@example.com'},
72 {'address' => 'carol@example.net',
73 'goto' => 'carol@example.net'}]
74 expected
.each
{ |e
| assert(actual
.include?(e
)) } # can't sort dicts
75 actual
.each
{ |a
| assert(expected
.include?(a
)) } # can't sort dicts
78 rmv
= RoundcubeMv
.new(cfg
)
79 actual
= rmv
.list_users()
80 expected
= [User
.new('alice@example.net'),
81 User
.new('booger@example.com'),
82 User
.new('adam@example.net')]
83 assert_equal(expected
.sort(), actual
.sort())
85 # All the maildirs are still there.
86 assert(maildir_exists('example.net/alice'))
87 assert(maildir_exists('example.com/booger'))
88 assert(maildir_exists('example.com/jeremy'))
89 assert(maildir_exists('example.net/adam'))
95 # If we move a user and then move it back, we should wind up back
99 src
= User
.new("alice@example.com")
100 dst
= User
.new("alice@example.net")
102 output_buffer
= StringIO
.new()
104 $stdout = output_buffer
105 MvPlugin
.run(cfg
, src
, dst
)
106 MvPlugin
.run(cfg
, dst
, src
)
109 # Skip output verification, it's ugly. But make sure the database
110 # has what we expect.
112 dmv
= DavicalMv
.new(cfg
)
113 actual
= dmv
.list_users()
114 expected
= [User
.new('alice@example.com'), User
.new('booger@example.com')]
115 assert_equal(expected
.sort(), actual
.sort())
117 pfamv
= PostfixadminMv
.new(cfg
)
118 actual
= pfamv
.list_users()
119 expected
= [User
.new('alice@example.com'),
120 User
.new('bob@example.com'),
121 User
.new('adam@example.net'),
122 User
.new('beth@example.net'),
123 User
.new('carol@example.net')]
124 assert_equal(expected
.sort(), actual
.sort())
126 actual
= pfamv
.list_domains()
127 expected
= [Domain
.new('example.com'), Domain
.new('example.net')]
128 assert_equal(expected
.sort(), actual
.sort())
130 actual
= pfamv
.list_aliases()
131 expected
= [{'address' => 'adam@example.net',
132 'goto' => 'adam@example.net'},
133 {'address' => 'alice@example.com',
134 'goto' => 'alice@example.com,' +
135 'adam@example.net,' +
137 'carol@example.net'},
138 {'address' => 'beth@example.net',
139 'goto' => 'beth@example.net'},
140 {'address' => 'bob@example.com',
141 'goto' => 'bob@example.com'},
142 {'address' => 'carol@example.net',
143 'goto' => 'carol@example.net'}]
144 expected
.each
{ |e
| assert(actual
.include?(e
)) } # can't sort dicts
145 actual
.each
{ |a
| assert(expected
.include?(a
)) } # can't sort dicts
148 rmv
= RoundcubeMv
.new(cfg
)
149 actual
= rmv
.list_users()
150 expected
= [User
.new('alice@example.com'),
151 User
.new('booger@example.com'),
152 User
.new('adam@example.net')]
153 assert_equal(expected
.sort(), actual
.sort())
155 # All the maildirs are still there.
156 assert(maildir_exists('example.com/alice'))
157 assert(maildir_exists('example.com/booger'))
158 assert(maildir_exists('example.com/jeremy'))
159 assert(maildir_exists('example.net/adam'))