|
37 | 37 | use OCA\User_LDAP\ILDAPWrapper; |
38 | 38 | use OCA\User_LDAP\Mapping\GroupMapping; |
39 | 39 | use OCA\User_LDAP\User\Manager; |
| 40 | +use OCA\User_LDAP\User\OfflineUser; |
40 | 41 | use OCP\GroupInterface; |
| 42 | +use OCP\IConfig; |
| 43 | +use OCP\Server; |
41 | 44 | use PHPUnit\Framework\MockObject\MockObject; |
42 | 45 | use Test\TestCase; |
43 | 46 |
|
|
49 | 52 | * @package OCA\User_LDAP\Tests |
50 | 53 | */ |
51 | 54 | class Group_LDAPTest extends TestCase { |
| 55 | + |
| 56 | + public function tearDown(): void { |
| 57 | + parent::tearDown(); |
| 58 | + |
| 59 | + $realConfig = Server::get(IConfig::class); |
| 60 | + $realConfig->deleteUserValue('userX', 'user_ldap', 'cached-group-memberships-'); |
| 61 | + } |
| 62 | + |
52 | 63 | public function testCountEmptySearchString() { |
53 | 64 | $access = $this->getAccessMock(); |
54 | 65 | $pluginManager = $this->getPluginManagerMock(); |
@@ -923,6 +934,40 @@ public function testGetUserGroupsMemberOfDisabled() { |
923 | 934 | $groupBackend->getUserGroups('userX'); |
924 | 935 | } |
925 | 936 |
|
| 937 | + public function testGetUserGroupsOfflineUser() { |
| 938 | + $access = $this->getAccessMock(); |
| 939 | + $pluginManager = $this->getPluginManagerMock(); |
| 940 | + |
| 941 | + $access->connection = $this->createMock(Connection::class); |
| 942 | + $access->connection->expects($this->any()) |
| 943 | + ->method('__get') |
| 944 | + ->willReturnCallback(function ($name) { |
| 945 | + if ($name === 'useMemberOfToDetectMembership') { |
| 946 | + return 0; |
| 947 | + } elseif ($name === 'ldapDynamicGroupMemberURL') { |
| 948 | + return ''; |
| 949 | + } |
| 950 | + return 1; |
| 951 | + }); |
| 952 | + |
| 953 | + $offlineUser = $this->createMock(OfflineUser::class); |
| 954 | + |
| 955 | + // FIXME: should be available via CI |
| 956 | + $realConfig = Server::get(IConfig::class); |
| 957 | + $realConfig->setUserValue('userX', 'user_ldap', 'cached-group-memberships-', \json_encode(['groupB', 'groupF'])); |
| 958 | + |
| 959 | + $access->userManager->expects($this->any()) |
| 960 | + ->method('get') |
| 961 | + ->with('userX') |
| 962 | + ->willReturn($offlineUser); |
| 963 | + |
| 964 | + $groupBackend = new GroupLDAP($access, $pluginManager); |
| 965 | + $returnedGroups = $groupBackend->getUserGroups('userX'); |
| 966 | + $this->assertCount(2, $returnedGroups); |
| 967 | + $this->assertTrue(in_array('groupB', $returnedGroups)); |
| 968 | + $this->assertTrue(in_array('groupF', $returnedGroups)); |
| 969 | + } |
| 970 | + |
926 | 971 | public function nestedGroupsProvider(): array { |
927 | 972 | return [ |
928 | 973 | [true], |
|
0 commit comments