/** * 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 testDecodeInvalidEncryptedRequest() { $this->cryptoManager->expects($this->once())->method('decrypt')->will($this->returnValue(false)); $this->assertFalse($this->securityManager->decodeRequest($this->commandRequest)); }