The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- mode: cperl; tab-width: 8; indent-tabs-mode: nil; basic-offset: 2 -*-
# vim:ts=8:sw=2:et:sta:sts=2
use strict;
use warnings;
use Test::More;
use English qw(-no_match_vars);

eval {
  require DBD::mysql;
  plan tests => 5;
} or do {
  plan skip_all => 'DBD::mysql not installed';
};

use_ok('ClearPress::driver::mysql');

{
  my $drv = ClearPress::driver::mysql->new({
                                            dbname => '___',
                                            dbhost => 'localhost',
                                            dbport => 65535,
                                           });

  isa_ok($drv, 'ClearPress::driver::mysql');

  eval {
    my $dbh = $drv->dbh();
  };
  like($EVAL_ERROR, qr/failed/mix, 'eval error');
}

{
  my $args;
  no warnings qw(redefine once);
  my $old = \&DBI::connect;
  local *DBI::connect = sub { $args = \@_; return $old->(@{$args}); };
  my $drv = ClearPress::driver::mysql->new({
                                            dsn_opts => {
                                                         mysql_ssl         => 1,
                                                         mysql_ssl_ca_file => '/home/ubuntu/rds-cert.pem',
                                                        },
                                            dbname => '___',
                                            dbhost => 'localhost',
                                            dbport => 65535,
                                           });

  eval {
    my $dbh = $drv->dbh();
  };

  is($args->[1], q[DBI:mysql:database=___;host=localhost;port=65535;mysql_ssl=1;mysql_ssl_ca_file=/home/ubuntu/rds-cert.pem], q[RDS / SSL support]);
}

{
  my $args;
  no warnings qw(redefine once);
  my $old = \&DBI::connect;
  local *DBI::connect = sub { $args = \@_; return $old->(@{$args}); };
  my $drv = ClearPress::driver::mysql->new({
                                            dsn_opts => q[mysql_ssl=1;mysql_ssl_ca_file=/home/ubuntu/rds-cert.pem],
                                            dbname => '___',
                                            dbhost => 'localhost',
                                            dbport => 65535,
                                           });

  eval {
    my $dbh = $drv->dbh();
  };

  is($args->[1], q[DBI:mysql:database=___;host=localhost;port=65535;mysql_ssl=1;mysql_ssl_ca_file=/home/ubuntu/rds-cert.pem], q[RDS / SSL support]);
}