'Something very secretly created stuff', 'expireAfterViews' => 10, 'expireAfter' => 10]; public function testDefaultCollectionRoutes(): void { $client = static::createClient(); $client->request('GET', 'v1/secrets'); $this->assertResponseStatusCodeSame(404); $client->request('GET', 'v1/secret/asdf'); $this->assertResponseStatusCodeSame(404); } public function testInvalidSecretFormats() { $client = static::createClient(); $invalidFixture = $this->secretValidDtoFixture; $invalidFixture['expireAfterViews'] = 'sajt'; $client->request( 'POST', 'v1/secret', [ 'json' => $invalidFixture ] ); //missing field, invalid field, etc $this->assertResponseStatusCodeSame(405); unset($invalidFixture['expireAfterViews']); $client->request( 'POST', 'v1/secret', [ 'json' => $invalidFixture ] ); //missing field, invalid field, etc $this->assertResponseStatusCodeSame(405); } public function testValidSecretCreation() { $client = static::createClient(); $response = $client->request( 'POST', 'v1/secret', [ 'json' => $this->secretValidDtoFixture ] ); //should be created $this->assertResponseStatusCodeSame(201); $content = $response->getContent(); $this->assertMatchesJsonSchema(['hash', 'secretText', 'createdAt', 'expiresAt', 'remainingViews']); $objectAsArray = json_decode($content, true); $this->assertEquals($this->secretValidDtoFixture['secret'], $objectAsArray['secretText']); $this->assertEquals($this->secretValidDtoFixture['expireAfterViews'], $objectAsArray['remainingViews']); $response = $client->request('GET', 'v1/secret/' . $objectAsArray['hash']); $this->assertResponseStatusCodeSame(200); $content = $response->getContent(); //we haven't saw this in the previous endpoint, we saw the creation response, so it worth to do the same check $this->assertMatchesJsonSchema(['hash', 'secretText', 'createdAt', 'expiresAt', 'remainingViews']); $objectAsArray = json_decode($content, true); $this->assertEquals($this->secretValidDtoFixture['expireAfterViews'] - 1, $objectAsArray['remainingViews']); } }