Эх сурвалжийг харах

Subject model: added setIdentity()

Fabian Peter Hammerle 8 жил өмнө
parent
commit
4a67c35d4d
2 өөрчлөгдсөн 33 нэмэгдсэн , 5 устгасан
  1. 14 5
      Subject.php
  2. 19 0
      tests/SubjectTest.php

+ 14 - 5
Subject.php

@@ -11,11 +11,7 @@ class Subject extends \yii\db\ActiveRecord
 
     public function __construct(\yii\web\IdentityInterface $identity = null, $dn = null)
     {
-        if($identity !== null) {
-            $this->identity_id = $identity->getId();
-        } else {
-            $this->identity_id = null;
-        }
+        $this->identity = $identity;
         $this->distinguished_name = $dn;
     }
 
@@ -64,4 +60,17 @@ class Subject extends \yii\db\ActiveRecord
             [Subject::getIdentityIdSchema()->name => 'identity_id']
         );
     }
+
+    public function setIdentity(\yii\web\IdentityInterface $identity = null)
+    {
+        if($identity === null) {
+            $this->identity_id = null;
+        } else {
+            // @see \yii\web\IdentityInterface::getId()
+            $this->identity_id = $identity->getId();
+        }
+
+        // TODO: update related record
+        // $this->getRelatedRecords()['identity'] = $identity;
+    }
 }

+ 19 - 0
tests/SubjectTest.php

@@ -69,4 +69,23 @@ class SubjectTest extends TestCase
         $this->assertInstanceOf(models\User::className(), $s->identity);
         $this->assertEquals($this->bob->id, $s->identity->id);
     }
+
+    public function testSetIdentity()
+    {
+        $s = new Subject($this->alice, 'CN=Alice,C=AT');
+        $this->assertInstanceOf(models\User::className(), $s->identity);
+        $this->assertEquals($this->alice->id, $s->identity->id);
+
+        $s->identity = $this->bob;
+        $this->assertEquals($this->bob->id, $s->identity_id);
+        // TODO: $this->assertEquals($this->bob->id, $s->identity->id);
+
+        $s->save();
+        $s = Subject::findOne(['identity_id' => $this->bob->id]);
+        $this->assertEquals($this->bob->id, $s->identity_id);
+        $this->assertEquals($this->bob->id, $s->identity->id);
+
+        $s->identity = null;
+        $this->assertNull($s->identity_id);
+    }
 }