use strict;
subtest 'api_url and api_key_json required' => sub {
eval { WWW::FCM::HTTP::V1->new };
like $@, qr/Usage: WWW::FCM::HTTP::V1->new\(\{ api_url => \$api_url, api_key_json => \$api_key_json \}\)/;
};
subtest 'api_url must be defined' => sub {
eval { WWW::FCM::HTTP::V1->new(api_url => undef, api_key_json => '{}') };
like $@, qr/Usage: WWW::FCM::HTTP::V1->new\(\{ api_url => \$api_url, api_key_json => \$api_key_json \}\)/;
};
subtest 'api_key_json must be defined' => sub {
eval { WWW::FCM::HTTP::V1->new(api_url => 'api_url', api_key_json => undef) };
like $@, qr/Usage: WWW::FCM::HTTP::V1->new\(\{ api_url => \$api_url, api_key_json => \$api_key_json \}\)/;
};
subtest 'success' => sub {
my $fcm = WWW::FCM::HTTP::V1->new(api_url => 'api_url', api_key_json => '{ "foo": "bar" }');
isa_ok $fcm, 'WWW::FCM::HTTP::V1';
isa_ok $fcm->{sender}, 'WWW::FCM::HTTP::V1::OAuth';
is $fcm->{api_url}, 'api_url';
is $fcm->{sender}->{api_key_json}, '{ "foo": "bar" }';
};
subtest 'success (hashref)' => sub {
my $fcm = WWW::FCM::HTTP::V1->new({ api_url => 'api_url', api_key_json => '{ "foo": "bar" }' });
isa_ok $fcm, 'WWW::FCM::HTTP::V1';
isa_ok $fcm->{sender}, 'WWW::FCM::HTTP::V1::OAuth';
is $fcm->{api_url}, 'api_url';
is $fcm->{sender}->{api_key_json}, '{ "foo": "bar" }';
};
subtest 'set sender' => sub {
my $fcm = WWW::FCM::HTTP::V1->new(
api_key_json => '{}',
sender => WWW::FCM::HTTP::V1::OAuth->new(api_key_json => '{ "type": "service_account" }'),
);
isa_ok $fcm, 'WWW::FCM::HTTP::V1';
isa_ok $fcm->{sender}, 'WWW::FCM::HTTP::V1::OAuth';
is $fcm->{sender}->{api_key_json}, '{ "type": "service_account" }';
};
done_testing;