/** * @covers WindowsAzure\MediaServices\Templates\TokenRestrictionTemplate::getAlternateVerificationKeys * @covers WindowsAzure\MediaServices\Templates\TokenRestrictionTemplate::setAlternateVerificationKeys */ public function testGetSetAlternateVerificationKeys() { // Setup $entity = new TokenRestrictionTemplate(); $payload = array(); $payload[] = new SymmetricVerificationKey(); // Test $entity->setAlternateVerificationKeys($payload); $result = $entity->getAlternateVerificationKeys(); // Assert $this->assertEquals($payload, $result); }
/** * Deserialize a TokenRestrictionTemplate xml into a TokenRestrictionTemplate object. * * @param string $options Array containing values for object properties * * @return TokenRestrictionTemplate */ public static function deserialize($template) { $xml = simplexml_load_string($template); $result = new TokenRestrictionTemplate(); // Validation if ($xml->getName() !== 'TokenRestrictionTemplate') { throw new \RuntimeException("This is not a TokenRestrictionTemplate, it is a '{$xml->getName()}'"); } if (!isset($xml->Issuer)) { throw new \RuntimeException("The TokenRestrictionTemplate must contains an 'Issuer' element"); } if (!isset($xml->Audience)) { throw new \RuntimeException("The TokenRestrictionTemplate must contains an 'Audience' element"); } if (!isset($xml->PrimaryVerificationKey) && !isset($xml->OpenIdConnectDiscoveryDocument)) { throw new \RuntimeException("Both PrimaryVerificationKey and OpenIdConnectDiscoveryDocument are undefined"); } // decoding if (isset($xml->AlternateVerificationKeys)) { $result->setAlternateVerificationKeys(TokenRestrictionTemplateSerializer::deserializeAlternateVerificationKeys($xml->AlternateVerificationKeys)); } $result->setAudience((string) $xml->Audience); $result->setIssuer((string) $xml->Issuer); if (isset($xml->PrimaryVerificationKey)) { $result->setPrimaryVerificationKey(TokenRestrictionTemplateSerializer::deserializeTokenVerificationKey($xml->PrimaryVerificationKey)); } if (isset($xml->RequiredClaims)) { $result->setRequiredClaims(TokenRestrictionTemplateSerializer::deserializeRequiredClaims($xml->RequiredClaims)); } if (isset($xml->TokenType)) { $result->setTokenType((string) $xml->TokenType); } if (isset($xml->OpenIdConnectDiscoveryDocument)) { $result->setOpenIdConnectDiscoveryDocument(TokenRestrictionTemplateSerializer::deserializeOpenIdConnectDiscoveryDocument($xml->OpenIdConnectDiscoveryDocument)); } return $result; }
public function testCreateContentKeyAuthorizationPolicyOptionForWidevine() { // Setup Token $widevine = new WidevineMessage(); $widevine->allowed_track_types = AllowedTrackTypes::SD_HD; $contentKeySpecs = new ContentKeySpecs(); $contentKeySpecs->required_output_protection = new RequiredOutputProtection(); $contentKeySpecs->required_output_protection->hdcp = Hdcp::HDCP_NONE; $contentKeySpecs->security_level = 1; $contentKeySpecs->track_type = 'SD'; $widevine->content_key_specs = array($contentKeySpecs); $policyOverrides = new \stdClass(); $policyOverrides->can_play = true; $policyOverrides->can_persist = true; $policyOverrides->can_renew = false; $widevine->policy_overrides = $policyOverrides; $jsonWidevine = WidevineMessageSerializer::serialize($widevine); $template = new TokenRestrictionTemplate(TokenType::SWT); $template->setPrimaryVerificationKey(new SymmetricVerificationKey()); $template->setAlternateVerificationKeys(array(new SymmetricVerificationKey())); $template->setAudience('http://sampleaudience/'); $template->setIssuer('http://sampleissuerurl/'); $claims = array(); $claims[] = new TokenClaim(TokenClaim::CONTENT_KEY_ID_CLAIM_TYPE); $claims[] = new TokenClaim('Rental', 'true'); $template->setRequiredClaims($claims); $serializedTemplate = TokenRestrictionTemplateSerializer::serialize($template); // Setup Options $name = TestResources::MEDIA_SERVICES_CONTENT_KEY_AUTHORIZATION_OPTIONS_NAME . $this->createSuffix(); $restrictionName = TestResources::MEDIA_SERVICES_CONTENT_KEY_AUTHORIZATION_POLICY_RESTRICTION_NAME . $this->createSuffix(); $restriction = new ContentKeyAuthorizationPolicyRestriction(); $restriction->setName($restrictionName); $restriction->setKeyRestrictionType(ContentKeyRestrictionType::TOKEN_RESTRICTED); $restriction->setRequirements($serializedTemplate); $restrictions = array($restriction); $options = new ContentKeyAuthorizationPolicyOption(); $options->setName($name); $options->setKeyDeliveryType(ContentKeyDeliveryType::WIDEVINE); $options->setKeyDeliveryConfiguration($jsonWidevine); $options->setRestrictions($restrictions); // Test $result = $this->createContentKeyAuthorizationPolicyOption($options); // Retrieve the CKAPO again. $result = $this->restProxy->getContentKeyAuthorizationPolicyOption($result->getId()); // Assert Options $this->assertEquals($options->getName(), $result->getName()); $this->assertEquals($options->getKeyDeliveryType(), $result->getKeyDeliveryType()); $this->assertJsonStringEqualsJsonString($jsonWidevine, $result->getKeyDeliveryConfiguration()); $actualWidevine = WidevineMessageSerializer::deserialize($result->getKeyDeliveryConfiguration()); $this->assertEqualsWidevineMessage($widevine, $actualWidevine); return $result->getId(); }
/** * @covers \WindowsAzure\MediaServices\Templates\TokenRestrictionTemplateSerializer::serialize * @covers \WindowsAzure\MediaServices\Templates\TokenRestrictionTemplateSerializer::deserialize */ public function testRoundTripTest() { $template = new TokenRestrictionTemplate(TokenType::SWT); $template->setPrimaryVerificationKey(new SymmetricVerificationKey()); $template->setAlternateVerificationKeys(array(new SymmetricVerificationKey())); $template->setAudience('http://sampleaudience/'); $template->setIssuer('http://sampleissuerurl/'); $claims = array(); $claims[] = new TokenClaim(TokenClaim::CONTENT_KEY_ID_CLAIM_TYPE); $claims[] = new TokenClaim('Rental', 'true'); $template->setRequiredClaims($claims); $serializedTemplate = TokenRestrictionTemplateSerializer::serialize($template); $template2 = TokenRestrictionTemplateSerializer::deserialize($serializedTemplate); self::assertEqualsTokenRestrictionTemplate($this, $template, $template2); }