SubjectTest.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace fphammerle\yii2\auth\clientcert\tests;
  3. use \fphammerle\helpers\ArrayHelper;
  4. use \fphammerle\yii2\auth\clientcert\Subject;
  5. use \fphammerle\yii2\auth\clientcert\migrations;
  6. class SubjectTest extends TestCase
  7. {
  8. protected $alice;
  9. protected $bob;
  10. protected function setUp()
  11. {
  12. $this->mockApplication();
  13. (new migrations\CreateSubjectTable)->up();
  14. $this->alice = new models\User('alice');
  15. $this->bob = new models\User('bob');
  16. $this->assertTrue($this->alice->save());
  17. $this->assertTrue($this->bob->save());
  18. }
  19. public function testCreateModel()
  20. {
  21. (new Subject($this->alice->id, 'CN=Alice,C=AT'))->save();
  22. (new Subject($this->alice->id, 'CN=Alice,O=Office,C=AT'))->save();
  23. (new Subject($this->bob->id, 'CN=Bob,C=AT'))->save();
  24. $subjects = ArrayHelper::map(
  25. Subject::find()->all(),
  26. function($s) { return $s->getAttributes(); }
  27. );
  28. $this->assertEquals(3, sizeof($subjects));
  29. ArrayHelper::map(
  30. [['id' => 1, 'identity_id' => $this->alice->id, 'distinguished_name' => 'CN=Alice,C=AT'],
  31. ['id' => 2, 'identity_id' => $this->alice->id, 'distinguished_name' => 'CN=Alice,O=Office,C=AT'],
  32. ['id' => 3, 'identity_id' => $this->bob->id, 'distinguished_name' => 'CN=Bob,C=AT']],
  33. function($a) use ($subjects) {
  34. $this->assertContains($a, $subjects);
  35. }
  36. );
  37. }
  38. public function testDNUnique()
  39. {
  40. $this->assertTrue((new Subject($this->alice->id, 'CN=Alice,C=AT'))->save());
  41. $this->assertTrue((new Subject($this->bob->id, 'CN=Bob,C=AT'))->save());
  42. $dup = new Subject($this->alice->id, 'CN=Alice,C=AT');
  43. $this->assertFalse($dup->save());
  44. $this->assertEquals(1, sizeof($dup->getErrors()));
  45. $this->assertEquals(1, sizeof($dup->getErrors('distinguished_name')));
  46. }
  47. }