/**
  * @covers WindowsAzure\MediaServices\Templates\PlayReadyLicenseResponseTemplate::getLicenseTemplates
  * @covers WindowsAzure\MediaServices\Templates\PlayReadyLicenseResponseTemplate::setLicenseTemplates
  */
 public function testGetSetLicenseTemplates()
 {
     // Setup
     $entity = new PlayReadyLicenseResponseTemplate();
     $payload = array();
     // Test
     $entity->setLicenseTemplates($payload);
     $result = $entity->getLicenseTemplates();
     // Assert
     $this->assertEquals($payload, $result);
 }
 /**
  * @param PlayReadyLicenseResponseTemplate $template
  */
 private static function ValidateLicenseResponseTemplate($template)
 {
     // Validate the PlayReadyLicenseResponseTemplate has at least one license
     if (count($template->getLicenseTemplates()) <= 0) {
         throw new \RuntimeException(ErrorMessages::AT_LEAST_ONE_LICENSE_TEMPLATE_REQUIRED);
     }
     foreach ($template->getLicenseTemplates() as $license) {
         // This is actually enforced in the DataContract with the IsRequired attribute
         // so this check should never fail.
         if ($license->getContentKey() == null) {
             throw new \RuntimeException(ErrorMessages::PLAY_READY_CONTENT_KEY_REQUIRED);
         }
         // A PlayReady license must have at least one Right in it.  Today we only
         // support the PlayRight so it is required.  In the future we might support
         // other types of rights (CopyRight, perhaps an extensible Right, whatever)
         // so we enforce this in code and not in the DataContract itself.
         if ($license->getPlayRight() == null) {
             throw new \RuntimeException(ErrorMessages::PLAY_READY_PLAY_RIGHT_REQUIRED);
         }
         //  Per the PlayReady Compliance rules (section 3.8 - Output Control for Unknown Outputs), passing content to
         //  unknown output is prohibited if the DigitalVideoOnlyContentRestriction is enabled.
         if ($license->getPlayRight()->getDigitalVideoOnlyContentRestriction()) {
             if ($license->getPlayRight()->getAllowPassingVideoContentToUnknownOutput() == UnknownOutputPassingOption::ALLOWED || $license->getPlayRight()->getAllowPassingVideoContentToUnknownOutput() == UnknownOutputPassingOption::ALLOWED_WITH_VIDEO_CONSTRICTION) {
                 throw new \RuntimeException(ErrorMessages::DIGITAL_VIDEO_ONLY_MUTUALLY_EXCLUSIVE_WITH_PASSING_TO_UNKNOWN_OUTPUT_ERROR);
             }
         }
         //  License template should not have both BeginDate and RelativeBeginDate set.
         //  Only one of these two values should be set.
         if ($license->getBeginDate() != null && $license->getRelativeBeginDate() != null) {
             throw new \RuntimeException(ErrorMessages::BEGIN_DATE_AND_RELATIVE_BEGIN_DATE_CANNOTBE_SET_SIMULTANEOUSLY_ERROR);
         }
         //  License template should not have both ExpirationDate and RelativeExpirationDate set.
         //  Only one of these two values should be set.
         if ($license->getExpirationDate() != null && $license->getRelativeExpirationDate() != null) {
             throw new \RuntimeException(ErrorMessages::EXPIRATION_DATE_AND_RELATIVE_EXPIRATION_DATE_CANNOTBE_SET_SIMULTANEOUSLY_ERROR);
         }
         if ($license->getLicenseType() == PlayReadyLicenseType::NON_PERSISTENT) {
             //  The PlayReady Rights Manager SDK will return an error if you try to specify a license
             //  that is non-persistent and has a first play expiration set.  The event log message related
             //  to the error will say "LicenseGenerationFailure: FirstPlayExpiration can not be set on Non
             //  Persistent license PlayRight."
             if ($license->getPlayRight()->getFirstPlayExpiration() != null) {
                 throw new \RuntimeException(ErrorMessages::FIRST_PLAY_EXPIRATION_CANNOT_BE_SET_ON_NON_PERSISTENT_LICENSE);
             }
             //  The PlayReady Rights Manager SDK will return an error if you try to specify a license
             //  that is non-persistent and has a GracePeriod set.
             if ($license->getGracePeriod() != null) {
                 throw new \RuntimeException(ErrorMessages::GRACE_PERIOD_CANNOT_BE_SET_ON_NON_PERSISTENT_LICENSE);
             }
             //  The PlayReady Rights Manager SDK will return an error if you try to specify a license
             //  that is non-persistent and has a GracePeriod set.  The event log message related
             //  to the error will say "LicenseGenerationFailure: BeginDate or ExpirationDate should not be set
             //  on Non Persistent licenses"
             if ($license->getBeginDate() != null) {
                 throw new \RuntimeException(ErrorMessages::BEGIN_DATE_CANNOT_BE_SET_ON_NON_PERSISTENT_LICENSE);
             }
             //  The PlayReady Rights Manager SDK will return an error if you try to specify a license
             //  that is non-persistent and has a GracePeriod set.  The event log message related
             //  to the error will say "LicenseGenerationFailure: BeginDate or ExpirationDate should not be set
             //  on Non Persistent licenses"
             if ($license->getExpirationDate() != null) {
                 throw new \RuntimeException(ErrorMessages::EXPIRATION_CANNOT_BE_SET_ON_NON_PERSISTENT_LICENSE);
             }
         }
     }
     return true;
 }