The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
use strict;
use warnings;
use Test::More;
use Flickr::API::People;

if (defined($ENV{MAKETEST_OAUTH_CFG})) {

    plan( tests => 16 );
}
else {
    plan(skip_all => 'People tests require that MAKETEST_OAUTH_CFG points to a valid config, see README.');
}


my $config_file  = $ENV{MAKETEST_OAUTH_CFG};
my $config_ref;

my $api;

my $fileflag=0;
if (-r $config_file) { $fileflag = 1; }
is(
    $fileflag,
    1,
    "Is the config file: $config_file, readable?"
);


SKIP: {

    skip "Skipping people tests, oauth config isn't there or is not readable", 7   ##############
        if $fileflag == 0;

    $api = Flickr::API::People->import_storable_config($config_file);

    isa_ok($api, 'Flickr::API::People');

    is(
        $api->is_oauth,
        1,
        'Does this Flickr::API::People object identify as OAuth'
    );

    is(
        $api->api_success,
        1,
        'Did people api initialize successful'
    );

    my $valsflag=0;
    my $values_file;

    if (defined($ENV{MAKETEST_VALUES})) {

        $values_file  = $ENV{MAKETEST_VALUES};
        if (-r $values_file) { $valsflag = 1; }
       
    }


  SKIP: {
        skip "Skipping some people tests, values file isn't there or is not readable", 12   ##########
            if $valsflag == 0;

        is(
            $valsflag,
            1,
            "Is the values file: $values_file, readable?"
        );

        my %peoplevalues = (
            'search_email' => '',
            'search_username'  => '',
        );

        open my $VALUES, "<", $values_file or die;

        while (<$VALUES>) {

            chomp;
            s/\s+//g;
            my ($key,$val) = split(/=/);
            if (defined($peoplevalues{$key})) { $peoplevalues{$key} = $val; }

        }

        isnt(
            $peoplevalues{'search_email'},
            '',
            'Is there an email to search for'
        );

        isnt(
            $peoplevalues{'search_user'},
            '',
            'Is there a userid to search for'
         );

        isnt(
            $api->findByEmail($peoplevalues{'search_email'}),
            '',
            'did we get a username from an email'
        );

        is(
            $api->findByEmail('a-non-existent-email-address@nowhere.noway.nohow.nom'),
            undef,
            'did we fail to get username on bogus email address'
        );

        isnt(
            $api->findByUsername($peoplevalues{'search_username'}),
            '',
            'did we get a username from a username search'
        );

        is(
            $api->findByUsername('a-non-existent-user-name-nom-nom.noway.nohow.nom'),
            undef,
            'did we fail to get username on bogus username search'
        );

        is(
            $api->findByUsername($peoplevalues{'search_username'}),
            $peoplevalues{'search_username'},
            'did we get the correct username from a username search'
        );

        is(
            $api->username,
            $peoplevalues{'search_username'},
            'did we get the correct username from the api object'
        );

        isnt(
            $api->nsid,
            '',
            'did we get and nsid from the username search'
        );

        is(
            ref($api->user),
            'HASH',
            'did we get a user hash from the username search'
        );


        is(
            $api->findByUsername('a-non-existent-user-name-nom-nom.noway.nohow.nom'),
            undef,
            'did we fail to get username on bogus username search'
        );

    } # vals File

} # oauth config


exit;

__END__


# Local Variables:
# mode: Perl
# End: