diff options
Diffstat (limited to 't')
-rw-r--r-- | t/40-response.t | 44 | ||||
-rw-r--r-- | t/60-media.t | 69 |
2 files changed, 76 insertions, 37 deletions
diff --git a/t/40-response.t b/t/40-response.t index cc219b2..8bc3569 100644 --- a/t/40-response.t +++ b/t/40-response.t @@ -2,24 +2,38 @@ use lib 'lib'; use Test; use JSON::Fast; use Matrix::Response; -plan 7; +plan 2; -my $test-file = 'sync.json'; +subtest 'Sync', { + plan 7; + my $test-file = 'sync.json'; + my $data; -unless $test-file.IO.f { - skip-rest 'Missing sync.json to test'; - exit; -} + if $test-file.IO.f { + $data = from-json($test-file.IO.slurp); + lives-ok { Matrix::Response::Sync.new($test-file.IO.slurp) }, 'Sync.new accepts Str'; + lives-ok { Matrix::Response::Sync.new($data) }, 'Sync.new accepts Associative'; -my $data = from-json($test-file.IO.slurp); + my $res = Matrix::Response::Sync.new($data); + can-ok $res, 'joined-rooms', 'can .joined-rooms'; + can-ok $res, 'presence', 'can .presence'; -ok $data; -lives-ok { Matrix::Response::Sync.new($test-file.IO.slurp) }; -lives-ok { Matrix::Response::Sync.new($data) }; + isa-ok $res.joined-rooms, List, '.joined-rooms returns a List'; + isa-ok $res.presence, List, '.presence returns a List'; -my $res = Matrix::Response::Sync.new($data); -can-ok $res, 'joined-rooms'; -can-ok $res, 'presence'; + } else { + skip 'Missing sync.json to test', 7; + } -isa-ok $res.joined-rooms, List; -isa-ok $res.presence, List; +}; + +subtest 'MediaStore', { + plan 4; + my %config = 'm.upload.size' => 5000; + my $config-response = Matrix::Response::MediaStore::Config.new(|%config); + + isa-ok $config-response, Matrix::Response::MediaStore::Config; + can-ok $config-response, 'upload-size'; + isa-ok $config-response.upload-size, Int; + is $config-response.upload-size, %config<m.upload.size>, 'correct upload size'; +}; diff --git a/t/60-media.t b/t/60-media.t index 602b0fc..5601d8a 100644 --- a/t/60-media.t +++ b/t/60-media.t @@ -3,39 +3,40 @@ use Test; use Matrix::Client::MediaStore; use Matrix::Client::Exception; -plan 6; - my $path = $*TMPDIR.add('matrix-client-test'); LEAVE { unlink $path; } $path.spurt("") unless $path.f; -# Mock the post-bin method of Matrix::Client::Requester. -my $media = Matrix::Client::MediaStore.new(:home-server("1234")) but role { - has %.called-with; - method post-bin(Str $path, Buf $buf, :$content-type) { - %.called-with<path> = $path; - %.called-with<buf> = $buf; - %.called-with<content-type> = $content-type; +subtest 'Upload', { + plan 5; + # Mock the post-bin method of Matrix::Client::Requester. + my $media = Matrix::Client::MediaStore.new(:home-server("1234")) but role { + has %.called-with; + method post-bin(Str $path, Buf $buf, :$content-type) { + %.called-with<path> = $path; + %.called-with<buf> = $buf; + %.called-with<content-type> = $content-type; - class { method content { '{"content_uri": "bla" }' } } + class { method content { '{"content_uri": "bla" }' } } + } } -} -$media.upload($path, "something"); -is $media.called-with<path>, '/upload?filename=something', "Send filename pass by parameter"; + $media.upload($path, "something"); + is $media.called-with<path>, '/upload?filename=something', "Send filename pass by parameter"; -$media.upload($path, "something with spaces"); -is $media.called-with<path>, '/upload?filename=something%20with%20spaces', "Escaped filename"; + $media.upload($path, "something with spaces"); + is $media.called-with<path>, '/upload?filename=something%20with%20spaces', "Escaped filename"; -$media.upload($path); -is $media.called-with<path>, "/upload?filename={$path.basename}", "Send file basename if not set"; -is $media.called-with<content-type>, 'image/png', "By default use `image/png` MIME"; + $media.upload($path); + is $media.called-with<path>, "/upload?filename={$path.basename}", "Send file basename if not set"; + is $media.called-with<content-type>, 'image/png', "By default use `image/png` MIME"; -$media.upload($path, content-type => 'application/pdf'); -is $media.called-with<content-type>, 'application/pdf', "Can change the content type"; + $media.upload($path, content-type => 'application/pdf'); + is $media.called-with<content-type>, 'application/pdf', "Can change the content type"; +} -subtest { +subtest 'mxc parsing', { plan 2; my $media = Matrix::Client::MediaStore.new(:home-server("1234")); is $media.parse-mxc("mxc://matrix.org/123456.pdf"), { @@ -46,4 +47,28 @@ subtest { $media.parse-mxc("http://matrix.org/123456.pdf") }, X::Matrix::MXCParse, 'Dies with HTTP URI'; -}, 'mxc parsing'; +}; + +subtest 'config', { + # Mock the post-bin method of Matrix::Client::Requester. + plan 5; + my $media = Matrix::Client::MediaStore.new(:home-server("1234")) but role { + method get(Str $path) { + class { method content { '{"m.upload.size": 5000 }' } } + } + } + + isa-ok $media.config, Matrix::Response::MediaStore::Config, 'Can load Associative'; + is $media.config.upload-size, 5000, 'correct upload size'; + + my $empty-media = Matrix::Client::MediaStore.new(:home-server("1234")) but role { + method get(Str $path) { + class { method content { '{}' } } + } + } + + isa-ok $empty-media.config, Matrix::Response::MediaStore::Config, 'Can load empty configuration'; + is $empty-media.config.upload-size, Int, 'Unknown upload-size'; + nok $empty-media.config.upload-size.defined, 'upload-size not defined'; + +} |