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