use lib 'lib'; use Test; use Matrix::Client; plan 4; unless %*ENV { skip-rest 'No test server setted'; exit; } my $home-server = %*ENV; my $username = %*ENV; my $password = %*ENV; my $device-id = %*ENV; my $access-token; my Matrix::Client $client; subtest 'creation' => { plan 2; $client .= new(:$home-server, :$device-id); isnt $client.home-server, '', 'home server isnt empty'; isnt $client.device-id, '', 'device-id isnt empty'; note $client.base-url; } subtest 'login' => { plan 4; throws-like { $client.login(:username, :password) }, X::Matrix::Response, message => /M_FORBIDDEN/; lives-ok { $client.login($username, $password) }, 'can logging with right data'; isnt $client.access-token, '', 'access-token setted'; $access-token = $client.access-token; my Matrix::Client $access-token-client .= new(:$home-server, :$device-id, :$access-token); ok $access-token-client.whoami.starts-with("@$username"), 'client with access-token can do authorized calls'; } subtest 'User data' => { plan 2; isa-ok $client.profile, Hash, '.profile returns a Hash?'; subtest 'display name' => { plan 3; is $client.display-name, $username, 'get default display-name'; ok $client.change-display-name('testing'), 'change display-name'; is $client.display-name, 'testing', 'get new display-name'; $client.change-display-name($username); } } subtest 'sync' => { plan 3; isa-ok $client.sync(), Matrix::Response::Sync, 'sync without params is a Response'; isa-ok $client.sync(:sync-filter('{"room": { "timeline": { "limit": 1 } } }')), Matrix::Response::Sync, 'sync with Str sync-filter'; isa-ok $client.sync(:sync-filter(room => timeline => limit => 1)), Matrix::Response::Sync, 'sync wit Hash sync-filter'; }