StoryValidationTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Tests\Unit\ActivityPub;
  3. use App\Util\ActivityPub\Validator\StoryValidator;
  4. use PHPUnit\Framework\TestCase;
  5. class StoryValidationTest extends TestCase
  6. {
  7. public $activity;
  8. public function setUp(): void
  9. {
  10. parent::setUp();
  11. $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);
  12. }
  13. /** @test */
  14. public function schemaTest()
  15. {
  16. $this->assertTrue(StoryValidator::validate($this->activity));
  17. }
  18. /** @test */
  19. public function invalidContext()
  20. {
  21. $activity = $this->activity;
  22. unset($activity['@context']);
  23. $activity['@@context'] = 'https://www.w3.org/ns/activitystreams';
  24. $this->assertFalse(StoryValidator::validate($activity));
  25. }
  26. /** @test */
  27. public function missingContext()
  28. {
  29. $activity = $this->activity;
  30. unset($activity['@context']);
  31. $this->assertFalse(StoryValidator::validate($activity));
  32. }
  33. /** @test */
  34. public function missingId()
  35. {
  36. $activity = $this->activity;
  37. unset($activity['id']);
  38. $this->assertFalse(StoryValidator::validate($activity));
  39. }
  40. /** @test */
  41. public function missingType()
  42. {
  43. $activity = $this->activity;
  44. unset($activity['type']);
  45. $this->assertFalse(StoryValidator::validate($activity));
  46. }
  47. /** @test */
  48. public function invalidType()
  49. {
  50. $activity = $this->activity;
  51. $activity['type'] = 'Store';
  52. $this->assertFalse(StoryValidator::validate($activity));
  53. }
  54. /** @test */
  55. public function missingTo()
  56. {
  57. $activity = $this->activity;
  58. unset($activity['to']);
  59. $this->assertFalse(StoryValidator::validate($activity));
  60. }
  61. /** @test */
  62. public function missingTimestamps()
  63. {
  64. $activity = $this->activity;
  65. unset($activity['published']);
  66. $this->assertFalse(StoryValidator::validate($activity));
  67. $activity = $this->activity;
  68. unset($activity['expiresAt']);
  69. $this->assertFalse(StoryValidator::validate($activity));
  70. }
  71. }