]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - test/mailshears_test.rb
Wrap all close() calls in "ensure" blocks and simplify DB connection-making.
[mailshears.git] / test / mailshears_test.rb
index 483c587a08d0a7682de79def66096ccfe50d4dac..96a6e35e6c6ccf5343adca27d4a806031ce0ba33 100644 (file)
@@ -17,8 +17,7 @@ class MailshearsTest < MiniTest::Unit::TestCase
     # Check if the given mail directory of the form "example.com/user"
     # exists.
     cfg = configuration()
     # Check if the given mail directory of the form "example.com/user"
     # exists.
     cfg = configuration()
-    mail_root = cfg.send('mail_root')
-    return File.directory?("#{mail_root}/#{dir}")
+    return File.directory?("#{cfg.dovecot_mail_root()}/#{dir}")
   end
 
   def connect_superuser()
   end
 
   def connect_superuser()
@@ -33,13 +32,8 @@ class MailshearsTest < MiniTest::Unit::TestCase
     db_user = 'postgres'
     db_pass = nil
 
     db_user = 'postgres'
     db_pass = nil
 
-    connection = PGconn.connect(db_host,
-                                db_port,
-                                db_opts,
-                                db_tty,
-                                db_name,
-                                db_user,
-                                db_pass)
+    connection = PG::Connection.new(db_host, db_port, db_opts, db_tty,
+                                    db_name, db_user, db_pass)
 
     return connection
   end
 
     return connection
   end
@@ -66,33 +60,39 @@ class MailshearsTest < MiniTest::Unit::TestCase
     #
     # 1. agendav_test
     #
     #
     # 1. agendav_test
     #
-    #   +----------------------------+
-    #   |             prefs          |
-    #   +------------------+---------+
-    #   |  username        | options |
-    #   +------------------+---------+
-    #   | adam@example.net | herp    |
-    #   +------------------+---------+
+    #   +------------------------------+
+    #   |              prefs           |
+    #   +--------------------+---------+
+    #   |      username      | options |
+    #   +--------------------+---------+
+    #   |  adam@example.net  | herp    |
+    #   +--------------------+---------+
+    #   | booger@example.com | herp    |
+    #   +------------------  +---------+
     #
     #
     #
     #
-    #   +------------------------------------------------------+
-    #   |                        shared                        |
-    #   +-----+------------------+----------+------------------+
-    #   | sid |    user_from     | calendar |    user_which    |
-    #   +-----+------------------+----------+------------------+
-    #   |   1 | adam@example.net | derp     | beth@example.net |
-    #   +-----+------------------+----------+------------------+
+    #   +---------------------------------------------------------+
+    #   |                         shared                          |
+    #   +-----+--------------------+----------+-------------------+
+    #   | sid |     user_from      | calendar |    user_which     |
+    #   +-----+--------------------+----------+-------------------+
+    #   |   1 |  adam@example.net  | derp     | beth@example.net  |
+    #   +-----+--------------------+----------+-------------------+
+    #   |   2 | booger@example.com | derp     | carol@example.net |
+    #   +-----+--------------------+----------+-------------------+
     #
     #
     # 2. davical_test
     #
     #
     #
     # 2. davical_test
     #
-    #   +-------------------------------------------------------+
-    #   |                        usr                            |
-    #   +---------+--------+----------------+-------------------+
-    #   | user_no | active |    joined      |     username      |
-    #   +---------+--------+----------------+-------------------+
-    #   |      17 | t      | 2014-01-04 ... | alice@example.com |
-    #   +---------+--------+----------------+-------------------+
+    #   +--------------------------------------------------------+
+    #   |                         usr                            |
+    #   +---------+--------+----------------+--------------------+
+    #   | user_no | active |    joined      |      username      |
+    #   +---------+--------+----------------+--------------------+
+    #   |      17 | t      | 2014-01-04 ... | alice@example.com  |
+    #   +---------+--------+----------------+--------------------+
+    #   |      18 | t      | 2014-01-04 ... | booger@example.com |
+    #   +---------+--------+----------------+--------------------+
     #
     #
     #   +-----------------------------------------+
     #
     #
     #   +-----------------------------------------+
@@ -102,6 +102,8 @@ class MailshearsTest < MiniTest::Unit::TestCase
     #   +---------+--------------+----------------+
     #   |      17 | dumb setting | its dumb value |
     #   +---------+--------------+----------------+
     #   +---------+--------------+----------------+
     #   |      17 | dumb setting | its dumb value |
     #   +---------+--------------+----------------+
