From 89999ff8292d40bd72ca6cda167b5e4a454b9f0c Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Wed, 4 Nov 2015 00:18:45 -0500 Subject: [PATCH] Add a test case for prune. --- test/test_prune.rb | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 test/test_prune.rb diff --git a/test/test_prune.rb b/test/test_prune.rb new file mode 100644 index 0000000..94b8196 --- /dev/null +++ b/test/test_prune.rb @@ -0,0 +1,89 @@ +# WARNING: Test output is dependent on the order these classes include +# certain modules; i.e. on the 'require' order. +require 'common/domain' +require 'common/user' +require 'mailshears_test' +require 'minitest/autorun' +require 'prune/plugins/agendav' +require 'prune/plugins/davical' +require 'prune/plugins/dovecot' +require 'prune/plugins/postfixadmin' +require 'prune/plugins/roundcube' +require 'prune/prune_runner' + + +class TestPrune < MailshearsTest + + def test_single_prune + cfg = configuration() + + output_buffer = StringIO.new() + + $stdout = output_buffer + PrunePlugin.run(cfg) + $stdout = STDOUT + + actual = output_buffer.string() + + expected = + "AgendavPrune - Removed user booger@example.com.\n" + + "DavicalPrune - Removed user booger@example.com (Principal ID: 2).\n" + + "DovecotPrune - Removed user booger@example.com " + + "(#{cfg.dovecot_mail_root()}/example.com/booger).\n" + + "DovecotPrune - Removed user jeremy@example.com " + + "(#{cfg.dovecot_mail_root()}/example.com/jeremy).\n" + + "RoundcubePrune - Removed user booger@example.com (User ID: 2).\n" + + assert_equal(expected, actual) + + # Now make sure the database has what we expect. + + arm = AgendavPrune.new(cfg) + actual = arm.list_users() + expected = [User.new('adam@example.net')] + assert_equal(expected, actual) + + drm = DavicalPrune.new(cfg) + actual = drm.list_users() + expected = [User.new('alice@example.com')] + assert_equal(expected, actual) + + pfarm = PostfixadminPrune.new(cfg) + actual = pfarm.list_users() + expected = [User.new('alice@example.com'), + User.new('bob@example.com'), + User.new('adam@example.net'), + User.new('beth@example.net'), + User.new('carol@example.net')] + assert_equal(expected, actual) + + actual = pfarm.list_domains() + expected = [Domain.new('example.com'), Domain.new('example.net')] + assert_equal(expected, actual) + + actual = pfarm.list_aliases() + expected = [{'address' => 'alice@example.com', + 'goto' => 'alice@example.com'}, + {'address' => 'bob@example.com', + 'goto' => 'bob@example.com'}, + {'address' => 'adam@example.net', + 'goto' => 'adam@example.net'}, + {'address' => 'beth@example.net', + 'goto' => 'beth@example.net'}, + {'address' => 'carol@example.net', + 'goto' => 'carol@example.net'}] + assert_equal(expected, actual) + + rrm = RoundcubePrune.new(cfg) + actual = rrm.list_users() + expected = [User.new('alice@example.com'), User.new('adam@example.net')] + assert_equal(expected, actual) + + # Booger and Jeremy should get pruned. + assert(maildir_exists('example.com/alice')) + assert(maildir_exists('example.net/adam')) + assert(!maildir_exists('example.com/booger')) + assert(!maildir_exists('example.com/jeremy')) + end + +end -- 2.44.2