77 */
88namespace OCA \Files_Sharing \Tests ;
99
10- use OC \Files \Cache \Storage ;
11- use OC \Files \Filesystem ;
1210use OC \Files \View ;
13- use OC \Group \Database ;
1411use OC \SystemConfig ;
1512use OC \User \DisplayNameCache ;
13+ use OC \User \Session ;
1614use OCA \Files_Sharing \AppInfo \Application ;
1715use OCA \Files_Sharing \External \MountProvider as ExternalMountProvider ;
1816use OCA \Files_Sharing \Listener \SharesUpdatedListener ;
1917use OCA \Files_Sharing \MountProvider ;
2018use OCP \Files \Config \IMountProviderCollection ;
2119use OCP \Files \IRootFolder ;
20+ use OCP \Files \ISetupManager ;
2221use OCP \IDBConnection ;
23- use OCP \IGroupManager ;
2422use OCP \IUserManager ;
2523use OCP \IUserSession ;
2624use OCP \Server ;
25+ use OCP \Share \IManager ;
2726use OCP \Share \IShare ;
27+ use Test \Traits \GroupTrait ;
2828use Test \Traits \MountProviderTrait ;
29+ use Test \Traits \UserTrait ;
2930
3031/**
3132 * Base class for sharing tests.
3233 */
3334#[\PHPUnit \Framework \Attributes \Group(name: 'DB ' )]
3435abstract class TestCase extends \Test \TestCase {
3536 use MountProviderTrait;
37+ use UserTrait;
38+ use GroupTrait;
3639
3740 public const TEST_FILES_SHARING_API_USER1 = 'test-share-user1 ' ;
3841 public const TEST_FILES_SHARING_API_USER2 = 'test-share-user2 ' ;
@@ -54,13 +57,21 @@ abstract class TestCase extends \Test\TestCase {
5457 public $ folder ;
5558 public $ subfolder ;
5659
57- /** @var \OCP\Share\ IManager */
60+ /** @var IManager */
5861 protected $ shareManager ;
5962 /** @var IRootFolder */
6063 protected $ rootFolder ;
64+ protected Session $ userSession ;
65+ protected ISetupManager $ setupManager ;
6166
62- public static function setUpBeforeClass (): void {
63- parent ::setUpBeforeClass ();
67+ protected function setUp (): void {
68+ parent ::setUp ();
69+
70+ $ this ->shareManager = Server::get (IManager::class);
71+ $ this ->rootFolder = Server::get (IRootFolder::class);
72+
73+ $ this ->setupManager = Server::get (ISetupManager::class);
74+ $ this ->userSession = Server::get (IUserSession::class);
6475
6576 $ app = new Application ();
6677 $ app ->registerMountProviders (
@@ -69,54 +80,43 @@ public static function setUpBeforeClass(): void {
6980 Server::get (ExternalMountProvider::class),
7081 );
7182
72- // reset backend
73- Server::get (IUserManager::class)->clearBackends ();
74- Server::get (IGroupManager::class)->clearBackends ();
75-
7683 // clear share hooks
7784 \OC_Hook::clear ('OCP \\Share ' );
7885 \OC ::registerShareHooks (Server::get (SystemConfig::class));
7986
80- // create users
81- $ backend = new \Test \Util \User \Dummy ();
82- Server::get (IUserManager::class)->registerBackend ($ backend );
83- $ backend ->createUser (self ::TEST_FILES_SHARING_API_USER1 , self ::TEST_FILES_SHARING_API_USER1 );
84- $ backend ->createUser (self ::TEST_FILES_SHARING_API_USER2 , self ::TEST_FILES_SHARING_API_USER2 );
85- $ backend ->createUser (self ::TEST_FILES_SHARING_API_USER3 , self ::TEST_FILES_SHARING_API_USER3 );
86- $ backend ->createUser (self ::TEST_FILES_SHARING_API_USER4 , self ::TEST_FILES_SHARING_API_USER4 );
87-
88- // create group
89- $ groupBackend = new \Test \Util \Group \Dummy ();
90- $ groupBackend ->createGroup (self ::TEST_FILES_SHARING_API_GROUP1 );
91- $ groupBackend ->createGroup ('group ' );
92- $ groupBackend ->createGroup ('group1 ' );
93- $ groupBackend ->createGroup ('group2 ' );
94- $ groupBackend ->createGroup ('group3 ' );
95- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER1 , 'group ' );
96- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER2 , 'group ' );
97- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER3 , 'group ' );
98- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER2 , 'group1 ' );
99- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER3 , 'group2 ' );
100- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER4 , 'group3 ' );
101- $ groupBackend ->addToGroup (self ::TEST_FILES_SHARING_API_USER2 , self ::TEST_FILES_SHARING_API_GROUP1 );
102- Server::get (IGroupManager::class)->addBackend ($ groupBackend );
103-
10487 Server::get (SharesUpdatedListener::class)->setCutOffMarkTime (-1 );
105- }
10688
107- protected function setUp (): void {
108- parent ::setUp ();
10989 Server::get (DisplayNameCache::class)->clear ();
11090
91+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER1 , self ::TEST_FILES_SHARING_API_USER1 );
92+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER2 , self ::TEST_FILES_SHARING_API_USER2 );
93+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER3 , self ::TEST_FILES_SHARING_API_USER3 );
94+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER4 , self ::TEST_FILES_SHARING_API_USER4 );
95+
96+ $ this ->createGroup (self ::TEST_FILES_SHARING_API_GROUP1 , [
97+ self ::TEST_FILES_SHARING_API_USER2 ,
98+ ]);
99+ $ this ->createGroup ('group ' , [
100+ self ::TEST_FILES_SHARING_API_USER1 ,
101+ self ::TEST_FILES_SHARING_API_USER2 ,
102+ self ::TEST_FILES_SHARING_API_USER3 ,
103+ ]);
104+ $ this ->createGroup ('group1 ' , [
105+ self ::TEST_FILES_SHARING_API_USER2 ,
106+ ]);
107+ $ this ->createGroup ('group2 ' , [
108+ self ::TEST_FILES_SHARING_API_USER3 ,
109+ ]);
110+ $ this ->createGroup ('group3 ' , [
111+ self ::TEST_FILES_SHARING_API_USER4 ,
112+ ]);
113+
111114 //login as user1
112115 $ this ->loginHelper (self ::TEST_FILES_SHARING_API_USER1 );
113116
114117 $ this ->data = 'foobar ' ;
115118 $ this ->view = new View ('/ ' . self ::TEST_FILES_SHARING_API_USER1 . '/files ' );
116119 $ this ->view2 = new View ('/ ' . self ::TEST_FILES_SHARING_API_USER2 . '/files ' );
117-
118- $ this ->shareManager = Server::get (\OCP \Share \IManager::class);
119- $ this ->rootFolder = Server::get (IRootFolder::class);
120120 }
121121
122122 protected function tearDown (): void {
@@ -132,73 +132,18 @@ protected function tearDown(): void {
132132 $ qb ->delete ('filecache ' )->runAcrossAllShards ();
133133 $ qb ->executeStatement ();
134134
135+ $ this ->userSession ->setUser (null );
136+ $ this ->setupManager ->tearDown ();
137+
135138 parent ::tearDown ();
136139 }
137140
138- public static function tearDownAfterClass (): void {
139- // cleanup users
140- $ user = Server::get (IUserManager::class)->get (self ::TEST_FILES_SHARING_API_USER1 );
141- if ($ user !== null ) {
142- $ user ->delete ();
143- }
144- $ user = Server::get (IUserManager::class)->get (self ::TEST_FILES_SHARING_API_USER2 );
145- if ($ user !== null ) {
146- $ user ->delete ();
147- }
148- $ user = Server::get (IUserManager::class)->get (self ::TEST_FILES_SHARING_API_USER3 );
149- if ($ user !== null ) {
150- $ user ->delete ();
151- }
152-
153- // delete group
154- $ group = Server::get (IGroupManager::class)->get (self ::TEST_FILES_SHARING_API_GROUP1 );
155- if ($ group ) {
156- $ group ->delete ();
157- }
158-
159- \OC_Util::tearDownFS ();
160- \OC_User::setUserId ('' );
161- Filesystem::tearDown ();
162-
163- // reset backend
164- Server::get (IUserManager::class)->clearBackends ();
165- Server::get (IUserManager::class)->registerBackend (new \OC \User \Database ());
166- Server::get (IGroupManager::class)->clearBackends ();
167- Server::get (IGroupManager::class)->addBackend (new Database ());
168-
169- parent ::tearDownAfterClass ();
170- }
141+ protected function loginHelper (string $ uid ) {
142+ $ this ->setupManager ->tearDown ();
143+ $ user = Server::get (IUserManager::class)->get ($ uid );
144+ $ this ->userSession ->completeLogin ($ user , ['loginName ' => $ uid , 'password ' => $ uid ], false );
171145
172- /**
173- * @param string $user
174- * @param bool $create
175- * @param bool $password
176- */
177- protected function loginHelper ($ user , $ create = false , $ password = false ) {
178- if ($ password === false ) {
179- $ password = $ user ;
180- }
181-
182- if ($ create ) {
183- $ userManager = Server::get (IUserManager::class);
184- $ groupManager = Server::get (IGroupManager::class);
185-
186- $ userObject = $ userManager ->createUser ($ user , $ password );
187- $ group = $ groupManager ->createGroup ('group ' );
188-
189- if ($ group && $ userObject ) {
190- $ group ->addUser ($ userObject );
191- }
192- }
193-
194- \OC_Util::tearDownFS ();
195- Storage::getGlobalCache ()->clearCache ();
196- Server::get (IUserSession::class)->setUser (null );
197- Filesystem::tearDown ();
198- Server::get (IUserSession::class)->login ($ user , $ password );
199- \OC ::$ server ->getUserFolder ($ user );
200-
201- \OC_Util::setupFS ($ user );
146+ $ this ->rootFolder ->newFolder ('/ ' . $ uid . '/files ' );
202147 }
203148
204149 /**
0 commit comments