+    #   |      18 | dumb setting | its dumb value |
+    #   +---------+--------------+----------------+
     #
     #
     # 3. postfixadmin_test
     #
     #
     # 3. postfixadmin_test
@@ -166,22 +168,27 @@ class MailshearsTest < MiniTest::Unit::TestCase
     # 4. roundcube_test
     #
     #
     # 4. roundcube_test
     #
     #
-    #   +---------+-------------------+
-    #   | user_id |     username      |
-    #   +---------+-------------------+
-    #   |       1 | alice@example.com |
-    #   +---------+-------------------+
-    #   |       2 | adam@example.net  |
-    #   +---------+-------------------+
+    #   +---------+--------------------+
+    #   | user_id |     username       |
+    #   +---------+--------------------+
+    #   |       1 | alice@example.com  |
+    #   +---------+--------------------+
+    #   |       2 | booger@example.com |
+    #   +---------+--------------------+
+    #   |       3 | adam@example.net   |
+    #   +---------+--------------------+
+
+    # First make sure we get rid of everything so we don't get random
+    # failures from databases and directories that already exist.
+    teardown()
 
     cfg = configuration()
 
     # First create the "mail directories".
 
     cfg = configuration()
 
     # First create the "mail directories".
-    mail_root = cfg.send('mail_root')
-    FileUtils.mkdir_p("#{mail_root}/example.com/alice")
-    FileUtils.mkdir_p("#{mail_root}/example.com/booger")
-    FileUtils.mkdir_p("#{mail_root}/example.com/jeremy")
-    FileUtils.mkdir_p("#{mail_root}/example.net/adam")
+    FileUtils.mkdir_p("#{cfg.dovecot_mail_root()}/example.com/alice")
+    FileUtils.mkdir_p("#{cfg.dovecot_mail_root()}/example.com/booger")
+    FileUtils.mkdir_p("#{cfg.dovecot_mail_root()}/example.com/jeremy")
+    FileUtils.mkdir_p("#{cfg.dovecot_mail_root()}/example.net/adam")
 
     # Now the databases and their content.
     connection = connect_superuser()
 
     # Now the databases and their content.
     connection = connect_superuser()
@@ -199,13 +206,10 @@ class MailshearsTest < MiniTest::Unit::TestCase
       plugin_dbuser = cfg.send("#{plugin}_dbuser")
       plugin_dbpass = cfg.send("#{plugin}_dbpass")
 
       plugin_dbuser = cfg.send("#{plugin}_dbuser")
       plugin_dbpass = cfg.send("#{plugin}_dbpass")
 
-      plugin_conn = PGconn.connect(plugin_dbhost,
-                                   plugin_dbport,
-                                   plugin_dbopts,
-                                   plugin_dbtty,
-                                   plugin_dbname,
-                                   plugin_dbuser,
-                                   plugin_dbpass)
+      plugin_conn = PG::Connection.new(plugin_dbhost, plugin_dbport,
+                                       plugin_dbopts, plugin_dbtty,
+                                       plugin_dbname, plugin_dbuser,
+                                       plugin_dbpass)
 
       sql = File.open("test/sql/#{plugin}.sql").read()
       plugin_conn.query(sql)
 
       sql = File.open("test/sql/#{plugin}.sql").read()
       plugin_conn.query(sql)
@@ -223,18 +227,21 @@ class MailshearsTest < MiniTest::Unit::TestCase
     cfg = configuration()
     connection = connect_superuser()
 
     cfg = configuration()
     connection = connect_superuser()
 
+    # Don't emit notices about missing tables. Why this happens when I
+    # explicitly say IF EXISTS is beyond me.
+    connection.set_notice_processor{}
+
     cfg.plugins.each do |plugin|
       plugin_dbname = cfg.send("#{plugin}_dbname")
       next if plugin_dbname.nil? # Skip the dovecot plugin
     cfg.plugins.each do |plugin|
       plugin_dbname = cfg.send("#{plugin}_dbname")
       next if plugin_dbname.nil? # Skip the dovecot plugin
-      query = "DROP DATABASE #{plugin_dbname};"
+      query = "DROP DATABASE IF EXISTS #{plugin_dbname};"
       connection.query(query)
     end
 
     connection.close()
 
     # Get rid of the maildirs.
       connection.query(query)
     end
 
     connection.close()
 
     # Get rid of the maildirs.
-    mail_root = cfg.send('mail_root')
-    FileUtils.rm_r(mail_root)
+    FileUtils.rm_rf(cfg.dovecot_mail_root())
   end
 
 end
   end
 
 end