'https://example.com/sally', 'type' => 'Person', ), array( new Request( 'GET', 'https://example.com/sally', array( 'Host' => 'example.com', 'Accept' => 'application/ld+json', 'Date' => 'Sun, 05 Jan 2014 21:31:40 GMT', ) ), ), array( new Response( 200, array(), json_encode( (object) array( 'id' => 'https://example.com/sally', 'type' => 'Person', ) )), ), ), array( 'https://example.com/sally', (object) array( 'id' => 'https://example.com/sally', 'type' => 'Person', ), array( new Request( 'GET', 'https://example.com/sally', array( 'Host' => 'example.com', 'Accept' => 'application/ld+json', 'Date' => 'Sun, 05 Jan 2014 21:31:40 GMT', 'Signature' => 'keyId="Test",algorithm="rsa-sha256",headers="(request-target) host date",signature="PXfYgMWE1CpS7DDuo8iB7Sj3qCBuN8bDuND3mQBU06rh7EMfWqisB0USH0DWFbZVcbsHr/YnKJlcmbWG5mpU6Kf0B4SAoMKGHCUNT1i55uw5XLPSZfrd2c38md2Pv8Dt0lO7cFP8SeiTlBM3gTmpvnuKn+AxpR9jpvwAQT8riQw="', ) ), ), array( new Response( 200, array(), json_encode( (object) array( 'id' => 'https://example.com/sally', 'type' => 'Person', ) )), ), 'Test', "-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQDCFENGw33yGihy92pDjZQhl0C36rPJj+CvfSC8+q28hxA161QF\nNUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6Z4UMR7EOcpfdUE9Hf3m/hs+F\nUR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJwoYi+1hqp1fIekaxsyQIDAQAB\nAoGBAJR8ZkCUvx5kzv+utdl7T5MnordT1TvoXXJGXK7ZZ+UuvMNUCdN2QPc4sBiA\nQWvLw1cSKt5DsKZ8UETpYPy8pPYnnDEz2dDYiaew9+xEpubyeW2oH4Zx71wqBtOK\nkqwrXa/pzdpiucRRjk6vE6YY7EBBs/g7uanVpGibOVAEsqH1AkEA7DkjVH28WDUg\nf1nqvfn2Kj6CT7nIcE3jGJsZZ7zlZmBmHFDONMLUrXR/Zm3pR5m0tCmBqa5RK95u\n412jt1dPIwJBANJT3v8pnkth48bQo/fKel6uEYyboRtA5/uHuHkZ6FQF7OUkGogc\nmSJluOdc5t6hI1VsLn0QZEjQZMEOWr+wKSMCQQCC4kXJEsHAve77oP6HtG/IiEn7\nkpyUXRNvFsDE0czpJJBvL/aRFUJxuRK91jhjC68sA7NsKMGg5OXb5I5Jj36xAkEA\ngIT7aFOYBFwGgQAQkWNKLvySgKbAZRTeLBacpHMuQdl1DfdntvAyqpAZ0lY0RKmW\nG6aFKaqQfOXKCyWoUiVknQJAXrlgySFci/2ueKlIE1QqIiLSZ8V8OlpFLRnb1pzI\n7U1yQXnTAEFYM560yJlzUpOb1V4cScGd365tiSMvxLOvTA==\n-----END RSA PRIVATE KEY-----", ), ); } /** * @dataProvider provideForItCaches */ public function testItCaches( $iri, $expectedJsonObj, $expectedRequestHistory = [], $mockResponses = [], $keyId = null, $privateKey = null, ) { $logger = new Logger(); $cache = new ArrayCachePool(); $dateTimeProvider = new TestDateTimeProvider( array ( 'caching-dereferencer.dereference' => DateTime::createFromFormat( DateTime::RFC2822, 'Sun, 05 Jan 2014 21:31:40 GMT' ), ) ); $sigService = new HttpSignatureService( $dateTimeProvider ); $mock = new MockHandler( $mockResponses ); $handler = HandlerStack::create( $mock ); $historyContainer = array(); $history = Middleware::history( $historyContainer ); $handler->push( $history ); $client = new Client( array( 'handler' => $handler ) ); $dereferencer = new CachingDereferencer( $logger, $cache, $client, $sigService, $dateTimeProvider, $keyId, $privateKey ); $jsonObj = $dereferencer->dereference( $iri ); $this->assertEquals( $expectedJsonObj, $jsonObj ); $cachedObj = $dereferencer->dereference( $iri ); $this->assertEquals( $expectedJsonObj, $cachedObj ); $this->assertEquals( count( $expectedRequestHistory ), count( $historyContainer ) ); for ( $i = 0; $i < count( $expectedRequestHistory ); $i += 1 ) { $expectedRequest = $expectedRequestHistory[$i]; $actualRequest = $historyContainer[$i]['request']; foreach ( $expectedRequest->getHeaders() as $name => $expectedHeaders ) { $this->assertEquals( $expectedHeaders, $actualRequest->getHeader( $name ) ); } } } }__halt_compiler();----SIGNATURE:----Bnu6DKBG9oxdqKiR7P6r19B/MOeBF4/ZKw4nIxAnOsALo+6kZu1lXlY5RH5xk9q/g9MD+ZAEjMIxGNmnzS2p/yLpWuacvR8BQ7aZkJpvtL/vrrn1PPDp+CYCWqRe4v+Ndy5B4YS1Tmf9URLlPGvr3dGs2SmElVkG6eFAnZaKSsoM2+/eHa+nz82kqcn3Slmh30uiLNZiaabOLtomg+tX2h0PCf+yO3kT2J9et+ayM3iasiDrFOqJ4t06mee0WnXb6C/9+hkoHabjf6kxKW1qeKAdvbPkWuBSbqyo5YgQu5ugf9VaW8EiQI8EQCBwgoqEF3Z4LQwSiARDSq3uYFTl61sEqt/bd73+ymIh5ZoBvrtkm/xXE/CDuB2SNS9N6H6C9zyPweHXryjl3Je32050zW1T19Z/YcqMHezU6mxeElrQ50CCMvD9NM6oIIR9w9TcL6RhPplVk7khRdOkuBXpkaRy9/YTpa0KJgxICqbX+0O49X1qxg44gCrslg5cjg2a44MKRd5NXRa9F/UvJv07a1bsfvx9bAYMpuIExk8laThIqS7xlVVRNYp9mZpMPO6pQpCNX7AdfuY39BNbvWiE5Bn1miy7IkvMrTjWrSSyJ7GZbkCqO7bYKXSEnJidxk+Nqr9BET33MdV8OH/K8nC66pAI4ixZL/m5azwhcu58Gms=----ATTACHMENT:----NDQzMzcwNTM3MjMwNTk5MCA0NTQxNjgyNDI1NzAzNTc3IDg4NDM5MDI3MjM1MzkwNzY=