]> gitweb.michael.orlitzky.com - mailshears.git/blob - test/test_mv.rb
**/*: remove AgenDAV support
[mailshears.git] / 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'
4 require 'common/user'
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'
11
12
13 class TestMv < MailshearsTest
14
15 def test_mv_once
16 cfg = configuration()
17 src = User.new("alice@example.com")
18 dst = User.new("alice@example.net")
19
20 output_buffer = StringIO.new()
21
22 $stdout = output_buffer
23 MvPlugin.run(cfg, src, dst)
24 $stdout = STDOUT
25
26 actual = output_buffer.string()
27
28 expected =
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"
37
38 assert_equal(expected, actual)
39
40 # Now check the database.
41
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())
46
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())
55
56 actual = pfamv.list_domains()
57 expected = [Domain.new('example.com'), Domain.new('example.net')]
58 assert_equal(expected.sort(), actual.sort())
59
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,' +
65 'adam@example.net,' +
66 'bob@example.com,' +
67 'carol@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
76
77
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())
84
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'))
90 end
91
92
93 def test_mv_twice
94 #
95 # If we move a user and then move it back, we should wind up back
96 # where we started.
97 #
98 cfg = configuration()
99 src = User.new("alice@example.com")
100 dst = User.new("alice@example.net")
101
102 output_buffer = StringIO.new()
103
104 $stdout = output_buffer
105 MvPlugin.run(cfg, src, dst)
106 MvPlugin.run(cfg, dst, src)
107 $stdout = STDOUT
108
109 # Skip output verification, it's ugly. But make sure the database
110 # has what we expect.
111
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())
116
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())
125
126 actual = pfamv.list_domains()
127 expected = [Domain.new('example.com'), Domain.new('example.net')]
128 assert_equal(expected.sort(), actual.sort())
129
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,' +
136 'bob@example.com,' +
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
146
147
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())
154
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'))
160 end
161
162 end