public async void MediaServicesLocatorCreateHandler_DoWorkAsync_Tests(RequestMediaServicesLocatorCreateDTO baseDTO, string expectedCustomEventTypes, Type expectedExceptionType) { // Arrange Mocks Mock.Get(eventGridPublisher) .Setup(x => x.PublishEventToTopic(It.IsAny <EventGridEvent>())) .ReturnsAsync(true); Mock.Get(mediaServicesV3PublicationService) .Setup(x => x.LocatorCreateAsync( It.IsAny <Uri>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <TimeBasedFilterDTO>(), It.IsAny <JObject>(), It.IsAny <bool>())) .ReturnsAsync(MediaServicesV3PublicationTestData.ServiceOperationResult_Is_Expected); // Act ResponseBaseDTO eventReturned = null; var exception = await Record.ExceptionAsync(async() => { eventReturned = await this.handler.TestDoWorkAsync(baseDTO, CustomEventTypes.RequestMediaservicesLocatorCreate).ConfigureAwait(true); }).ConfigureAwait(true); // Assert if (expectedExceptionType == null) { // Success cases exception.ShouldBeNull(); } else { // Failure cases exception.ShouldBeOfType(expectedExceptionType); eventReturned.ShouldBeNull(); } if (!string.IsNullOrWhiteSpace(expectedCustomEventTypes)) { // Success cases eventReturned.ShouldNotBeNull(); eventReturned.ReturnEventType.ShouldBe(expectedCustomEventTypes); } else { // Failure cases eventReturned.ShouldBeNull(); } }
public async void MediaServicesV3ServiceCreateLocatorTestWithPolicyUpdate(RequestMediaServicesLocatorCreateDTO locatorCreateDTO, string updatePolicy, ContentKeyPolicy contentKeyPolicy) { var amsV3SdkWrapper = Mock.Of <IMediaServicesV3SdkWrapper>(); var storageService = Mock.Of <IStorageService>(); var settingsProvider = Mock.Of <ISettingsProvider>(); // Arrange string assetName = "myassetname"; var amsAccount = new MediaService(storageAccounts: new List <StorageAccount>() { new StorageAccount() { Id = MediaServicesV3PublicationTestData.DefaultStorageId } }); // Arrange Mocks Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <Asset>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Asset(name: assetName)); Mock.Get(amsV3SdkWrapper) .Setup(x => x.MediaservicesGetAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(amsAccount); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingEndpointsListAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(MockPageSe); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorListPathsAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(Paths); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorCreateAsync(It.IsAny <string>(), It.IsAny <StreamingLocator>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new StreamingLocator(assetName: "asset45", streamingPolicyName: locatorCreateDTO.StreamingPolicyName, defaultContentKeyPolicyName: locatorCreateDTO.ContentKeyPolicyName, contentKeys: new List <StreamingLocatorContentKey>() { new StreamingLocatorContentKey(Guid.NewGuid(), StreamingLocatorContentKeyType.CommonEncryptionCenc), new StreamingLocatorContentKey(Guid.NewGuid(), StreamingLocatorContentKeyType.CommonEncryptionCbcs) })); Mock.Get(amsV3SdkWrapper) .Setup(x => x.ContentKeyPolicyGetAsync(locatorCreateDTO.ContentKeyPolicyName, It.IsAny <CancellationToken>())) .ReturnsAsync(contentKeyPolicy); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingPolicyGetAsync(MediaServicesV3PublicationTestData.GoodDRMStreamingPolicy, It.IsAny <CancellationToken>())) .ReturnsAsync(new StreamingPolicy()); Mock.Get(amsV3SdkWrapper) .Setup(x => x.ContentKeyPolicyCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <IEnumerable <ContentKeyPolicyOption> >(), It.IsAny <string>(), It.IsAny <CancellationToken>())); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmOpenIdConnectDiscoveryDocument")) .Returns(MediaServicesV3PublicationTestData.AmsDrmOpenIdConnectDiscoveryDocument); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmFairPlayPfxPassword")) .Returns(MediaServicesV3PublicationTestData.AmsDrmFairPlayPfxPassword); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmFairPlayAskHex")) .Returns(MediaServicesV3PublicationTestData.AmsDrmFairPlayAskHex); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmFairPlayCertificateB64")) .Returns(MediaServicesV3PublicationTestData.AmsDrmFairPlayCertAsSecretStringStatic); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmEnableContentKeyPolicyUpdate")) .Returns(updatePolicy); IMediaServicesV3ContentKeyPolicyService amsContentKeyPolService2 = new MediaServicesV3ContentKeyPolicyService(settingsProvider, LogKey); IMediaServicesV3CustomStreamingPolicyService amsStreamingPolService2 = new MediaServicesV3CustomStreamingPolicyService(); // Act var amsV3PubServices = new MediaServicesV3PublicationService(amsContentKeyPolService2, amsStreamingPolService2, amsV3SdkWrapper, storageService, settingsProvider, Log); // Assert var result = await amsV3PubServices.LocatorCreateAsync( locatorCreateDTO.ContainerUri, locatorCreateDTO.StreamingPolicyName, locatorCreateDTO.ContentKeyPolicyName, locatorCreateDTO.TimeBasedFilter, locatorCreateDTO.OperationContext, locatorCreateDTO.GenerateAudioFilters).ConfigureAwait(false); result.ShouldBeOfType <ServiceOperationResultMediaServicesV3LocatorCreate>(); result.LocatorName.ShouldBeOfType <string>(); }
public async void MediaServicesV3ServiceCreateLocatorFailureTests(RequestMediaServicesLocatorCreateDTO locatorCreateDTO, bool expectedValue, Type typeException) { // Arrange var amsV3SdkWrapper = Mock.Of <IMediaServicesV3SdkWrapper>(); var storageService = Mock.Of <IStorageService>(); var amsContentKeyPolService = Mock.Of <IMediaServicesV3ContentKeyPolicyService>(); var settingsProvider = Mock.Of <ISettingsProvider>(); string assetName = "myassetname"; var amsAccount = new MediaService(storageAccounts: new List <StorageAccount>() { new StorageAccount() { Id = MediaServicesV3PublicationTestData.DefaultStorageId } }); // Arrange Mocks Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue(EnvironmentTypeConstants.EnvironmentTypeSettingName)) .Returns(EnvironmentTypeConstants.EnvironmentTypeDevelopment); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmEnableContentKeyPolicyUpdate")) .Returns("true"); Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <Asset>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Asset(name: assetName)); Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetFiltersCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <string>(), TimingIsWrong(), It.IsAny <CancellationToken>())) .ThrowsAsync(new Exception()); Mock.Get(amsV3SdkWrapper) .Setup(x => x.MediaservicesGetAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(amsAccount); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingEndpointsListAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(MockPageSe); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorListPathsAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(Paths); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorCreateAsync(It.IsAny <string>(), It.IsAny <StreamingLocator>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new StreamingLocator(assetName: "asset45", streamingPolicyName: locatorCreateDTO.StreamingPolicyName, defaultContentKeyPolicyName: locatorCreateDTO.ContentKeyPolicyName, contentKeys: new List <StreamingLocatorContentKey>())); if (locatorCreateDTO.ContentKeyPolicyName == MediaServicesV3PublicationTestData.GoodDataDtoDRM.ContentKeyPolicyName) { ContentKeyPolicy pol = null; Mock.Get(amsV3SdkWrapper) .Setup(x => x.ContentKeyPolicyGetAsync(MediaServicesV3PublicationTestData.GoodDataDtoDRM.ContentKeyPolicyName, It.IsAny <CancellationToken>())) .ReturnsAsync(pol); Mock.Get(amsV3SdkWrapper) .Setup(x => x.ContentKeyPolicyCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <List <ContentKeyPolicyOption> >(), It.IsAny <string>(), It.IsAny <CancellationToken>())) .ThrowsAsync(new Exception()); } Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetFiltersCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <AssetFilter>(), It.IsAny <CancellationToken>())) .ThrowsAsync(new Exception()); Mock.Get(amsContentKeyPolService) .Setup(x => x.GetContentKeyPolicyFromMemory(It.IsAny <string>())) .Returns(new MediaServicesV3CustomContentKeyPolicyMultiDrmKey( MediaServicesV3PublicationTestData.AmsDrmOpenIdConnectDiscoveryDocument, MediaServicesV3PublicationTestData.AmsDrmFairPlayPfxPassword, MediaServicesV3PublicationTestData.AmsDrmFairPlayAskHex, MediaServicesV3PublicationTestData.AmsDrmFairPlayPfx)); IMediaServicesV3CustomStreamingPolicyService amsStreamingPolService2 = new MediaServicesV3CustomStreamingPolicyService(); // Act var amsV3PubServices = new MediaServicesV3PublicationService(amsContentKeyPolService, amsStreamingPolService2, amsV3SdkWrapper, storageService, settingsProvider, Log); // Assert if (expectedValue) { } else { _ = await Xunit.Assert.ThrowsAsync(typeException, async() => await amsV3PubServices.LocatorCreateAsync( locatorCreateDTO.ContainerUri, locatorCreateDTO.StreamingPolicyName, locatorCreateDTO.ContentKeyPolicyName, locatorCreateDTO.TimeBasedFilter, locatorCreateDTO.OperationContext, locatorCreateDTO.GenerateAudioFilters).ConfigureAwait(false)).ConfigureAwait(false); } }
public async void MediaServicesV3ServiceCreateLocatorTest(RequestMediaServicesLocatorCreateDTO locatorCreateDTO, bool expectedValue, Type typeException, string environmentType) { // Arrange var storageService = Mock.Of <IStorageService>(); var amsV3SdkWrapper = Mock.Of <IMediaServicesV3SdkWrapper>(); var settingsProvider = Mock.Of <ISettingsProvider>(); string assetName = "myassetname"; var amsAccount = new MediaService(storageAccounts: new List <StorageAccount>() { new StorageAccount() { Id = MediaServicesV3PublicationTestData.DefaultStorageId } }); // Arrange Mocks Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <Asset>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Asset(name: assetName)); Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetFiltersCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <string>(), TimingIsWrong(), It.IsAny <CancellationToken>())) .ThrowsAsync(new Exception()); Mock.Get(amsV3SdkWrapper) .Setup(x => x.MediaservicesGetAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(amsAccount); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingEndpointsListAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(MockPageSe); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorListPathsAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(Paths); Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorCreateAsync(It.IsAny <string>(), It.IsAny <StreamingLocator>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new StreamingLocator(assetName: "asset45", streamingPolicyName: locatorCreateDTO.StreamingPolicyName, defaultContentKeyPolicyName: locatorCreateDTO.ContentKeyPolicyName, contentKeys: new List <StreamingLocatorContentKey>())); if (locatorCreateDTO.ContentKeyPolicyName == MediaServicesV3PublicationTestData.GoodContentKeyPolicyDrm) { // let's add a CENC and CBCS keys Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorCreateAsync(It.IsAny <string>(), It.IsAny <StreamingLocator>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new StreamingLocator(assetName: "asset45", streamingPolicyName: locatorCreateDTO.StreamingPolicyName, defaultContentKeyPolicyName: locatorCreateDTO.ContentKeyPolicyName, contentKeys: new List <StreamingLocatorContentKey>() { new StreamingLocatorContentKey(Guid.NewGuid(), StreamingLocatorContentKeyType.CommonEncryptionCenc), new StreamingLocatorContentKey(Guid.NewGuid(), StreamingLocatorContentKeyType.CommonEncryptionCbcs) })); } else { Mock.Get(amsV3SdkWrapper) .Setup(x => x.StreamingLocatorCreateAsync(It.IsAny <string>(), It.IsAny <StreamingLocator>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new StreamingLocator(assetName: "asset45", streamingPolicyName: locatorCreateDTO.StreamingPolicyName, defaultContentKeyPolicyName: locatorCreateDTO.ContentKeyPolicyName, contentKeys: new List <StreamingLocatorContentKey>())); } Mock.Get(amsV3SdkWrapper) .Setup(x => x.AssetFiltersCreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <AssetFilter>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new AssetFilter()); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue(EnvironmentTypeConstants.EnvironmentTypeSettingName)) .Returns(environmentType); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmOpenIdConnectDiscoveryDocument")) .Returns(MediaServicesV3PublicationTestData.AmsDrmOpenIdConnectDiscoveryDocument); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmFairPlayPfxPassword")) .Returns(MediaServicesV3PublicationTestData.AmsDrmFairPlayPfxPassword); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmFairPlayAskHex")) .Returns(MediaServicesV3PublicationTestData.AmsDrmFairPlayAskHex); Mock.Get(settingsProvider) .Setup(x => x.GetAppSettingsValue("AmsDrmFairPlayCertificateB64")) .Returns(MediaServicesV3PublicationTestData.AmsDrmFairPlayCertAsSecretStringStatic); Mock.Get(storageService) .Setup(x => x.ListBlobsAsync(It.IsAny <Uri>(), It.IsAny <StorageClientProviderContext>())) .ReturnsAsync(MediaServicesV3PublicationTestData.GoodBlobItemListWithIsmFile); Mock.Get(storageService) .Setup(x => x.DownloadHttpRangeAsync(It.IsAny <Uri>(), It.IsAny <StorageClientProviderContext>(), default)) .ReturnsAsync(MediaServicesV3PublicationTestData.GoodIsmFileBlobDownloadInfo); IMediaServicesV3ContentKeyPolicyService amsContentKeyPolService2 = new MediaServicesV3ContentKeyPolicyService(settingsProvider, LogKey); IMediaServicesV3CustomStreamingPolicyService amsStreamingPolService2 = new MediaServicesV3CustomStreamingPolicyService(); // Act var amsV3PubServices = new MediaServicesV3PublicationService(amsContentKeyPolService2, amsStreamingPolService2, amsV3SdkWrapper, storageService, settingsProvider, Log); // Assert if (expectedValue == false) { _ = await Xunit.Assert.ThrowsAsync(typeException, async() => await amsV3PubServices.LocatorCreateAsync( locatorCreateDTO.ContainerUri, locatorCreateDTO.StreamingPolicyName, locatorCreateDTO.ContentKeyPolicyName, locatorCreateDTO.TimeBasedFilter, locatorCreateDTO.OperationContext, locatorCreateDTO.GenerateAudioFilters).ConfigureAwait(false)).ConfigureAwait(false); } else { var result = await amsV3PubServices.LocatorCreateAsync( locatorCreateDTO.ContainerUri, locatorCreateDTO.StreamingPolicyName, locatorCreateDTO.ContentKeyPolicyName, locatorCreateDTO.TimeBasedFilter, locatorCreateDTO.OperationContext, locatorCreateDTO.GenerateAudioFilters).ConfigureAwait(false); result.ShouldBeOfType <ServiceOperationResultMediaServicesV3LocatorCreate>(); result.LocatorName.ShouldBeOfType <string>(); } }