/** * @param string $encodedValue * @return ClaimCheck * @throws ExceptionInterface */ public function unserialize($encodedValue) { try { $data = Json::decode($encodedValue, Json::TYPE_ARRAY); } catch (RuntimeException $e) { throw new InvalidArgumentException($e->getMessage(), 0, $e); } if (!array_key_exists('Message', $data)) { throw new InvalidArgumentException('Message is required and cannot be empty.'); } return $this->serializer->unserialize($data['Message']); }
public function testReceiveAlteredReceiptHandle() { $this->sqsClient->method('__call')->with('receiveMessage')->willReturnCallback(function ($name, array $args) { $factory = new ClaimCheckFactory('MyBucket'); $serializer = new ClaimCheckJsonSerializer(); return new Result(['Messages' => [['Body' => $serializer->serialize($factory->create('MyKey')), 'ReceiptHandle' => 'MyReceiptHandle']]]); }); $this->s3Client->method('__call')->with('getObject')->willReturnCallback(function ($name, array $args) { return new Result(['Body' => 'MyOriginalMessage']); }); $actual = $this->sut->receiveMessage(); self::assertInstanceOf(Result::class, $actual); self::assertContains('MyReceiptHandle', $actual->search('Messages[].ReceiptHandle|[0]')); self::assertContains('MyBucket', $actual->search('Messages[].ReceiptHandle|[0]')); self::assertContains('MyKey', $actual->search('Messages[].ReceiptHandle|[0]')); }
/** * @throws ExceptionInterface * @expectedException \Abacaphiliac\AwsSdk\ClaimCheck\Exception\ExceptionInterface */ public function testUnserializeClaimCheckMissingKey() { $this->sut->unserialize(Json::encode(['s3BucketName' => 'MyBucket'])); }