#!/usr/bin/perl

use strict;
use FindBin;
use lib "$FindBin::Bin";
use Mcds::McdsCalypso;

my $tmp = $ENV{'AUTOPKGTEST_TMP'} // File::Temp->newdir();
File::Path::make_path($tmp);
my $mcdsrc = "$tmp/mcdsrc";

my $m = Mcds::McdsCalypso->new(
  {
    'dir' => $tmp,
    'calypso' => { },
  },
  Mcds::McdsCalypso::with_htpasswd($tmp)
);
my ($user, $password) = $m->create_random_user();
my $url = $m->go(["debian/tests/data/contacts.vcf"]);
my $results = shift;
my $reference = undef;
if (!defined $results) {
  $results="$tmp/results";
  $reference="debian/tests/data/reference-simple";
}

my $mcds_config = { '_' => {
  'url' => $url,
  'netrc' => 'yes',
}};
Config::INI::Writer->write_file($mcds_config, $mcdsrc);

# Don't overwrite user's .netrc:
$ENV{'HOME'}="$tmp";

open (my $NETRC, '>', "$ENV{'HOME'}/.netrc");
printf $NETRC <<"EOF";
machine localhost
login $user
password $password

EOF
close $NETRC;
chmod 0600, "$ENV{'HOME'}/.netrc";

printf("netrc:\n");
system("cat $ENV{'HOME'}/.netrc");

!system("mcds -c $mcdsrc King | tee $results") or die "fail";
!system("mcds -c $mcdsrc Kin2 | tee -a $results") or die "fail";

# And a diagnostic run for debugging failures:
system("mcds -v -c $mcdsrc King 2>&1");

$m->stop_server();

if (defined $reference) {
  !system("diff -u $reference $results >&2") or die "results did not match reference";
}


