summaryrefslogtreecommitdiffstats
path: root/tests/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2018-05-15 21:10:43 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2018-05-16 19:27:19 +0200
commitaba255997aa82981c6b1fa3ce5e32bc0077156d1 (patch)
tree80245f04d3f7b400723ca4c3fd55b90ecedcb8cc /tests/lib
parent0011bfb64bedbfa412ffd2190433fe0b51830ce9 (diff)
downloadnextcloud-server-aba255997aa82981c6b1fa3ce5e32bc0077156d1.tar.gz
nextcloud-server-aba255997aa82981c6b1fa3ce5e32bc0077156d1.zip
Allow the rotation of tokens
This for example will allow rotating the apptoken for oauth Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib/Authentication/Token/DefaultTokenProviderTest.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php
index a2128e0fd4c..ee98f649443 100644
--- a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php
+++ b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php
@@ -416,4 +416,46 @@ class DefaultTokenProviderTest extends TestCase {
$this->tokenProvider->getTokenById(42);
}
+
+ public function testRotate() {
+ $token = new DefaultToken();
+ $token->setPassword('oldencryptedpassword');
+
+ $this->config->method('getSystemValue')
+ ->with('secret')
+ ->willReturn('mysecret');
+
+ $this->crypto->method('decrypt')
+ ->with('oldencryptedpassword', 'oldtokenmysecret')
+ ->willReturn('mypassword');
+ $this->crypto->method('encrypt')
+ ->with('mypassword', 'newtokenmysecret')
+ ->willReturn('newencryptedpassword');
+
+ $this->mapper->expects($this->once())
+ ->method('update')
+ ->with($this->callback(function (DefaultToken $token) {
+ return $token->getPassword() === 'newencryptedpassword' &&
+ $token->getToken() === hash('sha512', 'newtokenmysecret');
+ }));
+
+ $this->tokenProvider->rotate($token, 'oldtoken', 'newtoken');
+ }
+
+ public function testRotateNoPassword() {
+ $token = new DefaultToken();
+
+ $this->config->method('getSystemValue')
+ ->with('secret')
+ ->willReturn('mysecret');
+
+ $this->mapper->expects($this->once())
+ ->method('update')
+ ->with($this->callback(function (DefaultToken $token) {
+ return $token->getPassword() === null &&
+ $token->getToken() === hash('sha512', 'newtokenmysecret');
+ }));
+
+ $this->tokenProvider->rotate($token, 'oldtoken', 'newtoken');
+ }
}