#!/usr/bin/perl

# Tests that hit the network

use strict;
BEGIN {
	$|  = 1;
	$^W = 1;
}
use Test::More;
use SMS::Send ();

my $accountid    = $ENV{SMS_ACCOUNTID};
my $password = $ENV{SMS_PASSWORD};
my $email    = $ENV{SMS_EMAIL};
my $to       = $ENV{SMS_TO};
my $text     = $ENV{SMS_TEXT} || "Testing SMS::Send::AU::MyVodafone";
if ( $accountid and $password and $to and $email ) {
	plan( tests => 3 );
} else {
	plan( skip_all => "Set environment variables SMS_ACCOUNTID, SMS_PASSWORD, SMS_EMAIL and SMS_TO to run a live test, eg SMS_ACCOUNTID=CI000000 SMS_PASSWORD=somepw SMS_EMAIL=someemail\@example.com make test" );
}

sub dies_like {
	my ($code, $regexp) = (shift, shift);
	eval { &$code() };
	like( $@, $regexp, $_[0] || "Dies as expected with message like $regexp" );
}





#####################################################################
# Testing an actual working login

my $sender = SMS::Send->new( 'RedOxygen',
		_accountid  => $accountid,
		_email      => $email,
		_password   => $password
	);
isa_ok( $sender, 'SMS::Send' );

my $rv;

# Send a message with a valid account to a bogus number
dies_like( sub {
	$rv = $sender->send_sms(
		text => 'Message should fail',
		to   => '+61999999999'
	); },
	qr/2015/
);

# Send a real message
$rv = $sender->send_sms(
	text => $text,
	to   => $to,
	);
ok( $rv, '->send_sms sends a live message ok' );