1<?php 2 3define('POSTFIXADMIN', 1); 4define('POSTFIXADMIN_CLI', 1); 5 6require_once(dirname(__FILE__) . '/../vendor/autoload.php'); 7require_once(dirname(__FILE__) . '/../common.php'); 8 9 10$CONF['default_language'] = 'en'; 11$CONF['language_hook'] = ''; 12 13if (getenv('DATABASE') == 'sqlite' || getenv('DATABASE') == false) { 14 $version = PHP_VERSION_ID; // try and stop different tests running at the same trying to use the same sqlite db at once 15 $db_file = dirname(__FILE__) . '/postfixadmin.sqlite.' . $version . '.test'; 16 $CONF['database_type'] = 'sqlite'; 17 $CONF['database_name'] = $db_file; 18 Config::write('database_type', 'sqlite'); 19 Config::write('database_name', $db_file); 20 clearstatcache(); 21 if (file_exists($db_file)) { 22 unlink($db_file); 23 } 24 touch($db_file); 25 26 error_log("Using: SQLite database for tests - $db_file"); 27} 28if (getenv('DATABASE') == 'postgresql') { 29 $user = getenv('PGUSER') ?: 'postgres'; 30 $pass = getenv('PGPASSWORD') ?: ''; 31 $host = getenv('PGHOST') ?: 'localhost'; 32 33 $CONF['database_type'] = 'pgsql'; 34 $CONF['database_user'] = $user; 35 $CONF['database_password'] = $pass; 36 $CONF['database_host'] = $host; 37 $CONF['database_name'] = 'postfixadmin'; 38 Config::write('database_type', 'pgsql'); 39 Config::write('database_user', $user); 40 Config::write('database_password', $pass); 41 Config::write('database_name', 'postfixadmin'); 42 Config::write('database_host', $host); 43 44 error_log("Using: PostgreSQL database for tests\n"); 45} 46 47if (getenv('DATABASE') == 'mysql') { 48 $expand_tilde = function ($path) { 49 if (function_exists('posix_getuid') && strpos($path, '~') !== false) { 50 $info = posix_getpwuid(posix_getuid()); 51 $path = str_replace('~', $info['dir'], $path); 52 } 53 54 return $path; 55 }; 56 57 $config = parse_ini_file($expand_tilde('~/.my.cnf')); 58 59 if (empty($config)) { 60 $config = ['user' => 'root', 'host' => '127.0.0.1', 'password' => '']; 61 } 62 63 if (isset($config['socket'])) { 64 $CONF['database_socket'] = $config['socket']; 65 Config::write('database_socket', $config['socket']); 66 } else { 67 $CONF['database_host'] = $config['host']; 68 Config::write('database_host', $config['host']); 69 } 70 71 $CONF['database_type'] = 'mysql'; 72 $CONF['database_user'] = $config['user']; 73 $CONF['database_password'] = $config['password']; 74 $CONF['database_name'] = 'postfixadmin'; 75 Config::write('database_type', 'mysql'); 76 Config::write('database_user', $config['user']); 77 Config::write('database_password', $config['password']); 78 Config::write('database_name', 'postfixadmin'); 79 80 error_log("Using: MySQL database for tests"); 81} 82 83try { 84 $db = db_connect(); 85} catch (Exception $e) { 86 echo "failed to connect to database\n"; 87 echo $e->getMessage(); 88 exit(1); 89} 90 91require_once(dirname(__FILE__) . '/../public/upgrade.php'); 92