SubjectTest.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. public function testCreateModel()
  9. {
  10. $app = $this->mockApplication();
  11. (new migrations\CreateSubjectTable)->up();
  12. (new Subject('CN=Alice,C=AT'))->save();
  13. (new Subject('CN=Alice,O=Office,C=AT'))->save();
  14. (new Subject('CN=Bob,C=AT'))->save();
  15. $subjects = ArrayHelper::map(
  16. Subject::find()->all(),
  17. function($s) { return $s->getAttributes(); }
  18. );
  19. $this->assertEquals(3, sizeof($subjects));
  20. ArrayHelper::map(
  21. [['id' => 1, 'distinguished_name' => 'CN=Alice,C=AT'],
  22. ['id' => 2, 'distinguished_name' => 'CN=Alice,O=Office,C=AT'],
  23. ['id' => 3, 'distinguished_name' => 'CN=Bob,C=AT']],
  24. function($a) use ($subjects) {
  25. $this->assertContains($a, $subjects);
  26. }
  27. );
  28. }
  29. public function testDNUnique()
  30. {
  31. $app = $this->mockApplication();
  32. (new migrations\CreateSubjectTable)->up();
  33. $this->assertTrue((new Subject('CN=Alice,C=AT'))->save());
  34. $this->assertTrue((new Subject('CN=Bob,C=AT'))->save());
  35. $dup = new Subject('CN=Alice,C=AT');
  36. $this->assertFalse($dup->save());
  37. $this->assertEquals(1, sizeof($dup->getErrors()));
  38. $this->assertEquals(1, sizeof($dup->getErrors('distinguished_name')));
  39. }
  40. }