StoryValidationTest.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Tests\Unit\ActivityPub;
  3. use App\Util\ActivityPub\Validator\StoryValidator;
  4. use PHPUnit\Framework\Attributes\Test;
  5. use PHPUnit\Framework\TestCase;
  6. class StoryValidationTest extends TestCase
  7. {
  8. public $activity;
  9. public function setUp(): void
  10. {
  11. parent::setUp();
  12. $this->activity = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","id":"https://pixelfed.test/stories/dansup/338581222496276480","type":"Story","to":["https://pixelfed.test/users/dansup/followers"],"cc":[],"attributedTo":"https://pixelfed.test/users/dansup","published":"2021-09-01T07:20:53+00:00","expiresAt":"2021-09-02T07:21:04+00:00","duration":3,"can_reply":true,"can_react":true,"attachment":{"type":"Image","url":"https://pixelfed.test/storage/_esm.t3/xV9/R2LF1xwhAA/011oqKVPDySG3WCPW7yIs2wobvccoITMnG/yT_FZX04f2DCzTA3K8HD2OS7FptXTHPiE1c_ZkHASBQ8UlPKH4.jpg","mediaType":"image/jpeg"}}', true);
  13. }
  14. #[Test]
  15. public function schemaTest()
  16. {
  17. $this->assertTrue(StoryValidator::validate($this->activity));
  18. }
  19. #[Test]
  20. public function invalidContext()
  21. {
  22. $activity = $this->activity;
  23. unset($activity['@context']);
  24. $activity['@@context'] = 'https://www.w3.org/ns/activitystreams';
  25. $this->assertFalse(StoryValidator::validate($activity));
  26. }
  27. #[Test]
  28. public function missingContext()
  29. {
  30. $activity = $this->activity;
  31. unset($activity['@context']);
  32. $this->assertFalse(StoryValidator::validate($activity));
  33. }
  34. #[Test]
  35. public function missingId()
  36. {
  37. $activity = $this->activity;
  38. unset($activity['id']);
  39. $this->assertFalse(StoryValidator::validate($activity));
  40. }
  41. #[Test]
  42. public function missingType()
  43. {
  44. $activity = $this->activity;
  45. unset($activity['type']);
  46. $this->assertFalse(StoryValidator::validate($activity));
  47. }
  48. #[Test]
  49. public function invalidType()
  50. {
  51. $activity = $this->activity;
  52. $activity['type'] = 'Store';
  53. $this->assertFalse(StoryValidator::validate($activity));
  54. }
  55. #[Test]
  56. public function missingTo()
  57. {
  58. $activity = $this->activity;
  59. unset($activity['to']);
  60. $this->assertFalse(StoryValidator::validate($activity));
  61. }
  62. #[Test]
  63. public function missingTimestamps()
  64. {
  65. $activity = $this->activity;
  66. unset($activity['published']);
  67. $this->assertFalse(StoryValidator::validate($activity));
  68. $activity = $this->activity;
  69. unset($activity['expiresAt']);
  70. $this->assertFalse(StoryValidator::validate($activity));
  71. }
  72. }