/**
  * @param Message $invalidInput
  * @throws Exception\InvalidMessageException
  * @dataProvider invalidInputExamples
  */
 public function testInvalidInput($appKeyPair, $invalidInput)
 {
     $caKeyPair = KeyPair::create();
     $this->assertNotEmpty($caKeyPair['privatekey']);
     $this->assertNotEmpty($caKeyPair['publickey']);
     $caCert = CA::create($caKeyPair, '/O=test');
     $this->assertNotEmpty($caCert);
     $appMeta = array('title' => 'My App', 'appId' => self::APP_ID, 'appCert' => CA::signCSR($caKeyPair, $caCert, CA::createAppCSR($appKeyPair, '/O=Application Provider')), 'appUrl' => 'http://app-a.com/cxn', 'perm' => array('api' => array(), 'grant' => array('view all contacts')));
     $appCxnStore = new ArrayCxnStore();
     $regServer = new RegistrationServer($appMeta, $appKeyPair, $appCxnStore);
     list($headers, $blob, $code) = $regServer->handle($invalidInput->encode())->toHttp();
     $this->assertEquals(400, $code);
     $message = InsecureMessage::decode($blob);
     $data = $message->getData();
     $this->assertEquals(1, $data['is_error']);
     $this->assertEquals('Invalid message coding', $data['error_message']);
 }