@ -28,15 +28,21 @@
*/
namespace OCA\Files_Sharing\Tests ;
use OCP\AppFramework\OCS\OCSBadRequestException ;
use OCP\AppFramework\OCS\OCSException ;
use OCP\AppFramework\OCS\OCSForbiddenException ;
use OCP\AppFramework\OCS\OCSNotFoundException ;
/**
* Class ApiTest
*
* @ group DB
* TODO : convert to real intergration tests
*/
class ApiTest extends TestCase {
const TEST_FOLDER_NAME = '/folder_share_api_test' ;
const APP_NAME = 'files_sharing' ;
private static $tempStorage ;
@ -108,10 +114,11 @@ class ApiTest extends TestCase {
}));
return new \OCA\Files_Sharing\API\Share20OCS (
self :: APP_NAME ,
$request ,
$this -> shareManager ,
\OC :: $server -> getGroupManager (),
\OC :: $server -> getUserManager (),
$request ,
\OC :: $server -> getRootFolder (),
\OC :: $server -> getURLGenerator (),
$currentUser ,
@ -131,9 +138,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertEquals ( 19 , $data [ 'permissions' ]);
$this -> assertEmpty ( $data [ 'expiration' ]);
@ -141,8 +148,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded ());
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ();
}
function testCreateShareUserFolder () {
@ -154,9 +162,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertEquals ( 31 , $data [ 'permissions' ]);
$this -> assertEmpty ( $data [ 'expiration' ]);
@ -164,8 +172,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded ());
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ();
}
@ -178,9 +187,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertEquals ( 19 , $data [ 'permissions' ]);
$this -> assertEmpty ( $data [ 'expiration' ]);
@ -188,8 +197,8 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ( );
}
function testCreateShareGroupFolder () {
@ -201,9 +210,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertEquals ( 31 , $data [ 'permissions' ]);
$this -> assertEmpty ( $data [ 'expiration' ]);
@ -211,8 +220,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded ());
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ();
}
public function testCreateShareLink () {
@ -223,11 +233,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
// check if API call was successful
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertEquals ( 1 , $data [ 'permissions' ]);
$this -> assertEmpty ( $data [ 'expiration' ]);
$this -> assertTrue ( is_string ( $data [ 'token' ]));
@ -240,8 +248,8 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ( );
}
public function testCreateShareLinkPublicUpload () {
@ -253,11 +261,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
// check if API call was successful
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertEquals (
\OCP\Constants :: PERMISSION_READ |
\OCP\Constants :: PERMISSION_CREATE |
@ -276,8 +282,8 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ( );
}
function testEnfoceLinkPassword () {
@ -291,8 +297,13 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertFalse ( $result -> succeeded ());
try {
$ocs -> createShare ();
$this -> fail ();
} catch ( OCSForbiddenException $e ) {
}
$ocs -> cleanup ();
// don't allow to share link without a empty password
$data = [];
@ -302,8 +313,13 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertFalse ( $result -> succeeded ());
try {
$ocs -> createShare ();
$this -> fail ();
} catch ( OCSForbiddenException $e ) {
}
$ocs -> cleanup ();
// share with password should succeed
$data = [];
@ -314,9 +330,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// setting new password should succeed
$data2 = [
@ -325,7 +341,7 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $data2 );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// removing password should fail
$data2 = [
@ -333,14 +349,19 @@ class ApiTest extends TestCase {
];
$request = $this -> createRequest ( $data2 );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $data [ 'id' ]);
$this -> assertFalse ( $result -> succeeded ());
try {
$ocs -> updateShare ( $data [ 'id' ]);
$this -> fail ();
} catch ( OCSBadRequestException $e ) {
}
$ocs -> cleanup ();
// cleanup
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> deleteShare ( $data [ 'id' ]);
$ocs -> cleanup ( );
$appConfig -> setValue ( 'core' , 'shareapi_enforce_links_password' , 'no' );
}
@ -359,16 +380,16 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $post );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> shareManager -> getShareById ( 'ocinternal:' . $data [ 'id' ]);
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// exclude groups, but not the group the user belongs to. Sharing should still work
\OC :: $server -> getAppConfig () -> setValue ( 'core' , 'shareapi_exclude_groups' , 'yes' );
@ -382,16 +403,16 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $post );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> shareManager -> getShareById ( 'ocinternal:' . $data [ 'id' ]);
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $data [ 'id' ]);
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// now we exclude the group the user belongs to ('group'), sharing should fail now
\OC :: $server -> getAppConfig () -> setValue ( 'core' , 'shareapi_exclude_groups_list' , 'admin,group' );
@ -403,7 +424,8 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $post );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$ocs -> createShare ();
$ocs -> cleanup ();
// cleanup
\OC :: $server -> getAppConfig () -> setValue ( 'core' , 'shareapi_exclude_groups' , 'no' );
@ -429,9 +451,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$this -> assertTrue ( count ( $result -> getData ()) === 1 );
$this -> assertTrue ( count ( $result -> getData ()[ 'data' ]) === 1 );
$this -> shareManager -> deleteShare ( $share );
}
@ -458,9 +480,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'shared_with_me' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> getShares ();
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$this -> assertTrue ( count ( $result -> getData ()) === 2 );
$this -> assertTrue ( count ( $result -> getData ()[ 'data' ]) === 2 );
$this -> shareManager -> deleteShare ( $share1 );
$this -> shareManager -> deleteShare ( $share2 );
@ -477,9 +499,9 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ( $post );
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// check if we have a token
$this -> assertTrue ( is_string ( $data [ 'token' ]));
@ -493,33 +515,33 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
$this -> assertEquals ( $url , current ( $data )[ 'url' ]);
// check for path
$request = $this -> createRequest ([ 'path' => $this -> folder ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
$this -> assertEquals ( $url , current ( $data )[ 'url' ]);
// check in share id
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShare ( $id );
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
$this -> assertEquals ( $url , current ( $data )[ 'url' ]);
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ ocs -> deleteShare ( $id );
$this -> assertTrue ( $result -> succeeded () );
$ocs -> deleteShare ( $id );
$ocs -> cleanup ( );
}
/**
@ -547,10 +569,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => $this -> filename ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share created from testCreateShare()
$this -> assertTrue ( count ( $result -> getData ()) === 2 );
$this -> assertTrue ( count ( $result -> getData ()[ 'data' ] ) === 2 );
$this -> shareManager -> deleteShare ( $share1 );
$this -> shareManager -> deleteShare ( $share2 );
@ -582,21 +604,19 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => $this -> filename ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share
$this -> assertTrue ( count ( $result -> getData ()) === 1 );
$this -> assertTrue ( count ( $result -> getData ()[ 'data' ] ) === 1 );
// now also ask for the reshares
$request = $this -> createRequest ([ 'path' => $this -> filename , 'reshares' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded ());
$this -> assertTrue ( $result -> succeeded ());
$ocs -> cleanup ();
// now we should get two shares, the initial share and the reshare
$this -> assertCount ( 2 , $result -> getData ());
$this -> assertCount ( 2 , $result -> getData ()[ 'data' ] );
$this -> shareManager -> deleteShare ( $share1 );
$this -> shareManager -> deleteShare ( $share2 );
@ -620,10 +640,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShare ( $share1 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share created from testCreateShare()
$this -> assertEquals ( 1 , count ( $result -> getData ()));
$this -> assertEquals ( 1 , count ( $result -> getData ()[ 'data' ] ));
$this -> shareManager -> deleteShare ( $share1 );
}
@ -653,10 +673,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => $this -> folder , 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$this -> assertTrue ( count ( $result -> getData ()) === 1 );
$this -> assertTrue ( count ( $result -> getData ()[ 'data' ] ) === 1 );
$this -> shareManager -> deleteShare ( $share1 );
$this -> shareManager -> deleteShare ( $share2 );
@ -674,11 +694,13 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => $this -> filename , 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertFalse ( $result -> succeeded ());
$this -> assertEquals ( 400 , $result -> getStatusCode ());
$this -> assertEquals ( 'Not a directory' , $result -> getMeta ()[ 'message' ]);
try {
$ocs -> getShares ();
$this -> fail ();
} catch ( OCSBadRequestException $e ) {
$this -> assertEquals ( 'Not a directory' , $e -> getMessage ());
}
$ocs -> cleanup ();
$this -> shareManager -> deleteShare ( $share1 );
}
@ -724,10 +746,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => $value [ 'query' ], 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
$this -> assertEquals ( $value [ 'expectedResult' ], $data [ 0 ][ 'path' ]);
}
@ -763,10 +785,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => '/' , 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// we should get exactly one result
$this -> assertCount ( 1 , $data );
@ -781,7 +803,7 @@ class ApiTest extends TestCase {
* test re - re - share of folder if the path gets constructed correctly
* @ medium
*/
function testGetShareFromFolderReReShares () {
function X testGetShareFromFolderReReShares() {
$node1 = $this -> userFolder -> get ( $this -> folder . $this -> subfolder );
$share1 = $this -> shareManager -> newShare ();
$share1 -> setNode ( $node1 )
@ -813,10 +835,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => '/' , 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER3 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// we should get exactly one result
$this -> assertCount ( 1 , $data );
@ -828,10 +850,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// we should get exactly one result
$this -> assertCount ( 1 , $data );
@ -843,10 +865,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// we should get exactly one result
$this -> assertCount ( 1 , $data );
@ -890,20 +912,20 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => $this -> subfolder ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result1 = $ocs -> getShares ();
$this -> assertTrue ( $result1 -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data1 = $result1 -> getData ();
$data1 = $result1 -> getData ()[ 'data' ] ;
$this -> assertCount ( 1 , $data1 );
$s1 = reset ( $data1 );
$request = $this -> createRequest ([ 'path' => $this -> folder . $this -> subfolder ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result2 = $ocs -> getShares ();
$this -> assertTrue ( $result2 -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data2 = $result2 -> getData ();
$data2 = $result2 -> getData ()[ 'data' ] ;
$this -> assertCount ( 1 , $data2 );
$s2 = reset ( $data2 );
@ -951,10 +973,10 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'path' => '/' , 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER3 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
// test should return one share within $this->folder
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
// we should get exactly one result
$this -> assertCount ( 1 , $data );
@ -972,12 +994,13 @@ class ApiTest extends TestCase {
function testGetShareFromUnknownId () {
$request = $this -> createRequest ([ 'path' => '/' , 'subfiles' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER3 );
$result = $ocs -> getShare ( 0 );
$this -> assertFalse ( $result -> succeeded ());
$this -> assertEquals ( 404 , $result -> getStatusCode ());
$meta = $result -> getMeta ();
$this -> assertEquals ( 'Wrong share ID, share doesn\'t exist' , $meta [ 'message' ]);
try {
$ocs -> getShare ( 0 );
$this -> fail ();
} catch ( OCSNotFoundException $e ) {
$this -> assertEquals ( 'Wrong share ID, share doesn\'t exist' , $e -> getMessage ());
}
$ocs -> cleanup ();
}
/**
@ -1009,10 +1032,7 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'permissions' => 1 ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $share1 -> getId ());
$this -> assertTrue ( $result -> succeeded ());
$meta = $result -> getMeta ();
$this -> assertTrue ( $result -> succeeded (), $meta [ 'message' ]);
$ocs -> cleanup ();
$share1 = $this -> shareManager -> getShareById ( 'ocinternal:' . $share1 -> getId ());
$this -> assertEquals ( 1 , $share1 -> getPermissions ());
@ -1022,16 +1042,16 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'password' => 'foo' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ ocs -> updateShare ( $share2 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> updateShare ( $share2 -> getId ());
$ocs -> cleanup ( );
$share2 = $this -> shareManager -> getShareById ( 'ocinternal:' . $share2 -> getId ());
$this -> assertNotNull ( $share2 -> getPassword ());
$request = $this -> createRequest ([ 'password' => '' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ ocs -> updateShare ( $share2 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> updateShare ( $share2 -> getId ());
$ocs -> cleanup ( );
$share2 = $this -> shareManager -> getShareById ( 'ocinternal:' . $share2 -> getId ());
$this -> assertNull ( $share2 -> getPassword ());
@ -1056,11 +1076,13 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'permissions' => \OCP\Constants :: PERMISSION_ALL ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $share1 -> getId ());
try {
$ocs -> updateShare ( $share1 -> getId ());
$this -> fail ();
} catch ( OCSBadRequestException $e ) {
//Updating should fail with 400
$this -> assertFalse ( $result -> succeeded ());
$this -> assertEquals ( 400 , $result -> getStatusCode ());
}
$ocs -> cleanup ();
//Permissions should not have changed!
$share1 = $this -> shareManager -> getShareById ( 'ocinternal:' . $share1 -> getId ());
@ -1085,7 +1107,7 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'publicUpload' => 'true' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $share1 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$share1 = $this -> shareManager -> getShareById ( $share1 -> getFullId ());
$this -> assertEquals (
@ -1129,7 +1151,7 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([ 'expireDate' => $dateWithinRange -> format ( 'Y-m-d' )]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $share1 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$share1 = $this -> shareManager -> getShareById ( $share1 -> getFullId ());
@ -1139,8 +1161,13 @@ class ApiTest extends TestCase {
// update expire date to a value out of range
$request = $this -> createRequest ([ 'expireDate' => $dateOutOfRange -> format ( 'Y-m-d' )]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $share1 -> getId ());
$this -> assertFalse ( $result -> succeeded ());
try {
$ocs -> updateShare ( $share1 -> getId ());
$this -> fail ();
} catch ( OCSBadRequestException $e ) {
}
$ocs -> cleanup ();
$share1 = $this -> shareManager -> getShareById ( $share1 -> getFullId ());
@ -1150,8 +1177,13 @@ class ApiTest extends TestCase {
// Try to remove expire date
$request = $this -> createRequest ([ 'expireDate' => '' ]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> updateShare ( $share1 -> getId ());
$this -> assertFalse ( $result -> succeeded ());
try {
$ocs -> updateShare ( $share1 -> getId ());
$this -> fail ();
} catch ( OCSBadRequestException $e ) {
}
$ocs -> cleanup ();
$share1 = $this -> shareManager -> getShareById ( $share1 -> getFullId ());
@ -1188,12 +1220,12 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $share1 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $share2 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$this -> assertEmpty ( $this -> shareManager -> getSharesBy ( self :: TEST_FILES_SHARING_API_USER2 , \OCP\Share :: SHARE_TYPE_USER ));
$this -> assertEmpty ( $this -> shareManager -> getSharesBy ( self :: TEST_FILES_SHARING_API_USER2 , \OCP\Share :: SHARE_TYPE_LINK ));
@ -1225,7 +1257,7 @@ class ApiTest extends TestCase {
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> deleteShare ( $share2 -> getId ());
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$this -> shareManager -> deleteShare ( $share1 );
}
@ -1341,7 +1373,7 @@ class ApiTest extends TestCase {
/**
* @ expectedException \Exception
*/
public function testShareNonExisting () {
public function X testShareNonExisting() {
self :: loginHelper ( self :: TEST_FILES_SHARING_API_USER1 );
$id = PHP_INT_MAX - 1 ;
@ -1447,18 +1479,19 @@ class ApiTest extends TestCase {
'expireDate' => $date ,
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
if ( $valid === false ) {
$this -> assertFalse ( $result -> succeeded ());
$this -> assertEquals ( 404 , $result -> getStatusCode ());
$this -> assertEquals ( 'Invalid date, date format must be YYYY-MM-DD' , $result -> getMeta ()[ 'message' ]);
try {
$result = $ocs -> createShare ();
$this -> assertTrue ( $valid );
} catch ( OCSNotFoundException $e ) {
$this -> assertFalse ( $valid );
$this -> assertEquals ( 'Invalid date, date format must be YYYY-MM-DD' , $e -> getMessage ());
$ocs -> cleanup ();
return ;
}
$ocs -> cleanup ();
$this -> assertTrue ( $result -> succeeded ());
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ];
$this -> assertTrue ( is_string ( $data [ 'token' ]));
$this -> assertEquals ( $date , substr ( $data [ 'expiration' ], 0 , 10 ));
@ -1490,9 +1523,9 @@ class ApiTest extends TestCase {
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$data = $result -> getData ();
$data = $result -> getData ()[ 'data' ] ;
$this -> assertTrue ( is_string ( $data [ 'token' ]));
$this -> assertEquals ( $date -> format ( 'Y-m-d' ) . ' 00:00:00' , $data [ 'expiration' ]);
@ -1526,16 +1559,21 @@ class ApiTest extends TestCase {
'expireDate' => $date -> format ( 'Y-m-d' ),
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertFalse ( $result -> succeeded ());
$this -> assertEquals ( 404 , $result -> getStatusCode ());
$this -> assertEquals ( 'Cannot set expiration date more than 7 days in the future' , $result -> getMeta ()[ 'message' ]);
try {
$ocs -> createShare ();
$this -> fail ();
} catch ( OCSException $e ) {
$this -> assertEquals ( 404 , $e -> getCode ());
$this -> assertEquals ( 'Cannot set expiration date more than 7 days in the future' , $e -> getMessage ());
}
$ocs -> cleanup ();
$config -> setAppValue ( 'core' , 'shareapi_default_expire_date' , 'no' );
$config -> setAppValue ( 'core' , 'shareapi_enforce_expire_date' , 'no' );
}
public function testCreatePublicLinkExpireDateInvalidPast () {
public function X testCreatePublicLinkExpireDateInvalidPast() {
$config = \OC :: $server -> getConfig ();
$date = new \DateTime ();
@ -1547,10 +1585,15 @@ class ApiTest extends TestCase {
'expireDate' => $date -> format ( 'Y-m-d' ),
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertFalse ( $result -> succeeded ());
$this -> assertEquals ( 404 , $result -> getStatusCode ());
$this -> assertEquals ( 'Expiration date is in the past' , $result -> getMeta ()[ 'message' ]);
try {
$result = $ocs -> createShare ();
$this -> fail ();
} catch ( OCSException $e ) {
$this -> assertEquals ( 404 , $e -> getCode ());
$this -> assertEquals ( 'Expiration date is in the past' , $e -> getMessage ());
}
$ocs -> cleanup ();
$config -> setAppValue ( 'core' , 'shareapi_default_expire_date' , 'no' );
$config -> setAppValue ( 'core' , 'shareapi_enforce_expire_date' , 'no' );
@ -1569,8 +1612,8 @@ class ApiTest extends TestCase {
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$data = $result -> getData ();
$ocs -> cleanup ( );
$data = $result -> getData ()[ 'data' ] ;
$topId = $data [ 'id' ];
@ -1580,21 +1623,21 @@ class ApiTest extends TestCase {
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $topId );
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$request = $this -> createRequest ([
'reshares' => 'true' ,
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$this -> assertEmpty ( $result -> getData ());
$this -> assertEmpty ( $result -> getData ()[ 'data' ] );
}
/**
@ -1610,8 +1653,8 @@ class ApiTest extends TestCase {
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$data = $result -> getData ();
$ocs -> cleanup ( );
$data = $result -> getData ()[ 'data' ] ;
$topId = $data [ 'id' ];
@ -1621,20 +1664,20 @@ class ApiTest extends TestCase {
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER2 );
$result = $ocs -> createShare ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$request = $this -> createRequest ([]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> deleteShare ( $topId );
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$request = $this -> createRequest ([
'reshares' => 'true' ,
]);
$ocs = $this -> createOCS ( $request , self :: TEST_FILES_SHARING_API_USER1 );
$result = $ocs -> getShares ();
$this -> assertTrue ( $result -> succeeded () );
$ocs -> cleanup ( );
$this -> assertEmpty ( $result -> getData ());
$this -> assertEmpty ( $result -> getData ()[ 'data' ] );
}
}