/**
  * Execute a Command Request (which consists of multiple Operation keys and parameters).
  *
  * The Command Request is validated, decoded and then executed.
  *
  * @param tx_caretakerinstance_CommandRequest $commandRequest
  * @return tx_caretakerinstance_CommandResult The command result object
  */
 public function executeCommand(tx_caretakerinstance_CommandRequest $commandRequest)
 {
     if ($this->securityManager->validateRequest($commandRequest)) {
         if ($this->securityManager->decodeRequest($commandRequest)) {
             $operations = $commandRequest->getData('operations');
             $results = array();
             foreach ($operations as $operation) {
                 $results[] = $this->operationManager->executeOperation($operation[0], $operation[1]);
             }
             return new tx_caretakerinstance_CommandResult(tx_caretakerinstance_CommandResult::status_ok, $results);
         } else {
             return new tx_caretakerinstance_CommandResult(tx_caretakerinstance_CommandResult::status_error, NULL, 'The request could not be decrypted');
         }
     } else {
         return new tx_caretakerinstance_CommandResult(tx_caretakerinstance_CommandResult::status_error, NULL, 'The request could not be certified');
     }
 }
 function testWrongSignatureDoesntValidate()
 {
     $this->cryptoManager->expects($this->any())->method('verifySessionToken')->will($this->returnValue(time() - 1));
     $this->cryptoManager->expects($this->any())->method('verifySignature')->will($this->returnValue(false));
     $this->assertFalse($this->securityManager->validateRequest($this->commandRequest));
 }