Apple-AppStoreConnect
view release on metacpan or search on metacpan
);
my $url = $ua->{calls}->[0]->[0];
like($url, qr#^\Q${base}apps/1/betaFeedbackScreenshotSubmissions\E\?#, 'Screenshot request URL');
like($url, qr/(?:^|[?&])filter\[appPlatform\]=IOS(?:&|$)/, 'Screenshot request uses app platform filter');
like($url, qr/(?:^|[?&])limit=50(?:&|$)/, 'Screenshot request defaults limit');
like($url, qr/(?:^|[?&])sort=-createdDate(?:&|$)/, 'Screenshot request defaults newest first');
like(
$url,
qr/(?:^|[?&])fields\[betaFeedbackScreenshotSubmissions\]=createdDate,comment,appPlatform,screenshots(?:&|$)/,
'Screenshot request passes fields'
);
};
subtest 'get_beta_feedback_crash_submissions' => sub {
my $ua = TestUA->new(
'{"data":[{"type":"betaFeedbackCrashSubmissions","id":"c1","attributes":{"createdDate":"2026-06-24T11:00:00Z","comment":"Crashed","deviceModel":"iPhone16,2"}}]}',
'{"data":{"type":"betaCrashLogs","id":"cl1","attributes":{"logText":"stack trace"}}}'
);
my $asc3 = Apple::AppStoreConnect->new(%params, key => $key, ua => $ua);
my %request_params = (
'fields[betaFeedbackCrashSubmissions]' => 'createdDate,comment,deviceModel',
'fields[betaCrashLogs]' => 'logText',
);
my $out = $asc3->get_beta_feedback_crash_submissions(
id => 1,
limit => 25,
crash_log => 1,
params => \%request_params,
);
is(
$out,
[
{
id => 'c1',
type => 'betaFeedbackCrashSubmissions',
createdDate => '2026-06-24T11:00:00Z',
comment => 'Crashed',
deviceModel => 'iPhone16,2',
crashLog => {
id => 'cl1',
type => 'betaCrashLogs',
logText => 'stack trace',
},
},
],
'Crash feedback with crash log returned'
);
my $list_url = $ua->{calls}->[0]->[0];
like($list_url, qr#^\Q${base}apps/1/betaFeedbackCrashSubmissions\E\?#, 'Crash request URL');
like($list_url, qr/(?:^|[?&])limit=25(?:&|$)/, 'Crash request uses limit');
like($list_url, qr/(?:^|[?&])sort=-createdDate(?:&|$)/, 'Crash request defaults newest first');
like(
$list_url,
qr/(?:^|[?&])fields\[betaFeedbackCrashSubmissions\]=createdDate,comment,deviceModel(?:&|$)/,
'Crash request passes fields'
);
unlike($list_url, qr/fields\[betaCrashLogs\]/, 'Crash log fields not passed to list endpoint');
is(
$ua->{calls}->[1]->[0],
"${base}betaFeedbackCrashSubmissions/c1/crashLog?fields[betaCrashLogs]=logText",
'Crash log request passes crash log fields'
);
is(
\%request_params,
{
'fields[betaFeedbackCrashSubmissions]' => 'createdDate,comment,deviceModel',
'fields[betaCrashLogs]' => 'logText',
},
'Caller params are not modified'
);
};
subtest 'Test cover' => sub {
is(Apple::AppStoreConnect::_build_url(url => $base, params=>{}), $base, "Blank params");
if ($] >= 5.012) {
my $asc2 = Apple::AppStoreConnect->new(%params, key => $key, curl => 1);
my $out = $asc2->get_apps();
is($out, $ref2, 'Received curl response');
$json = '"test"';
$out = $asc->get_apps();
is($out, "test", 'No ref response');
}
};
done_testing;
( run in 1.324 second using v1.01-cache-2.11-cpan-2e0ccfb7a10 )