<?php

use PrivateBin\Data\Database;
use PrivateBin\PrivateBin;
use PrivateBin\Persistence\ServerSalt;
use PrivateBin\Persistence\TrafficLimiter;

require_once 'PrivateBinTest.php';

class PrivateBinWithDbTest extends PrivateBinTest
{
    private $_options = array(
        'usr' => null,
        'pwd' => null,
        'opt' => array(
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_PERSISTENT => true
        ),
    );

    public function setUp()
    {
        /* Setup Routine */
        $this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'privatebin_data';
        if (!is_dir($this->_path)) {
            mkdir($this->_path);
        }
        ServerSalt::setPath($this->_path);
        $this->_options['dsn'] = 'sqlite:' . $this->_path . DIRECTORY_SEPARATOR . 'tst.sq3';
        $this->_model = Database::getInstance($this->_options);
        $this->reset();
    }

    public function reset()
    {
        parent::reset();
        // but then inject a db config
        $options = parse_ini_file(CONF, true);
        $options['model'] = array(
            'class' => 'Database',
        );
        $options['purge']['dir'] = $this->_path;
        $options['traffic']['dir'] = $this->_path;
        $options['model_options'] = $this->_options;
        Helper::confBackup();
        Helper::createIniFile(CONF, $options);
    }
}