From c1851c5a391f3c72cc8de3cfb166fbdb8fee3ae5 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Sun, 17 May 2020 20:26:17 -0300 Subject: Add MediaStore tests --- t/60-media.t | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 t/60-media.t diff --git a/t/60-media.t b/t/60-media.t new file mode 100644 index 0000000..602b0fc --- /dev/null +++ b/t/60-media.t @@ -0,0 +1,49 @@ +use lib 'lib'; +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; + %.called-with = $buf; + %.called-with = $content-type; + + class { method content { '{"content_uri": "bla" }' } } + } +} + + +$media.upload($path, "something"); +is $media.called-with, '/upload?filename=something', "Send filename pass by parameter"; + +$media.upload($path, "something with spaces"); +is $media.called-with, '/upload?filename=something%20with%20spaces', "Escaped filename"; + +$media.upload($path); +is $media.called-with, "/upload?filename={$path.basename}", "Send file basename if not set"; +is $media.called-with, 'image/png', "By default use `image/png` MIME"; + +$media.upload($path, content-type => 'application/pdf'); +is $media.called-with, 'application/pdf', "Can change the content type"; + +subtest { + plan 2; + my $media = Matrix::Client::MediaStore.new(:home-server("1234")); + is $media.parse-mxc("mxc://matrix.org/123456.pdf"), { + server-name => "matrix.org", media-id => "123456.pdf" + }, 'Simple parsing'; + + throws-like { + $media.parse-mxc("http://matrix.org/123456.pdf") + }, X::Matrix::MXCParse, 'Dies with HTTP URI'; + +}, 'mxc parsing'; -- cgit v1.2.3-70-g09d2