63 lines
1.9 KiB
Perl
63 lines
1.9 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
use feature 'say';
|
|
|
|
use Test::Most tests => 2;
|
|
use Test::MockObject;
|
|
|
|
use Peertube::DL::Downloaders;
|
|
use JSON;
|
|
|
|
{
|
|
# GIVEN
|
|
my $ua = Test::MockObject->new;
|
|
my $base_response = Test::MockObject->new;
|
|
my $gocdn_response = Test::MockObject->new;
|
|
my $animeflv_response_file = 't/downloaders/animeflv_example_response.html';
|
|
my $animeflv_response_decoded;
|
|
my $download_data;
|
|
my $expected_download_data_url = 'https://example.com/anime_correct_url';
|
|
|
|
my $expected_download_data = { filename => 'animu-1.mp4', url => $expected_download_data_url };
|
|
open my $fh, '<', $animeflv_response_file;
|
|
$animeflv_response_decoded = join( '', <$fh> );
|
|
close $fh;
|
|
my $gocdn_url;
|
|
|
|
my $expected_gocdn_url =
|
|
'https://streamium.xyz/gocdn.php?v=QmoyaEVscFUwbDJkeUtaSVhZVTFOY2g4WkJ5akErWEhnNXJDVmJXVmFVK29MU1NUc1hXSFIxT1lJMzJ6YzdueXgvbzFkeFNJTU1kQWJ6MGkxNlFkeDFpZDZ3R01reDlWYUlqaEVmZldWaVZFVzlOQ2pESlA2RHJ4MFdCNTVnczQ=';
|
|
|
|
$ua->mock(
|
|
get => sub {
|
|
my $self = shift;
|
|
my $url = shift;
|
|
say STDERR $url;
|
|
$gocdn_url = $url;
|
|
return $gocdn_response;
|
|
}
|
|
);
|
|
|
|
$base_response->mock(
|
|
decoded_content => sub {
|
|
return $animeflv_response_decoded;
|
|
},
|
|
base => sub {
|
|
return 'https://animeflv.net/ver/animu-1';
|
|
}
|
|
);
|
|
|
|
$gocdn_response->mock(
|
|
is_success => sub {
|
|
1;
|
|
},
|
|
decoded_content => sub {
|
|
JSON::encode_json( { file => $expected_download_data_url } );
|
|
}
|
|
);
|
|
|
|
$download_data = Peertube::DL::Downloaders::gocdn( $ua, $base_response );
|
|
is $gocdn_url, $expected_gocdn_url, 'The url got from gocdn is correct.';
|
|
is_deeply $download_data, $expected_download_data, 'The download data got is the expected one.';
|
|
}
|