]> gitweb.michael.orlitzky.com - mailshears.git/blob - test/test_rm.rb
mailshears.gemspec: bump version to 0.1.0
[mailshears.git] / test / test_rm.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 'rm/plugins/davical'
7 require 'rm/plugins/dovecot'
8 require 'rm/plugins/postfixadmin'
9 require 'rm/plugins/roundcube'
10 require 'rm/rm_runner'
11
12
13 class TestRm < MailshearsTest
14
15 def test_rm_user
16 cfg = configuration()
17 users = [ User.new("adam@example.net") ]
18
19 output_buffer = StringIO.new()
20
21 $stdout = output_buffer
22 RmPlugin.run(cfg, *users)
23 $stdout = STDOUT
24
25 actual = output_buffer.string()
26
27 expected =
28 "DavicalRm - User adam@example.net not found.\n" +
29 "DovecotRm - Removed user adam@example.net " +
30 "(#{cfg.dovecot_mail_root}/example.net/adam).\n" +
31 "PostfixadminRm - Removed user adam@example.net.\n" +
32 "RoundcubeRm - Removed user adam@example.net (User ID: 3).\n"
33
34 assert_equal(expected, actual)
35
36 # Now make sure the database has what we expect.
37
38 drm = DavicalRm.new(cfg)
39 actual = drm.list_users()
40 expected = [User.new('alice@example.com'), User.new('booger@example.com')]
41 assert_equal(expected, actual)
42
43 pfarm = PostfixadminRm.new(cfg)
44 actual = pfarm.list_users()
45 expected = [User.new('alice@example.com'),
46 User.new('bob@example.com'),
47 User.new('beth@example.net'),
48 User.new('carol@example.net')]
49 assert_equal(expected, actual)
50
51 actual = pfarm.list_domains()
52 expected = [Domain.new('example.com'), Domain.new('example.net')]
53 assert_equal(expected, actual)
54
55 actual = pfarm.list_aliases()
56 expected = [{'address' => 'alice@example.com',
57 'goto' => 'alice@example.com,' +
58 'bob@example.com,' +
59 'carol@example.net'},
60 {'address' => 'beth@example.net',
61 'goto' => 'beth@example.net'},
62 {'address' => 'bob@example.com',
63 'goto' => 'bob@example.com'},
64 {'address' => 'carol@example.net',
65 'goto' => 'carol@example.net'}]
66 expected.each { |e| assert(actual.include?(e)) } # can't sort dicts
67 actual.each { |a| assert(expected.include?(a)) } # can't sort dicts
68
69 rrm = RoundcubeRm.new(cfg)
70 actual = rrm.list_users()
71 expected = [User.new('alice@example.com'), User.new('booger@example.com')]
72 assert_equal(expected, actual)
73
74 # Check that adam's directory is gone but that the rest remain.
75 assert(maildir_exists('example.com/alice'))
76 assert(maildir_exists('example.com/booger'))
77 assert(maildir_exists('example.com/jeremy'))
78 assert(!maildir_exists('example.net/adam'))
79 end
80
81
82 def test_rm_domain
83 cfg = configuration()
84 domains = [Domain.new("example.net")]
85
86 output_buffer = StringIO.new()
87
88 $stdout = output_buffer
89 RmPlugin.run(cfg, *domains)
90 $stdout = STDOUT
91
92 actual = output_buffer.string()
93
94 expected =
95 "DavicalRm - Domain example.net not found.\n" +
96 "DovecotRm - Removed domain example.net " +
97 "(#{cfg.dovecot_mail_root}/example.net).\n" +
98 "PostfixadminRm - Removed domain example.net.\n" +
99 "RoundcubeRm - Removed domain example.net.\n"
100
101 assert_equal(expected, actual)
102
103 # Now make sure the database has what we expect.
104
105 drm = DavicalRm.new(cfg)
106 actual = drm.list_users()
107 expected = [User.new('alice@example.com'), User.new('booger@example.com')]
108 assert_equal(expected, actual)
109
110 pfarm = PostfixadminRm.new(cfg)
111 actual = pfarm.list_users()
112 expected = [User.new('alice@example.com'),
113 User.new('bob@example.com')]
114 assert_equal(expected, actual)
115
116 actual = pfarm.list_domains()
117 expected = [Domain.new('example.com')]
118 assert_equal(expected, actual)
119
120 actual = pfarm.list_aliases()
121 expected = [{'address' => 'alice@example.com',
122 'goto' => 'alice@example.com,bob@example.com'},
123 {'address' => 'bob@example.com',
124 'goto' => 'bob@example.com'}]
125 expected.each { |e| assert(actual.include?(e)) } # can't sort dicts
126 actual.each { |a| assert(expected.include?(a)) } # can't sort dicts
127
128 rrm = RoundcubeRm.new(cfg)
129 actual = rrm.list_users()
130 expected = [User.new('alice@example.com'), User.new('booger@example.com')]
131 assert_equal(expected, actual)
132
133 # Check that example.net's directory is gone but that the rest remain.
134 assert(maildir_exists('example.com/alice'))
135 assert(maildir_exists('example.com/booger'))
136 assert(maildir_exists('example.com/jeremy'))
137 assert(!maildir_exists('example.net'))
138 end
139
140
141 end