getMockBuilder('UsersLib') ->onlyMethods(['get_user_preference', 'get_user_email', 'set_user_fields']) ->getMock(); //realName - get_user_preference $userLibMock ->expects($this->at(0)) ->method('get_user_preference') ->with($this->equalTo($user), $this->equalTo('realName')) ->willReturn($name); //email - get_user_email $userLibMock ->expects($this->at(1)) ->method('get_user_email') ->with($this->equalTo($user)) ->willReturn($email); //country - get_user_preference $userLibMock ->expects($this->at(2)) ->method('get_user_preference') ->with($this->equalTo($user), $this->equalTo('country')) ->willReturn($country); if ($setWillBeCalled) { // set_user_fields $userLibMock ->expects($this->at(3)) ->method('set_user_fields') ->with($this->equalTo($setValues)) ->willReturn(true); } return $userLibMock; } /** * @dataProvider dataForLdapSyncUserDataUserWithoutPreferences * @param $name * @param $email * @param $country * @param $ldapAttributes * @param $setValues */ public function testLdapSyncUserDataUserWithoutPreferences($name, $email, $country, $ldapAttributes, $setValues): void { global $prefs; $prefs['auth_ldap_nameattr'] = 'cn'; $prefs['auth_ldap_emailattr'] = 'mail'; $prefs['auth_ldap_countryattr'] = 'c'; $setWillBeCalled = is_array($setValues) && count($setValues) > 0; $user = md5(uniqid(true)); $setValues['login'] = $user; $userLib = $this->prepareLdapSyncUserDataUserLibMock($user, $name, $email, $country, $setWillBeCalled, $setValues); $userLib->ldap_sync_user_data($user, $ldapAttributes); } public function dataForLdapSyncUserDataUserWithoutPreferences(): array { return [ [ // empty values 'name' => null, 'email' => null, 'country' => null, 'ldapAttributes' => [], 'setValues' => [], ], [ // existing values, no attributes from ldap 'name' => 'Some Name', 'email' => 'email@example.com', 'country' => 'XX', 'ldapAttributes' => [], 'setValues' => [ 'realName' => '', 'email' => '', 'country' => '' ], ], [ // existing values, empty values from ldap 'name' => 'Some Name', 'email' => 'email@example.com', 'country' => 'XX', 'ldapAttributes' => [ 'cn' => '', 'mail' => '', 'c' => '' ], 'setValues' => [ 'realName' => '', 'email' => '', 'country' => '' ], ], [ // existing values, new values from ldap 'name' => 'Some Name', 'email' => 'email@example.com', 'country' => 'XX', 'ldapAttributes' => [ 'cn' => 'Ldap Name', 'mail' => 'ldap@example.com', 'c' => 'XY' ], 'setValues' => [ 'realName' => 'Ldap Name', 'email' => 'ldap@example.com', 'country' => 'XY' ], ], [ //existing values, new values from ldap, including existing value for multi values attributes 'name' => 'Some Name', 'email' => 'email@example.com', 'country' => 'XX', 'ldapAttributes' => [ 'cn' => 'Ldap Name', 'mail' => ['ldap@example.com', 'email@example.com'], 'c' => 'XY' ], 'setValues' => [ 'realName' => 'Ldap Name', 'email' => 'email@example.com', 'country' => 'XY' ], ], [ //existing values, new multi values attributes 'name' => 'Some Name', 'email' => 'old_email@example.com', 'country' => 'XX', 'ldapAttributes' => [ 'cn' => ['Ldap Name', 'Other Name'], 'mail' => ['ldap@example.com', 'email@example.com'], 'c' => ['XY', 'XZ'] ], 'setValues' => [ 'realName' => 'Ldap Name', 'email' => 'ldap@example.com', 'country' => 'XY' ], ], ]; } }