1010use OC \Files \Cache \Storage ;
1111use OC \Files \Filesystem ;
1212use OC \Files \View ;
13- use OC \Group \Database ;
1413use OC \SystemConfig ;
1514use OC \User \DisplayNameCache ;
15+ use OC \User \Session ;
1616use OCA \Files_Sharing \AppInfo \Application ;
1717use OCA \Files_Sharing \External \MountProvider as ExternalMountProvider ;
1818use OCA \Files_Sharing \Listener \SharesUpdatedListener ;
1919use OCA \Files_Sharing \MountProvider ;
2020use OCP \Files \Config \IMountProviderCollection ;
2121use OCP \Files \IRootFolder ;
22+ use OCP \Files \ISetupManager ;
2223use OCP \IDBConnection ;
23- use OCP \IGroupManager ;
2424use OCP \IUserManager ;
2525use OCP \IUserSession ;
2626use OCP \Server ;
27+ use OCP \Share \IManager ;
2728use OCP \Share \IShare ;
29+ use Test \Traits \GroupTrait ;
2830use Test \Traits \MountProviderTrait ;
31+ use Test \Traits \UserTrait ;
2932
3033/**
3134 * Base class for sharing tests.
3235 */
3336#[\PHPUnit \Framework \Attributes \Group(name: 'DB ' )]
3437abstract class TestCase extends \Test \TestCase {
3538 use MountProviderTrait;
39+ use UserTrait;
40+ use GroupTrait;
3641
3742 public const TEST_FILES_SHARING_API_USER1 = 'test-share-user1 ' ;
3843 public const TEST_FILES_SHARING_API_USER2 = 'test-share-user2 ' ;
@@ -54,13 +59,21 @@ abstract class TestCase extends \Test\TestCase {
5459 public $ folder ;
5560 public $ subfolder ;
5661
57- /** @var \OCP\Share\ IManager */
62+ /** @var IManager */
5863 protected $ shareManager ;
5964 /** @var IRootFolder */
6065 protected $ rootFolder ;
66+ protected Session $ userSession ;
67+ protected ISetupManager $ setupManager ;
6168
62- public static function setUpBeforeClass (): void {
63- parent ::setUpBeforeClass ();
69+ protected function setUp (): void {
70+ parent ::setUp ();
71+
72+ $ this ->shareManager = Server::get (IManager::class);
73+ $ this ->rootFolder = Server::get (IRootFolder::class);
74+
75+ $ this ->setupManager = Server::get (ISetupManager::class);
76+ $ this ->userSession = Server::get (IUserSession::class);
6477
6578 $ app = new Application ();
6679 $ app ->registerMountProviders (
@@ -69,54 +82,43 @@ public static function setUpBeforeClass(): void {
6982 Server::get (ExternalMountProvider::class),
7083 );
7184
72- // reset backend
73- Server::get (IUserManager::class)->clearBackends ();
74- Server::get (IGroupManager::class)->clearBackends ();
75-
7685 // clear share hooks
7786 \OC_Hook::clear ('OCP \\Share ' );
7887 \OC ::registerShareHooks (Server::get (SystemConfig::class));
7988
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-
10489 Server::get (SharesUpdatedListener::class)->setCutOffMarkTime (-1 );
105- }
10690
107- protected function setUp (): void {
108- parent ::setUp ();
10991 Server::get (DisplayNameCache::class)->clear ();
11092
93+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER1 , self ::TEST_FILES_SHARING_API_USER1 );
94+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER2 , self ::TEST_FILES_SHARING_API_USER2 );
95+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER3 , self ::TEST_FILES_SHARING_API_USER3 );
96+ $ this ->createUser (self ::TEST_FILES_SHARING_API_USER4 , self ::TEST_FILES_SHARING_API_USER4 );
97+
98+ $ this ->createGroup (self ::TEST_FILES_SHARING_API_GROUP1 , [
99+ self ::TEST_FILES_SHARING_API_USER2 ,
100+ ]);
101+ $ this ->createGroup ('group ' , [
102+ self ::TEST_FILES_SHARING_API_USER1 ,
103+ self ::TEST_FILES_SHARING_API_USER2 ,
104+ self ::TEST_FILES_SHARING_API_USER3 ,
105+ ]);
106+ $ this ->createGroup ('group1 ' , [
107+ self ::TEST_FILES_SHARING_API_USER2 ,
108+ ]);
109+ $ this ->createGroup ('group2 ' , [
110+ self ::TEST_FILES_SHARING_API_USER3 ,
111+ ]);
112+ $ this ->createGroup ('group3 ' , [
113+ self ::TEST_FILES_SHARING_API_USER4 ,
114+ ]);
115+
111116 //login as user1
112117 $ this ->loginHelper (self ::TEST_FILES_SHARING_API_USER1 );
113118
114119 $ this ->data = 'foobar ' ;
115120 $ this ->view = new View ('/ ' . self ::TEST_FILES_SHARING_API_USER1 . '/files ' );
116121 $ 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);
120122 }
121123
122124 protected function tearDown (): void {
@@ -132,73 +134,18 @@ protected function tearDown(): void {
132134 $ qb ->delete ('filecache ' )->runAcrossAllShards ();
133135 $ qb ->executeStatement ();
134136
137+ $ this ->userSession ->setUser (null );
138+ $ this ->setupManager ->tearDown ();
139+
135140 parent ::tearDown ();
136141 }
137142
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- }
143+ protected function loginHelper (string $ uid ) {
144+ $ this ->setupManager ->tearDown ();
145+ $ user = Server::get (IUserManager::class)->get ($ uid );
146+ $ this ->userSession ->completeLogin ($ user , ['loginName ' => $ uid , 'password ' => $ uid ], false );
171147
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 );
148+ $ this ->rootFolder ->newFolder ('/ ' . $ uid . '/files ' );
202149 }
203150
204151 /**
0 commit comments