/**
  * @covers WindowsAzure\MediaServices\Templates\TokenRestrictionTemplate::getTokenType
  * @covers WindowsAzure\MediaServices\Templates\TokenRestrictionTemplate::setTokenType
  */
 public function testGetSetTokenType()
 {
     // Setup
     $entity = new TokenRestrictionTemplate();
     $payload = TokenType::JWT;
     // Test
     $entity->setTokenType($payload);
     $result = $entity->getTokenType();
     // Assert
     $this->assertEquals($payload, $result);
 }
 /**
  * Serialize a TokenRestrictionTemplate object into a TokenRestrictionTemplate XML
  * @param TokenRestrictionTemplate $tokenRestriction
  * @return string The TokenRestrictionTemplate XML
  */
 public static function serialize($tokenRestriction)
 {
     if (empty($tokenRestriction->getPrimaryVerificationKey()) && ($tokenRestriction->getOpenIdConnectDiscoveryDocument() == null || empty($tokenRestriction->getOpenIdConnectDiscoveryDocument()->getOpenIdDiscoveryUri()))) {
         throw new \RuntimeException("Both PrimaryVerificationKey and OpenIdConnectDiscoveryDocument are null");
     }
     if (empty($tokenRestriction->getAudience())) {
         throw new \RuntimeException("TokenRestrictionTemplate Serialize: Audience is required");
     }
     if (empty($tokenRestriction->getIssuer())) {
         throw new \RuntimeException("TokenRestrictionTemplate Serialize: Issuer is required");
     }
     $writer = new \XMLWriter();
     $writer->openMemory();
     $writer->startElementNS(null, 'TokenRestrictionTemplate', Resources::TRT_XML_NAMESPACE);
     $writer->writeAttributeNS('xmlns', 'i', null, Resources::XSI_XML_NAMESPACE);
     if (!empty($tokenRestriction->getAlternateVerificationKeys())) {
         TokenRestrictionTemplateSerializer::serializeAlternateVerificationKeys($writer, $tokenRestriction->getAlternateVerificationKeys());
     }
     $writer->writeElement("Audience", $tokenRestriction->getAudience());
     $writer->writeElement("Issuer", $tokenRestriction->getIssuer());
     if (!empty($tokenRestriction->getPrimaryVerificationKey())) {
         $writer->startElement('PrimaryVerificationKey');
         TokenRestrictionTemplateSerializer::serializeTokenVerificationKey($writer, $tokenRestriction->getPrimaryVerificationKey());
         $writer->endElement();
     }
     if (!empty($tokenRestriction->getRequiredClaims())) {
         TokenRestrictionTemplateSerializer::serializeRequiredClaims($writer, $tokenRestriction->getRequiredClaims());
     }
     if (!empty($tokenRestriction->getTokenType())) {
         $writer->writeElement('TokenType', $tokenRestriction->getTokenType());
     }
     if (!empty($tokenRestriction->getOpenIdConnectDiscoveryDocument())) {
         TokenRestrictionTemplateSerializer::serializeOpenIdConnectDiscoveryDocument($writer, $tokenRestriction->getOpenIdConnectDiscoveryDocument());
     }
     $writer->endElement();
     return $writer->outputMemory();
 }