function let(ServerRequestInterface $request, StreamInterface $stream, EventDispatcherInterface $dispatcher)
 {
     $payload = '
     {
       "object": "page",
       "entry": [
         {
           "id": "PAGE_ID",
           "time": 1473204787206,
           "messaging": [
             {
               "sender":{
                 "id":"USER_ID"
               },
               "recipient":{
                 "id":"PAGE_ID"
               },
               "timestamp":1458692752478,
               "message":{
                 "mid":"mid.1457764197618:41d102a3e1ae206a38",
                 "seq":73,
                 "text":"hello, world!",
                 "quick_reply": {
                   "payload": "DEVELOPER_DEFINED_PAYLOAD"
                 }
               }
             }   
           ]
         }
       ]
     } 
     ';
     $stream->__toString()->willReturn($payload);
     $signature = XHubSignature::compute($payload, 'secret');
     $request->getBody()->willReturn($stream);
     $request->getHeader('X-Hub-Signature')->willReturn(['sha1=' . $signature]);
     $this->beConstructedWith('secret', 'verify_token', $request, $dispatcher);
 }
 /**
  * @return bool
  */
 private function isValidHubSignature()
 {
     $headers = $this->request->getHeader('X-Hub-Signature');
     if (empty($headers)) {
         return false;
     }
     $signature = XHubSignature::parseHeader($headers[0]);
     return XHubSignature::validate($this->getBody(), $this->secret, $signature);
 }