}
if ($trySession && $this->session->exists('login_credentials')) {
- $creds = json_decode($this->session->get('login_credentials'));
- return new Credentials($creds->uid, $creds->loginName, $creds->password);
+ /** @var array $creds */
+ $creds = json_decode($this->session->get('login_credentials'), true);
+ return new Credentials(
+ $creds['uid'],
+ $creds['loginName'] ?? $this->session->get('loginname') ?? $creds['uid'], // Pre 20 didn't have a loginName property, hence fall back to the session value and then to the UID
+ $creds['password']
+ );
}
// If we reach this line, an exception was thrown.
use OCP\ISession;
use OCP\Session\Exceptions\SessionNotAvailableException;
use Test\TestCase;
+use function json_encode;
class StoreTest extends TestCase {
$this->store->getLoginCredentials();
}
+ public function testGetLoginCredentialsPartialCredentialsAndSessionName() {
+ $uid = 'id987';
+ $user = 'user987';
+ $password = '7389374';
+
+ $this->session->expects($this->once())
+ ->method('getId')
+ ->willReturn('sess2233');
+ $this->tokenProvider->expects($this->once())
+ ->method('getToken')
+ ->with('sess2233')
+ ->will($this->throwException(new InvalidTokenException()));
+ $this->session->expects($this->once())
+ ->method('exists')
+ ->with($this->equalTo('login_credentials'))
+ ->willReturn(true);
+ $this->session->expects($this->exactly(2))
+ ->method('get')
+ ->willReturnMap([
+ [
+ 'login_credentials',
+ json_encode([
+ 'uid' => $uid,
+ 'password' => $password,
+ ])
+ ],
+ [
+ 'loginname',
+ $user,
+ ],
+ ]);
+ $expected = new Credentials($uid, $user, $password);
+
+ $actual = $this->store->getLoginCredentials();
+
+ $this->assertEquals($expected, $actual);
+ }
+
+ public function testGetLoginCredentialsPartialCredentials() {
+ $uid = 'id987';
+ $password = '7389374';
+
+ $this->session->expects($this->once())
+ ->method('getId')
+ ->willReturn('sess2233');
+ $this->tokenProvider->expects($this->once())
+ ->method('getToken')
+ ->with('sess2233')
+ ->will($this->throwException(new InvalidTokenException()));
+ $this->session->expects($this->once())
+ ->method('exists')
+ ->with($this->equalTo('login_credentials'))
+ ->willReturn(true);
+ $this->session->expects($this->exactly(2))
+ ->method('get')
+ ->willReturnMap([
+ [
+ 'login_credentials',
+ json_encode([
+ 'uid' => $uid,
+ 'password' => $password,
+ ])
+ ],
+ [
+ 'loginname',
+ null,
+ ],
+ ]);
+ $expected = new Credentials($uid, $uid, $password);
+
+ $actual = $this->store->getLoginCredentials();
+
+ $this->assertEquals($expected, $actual);
+ }
+
public function testGetLoginCredentialsInvalidTokenLoginCredentials() {
$uid = 'id987';
$user = 'user987';