public void TestLocatorDeleteRetry()
        {
            var dataContextMock = new Mock <IMediaDataServiceContext>();

            int exceptionCount = 2;

            var locator = new LocatorData {
                Name = "testData", Type = (int)LocatorType.OnDemandOrigin
            };
            var fakeResponse = new TestMediaDataServiceResponse {
                AsyncState = locator
            };
            var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed);

            dataContextMock.Setup((ctxt) => ctxt.AttachTo("Locators", locator));
            dataContextMock.Setup((ctxt) => ctxt.DeleteObject(locator));

            dataContextMock.Setup((ctxt) => ctxt
                                  .SaveChangesAsync(locator))
            .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() =>
            {
                if (--exceptionCount > 0)
                {
                    throw fakeException;
                }
                return(fakeResponse);
            }));

            // Cannot mock DataServiceQuery. Throw artificial exception to mark pass through saving changes.
            string artificialExceptionMessage = "artificialException";

            dataContextMock.Setup((ctxt) => ctxt.CreateQuery <IAsset, AssetData>("Assets")).Throws(new Exception(artificialExceptionMessage));

            _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object);

            locator.SetMediaContext(_mediaContext);

            try
            {
                locator.Delete();
            }
            catch (Exception x)
            {
                Assert.AreEqual(artificialExceptionMessage, x.Message);
            }

            Assert.AreEqual(0, exceptionCount);
        }
        public void TestLocatorUpdateRetry()
        {
            var dataContextMock = new Mock <IMediaDataServiceContext>();

            int exceptionCount = 2;

            var locator = new LocatorData {
                Name = "testData", Type = (int)LocatorType.OnDemandOrigin
            };
            var fakeResponse = new TestMediaDataServiceResponse {
                AsyncState = locator
            };
            var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed);

            dataContextMock.Setup((ctxt) => ctxt.AttachTo("Locators", locator));
            dataContextMock.Setup((ctxt) => ctxt.UpdateObject(locator));

            dataContextMock.Setup((ctxt) => ctxt
                                  .SaveChangesAsync(locator))
            .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() =>
            {
                if (--exceptionCount > 0)
                {
                    throw fakeException;
                }
                return(fakeResponse);
            }));

            _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object);

            locator.SetMediaContext(_mediaContext);

            locator.Update(DateTime.Now);

            Assert.AreEqual(0, exceptionCount);
        }
        public void TestLocatorUpdateRetry()
        {
            var dataContextMock = new Mock<IMediaDataServiceContext>();

            int exceptionCount = 2;

            var locator = new LocatorData { Name = "testData", Type = (int)LocatorType.OnDemandOrigin };
            var fakeResponse = new TestMediaDataServiceResponse { AsyncState = locator };
            var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed);

            dataContextMock.Setup((ctxt) => ctxt.AttachTo("Locators", locator));
            dataContextMock.Setup((ctxt) => ctxt.UpdateObject(locator));

            dataContextMock.Setup((ctxt) => ctxt
                .SaveChangesAsync(locator))
                .Returns(() => Task.Factory.StartNew<IMediaDataServiceResponse>(() =>
                {
                    if (--exceptionCount > 0) throw fakeException;
                    return fakeResponse;
                }));

            _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object);

            locator.SetMediaContext(_mediaContext);

            locator.Update(DateTime.Now);

            Assert.AreEqual(0, exceptionCount);
        }
        public void TestLocatorDeleteRetry()
        {
            var dataContextMock = new Mock<IMediaDataServiceContext>();

            int exceptionCount = 2;

            var locator = new LocatorData { Name = "testData", Type = (int)LocatorType.OnDemandOrigin };
            var fakeResponse = new TestMediaDataServiceResponse { AsyncState = locator };
            var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed);

            dataContextMock.Setup((ctxt) => ctxt.AttachTo("Locators", locator));
            dataContextMock.Setup((ctxt) => ctxt.DeleteObject(locator));

            dataContextMock.Setup((ctxt) => ctxt
                .SaveChangesAsync(locator))
                .Returns(() => Task.Factory.StartNew<IMediaDataServiceResponse>(() =>
                {
                    if (--exceptionCount > 0) throw fakeException;
                    return fakeResponse;
                }));

            // Cannot mock DataServiceQuery. Throw artificial exception to mark pass through saving changes.
            string artificialExceptionMessage = "artificialException";
            dataContextMock.Setup((ctxt) => ctxt.CreateQuery<IAsset, AssetData>("Assets")).Throws(new Exception(artificialExceptionMessage));

            _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object);

            locator.SetMediaContext(_mediaContext);

            try
            {
                locator.Delete();
            }
            catch (Exception x)
            {
                Assert.AreEqual(artificialExceptionMessage, x.Message);
            }

            Assert.AreEqual(0, exceptionCount);
        }
Пример #5
0
        public void InitilizeStubData()
        {
            string assetId = "nb:Id:" + Guid.NewGuid();

            StorageAccountData storageAccountData = new StorageAccountData
            {
                IsDefault = true,
                Name      = "test storage",
            };

            _persistedChanges.Add(StorageAccountBaseCollection.EntitySet,
                                  new List <StorageAccountData>
            {
                storageAccountData
            });

            AssetData assetData = new AssetData()
            {
                Id           = assetId,
                AlternateId  = String.Empty,
                Created      = DateTime.UtcNow,
                LastModified = DateTime.UtcNow,
                Name         = "Mock Asset",
                Options      = (int)AssetCreationOptions.None,
            };

            assetData.SetMediaContext(_mediaContextBase);
            _persistedChanges.Add(AssetCollection.AssetSet,
                                  new List <AssetData>
            {
                assetData
            });
            string accessPolicyId = Guid.NewGuid().ToString();

            AccessPolicyData accessPolicyData = new AccessPolicyData()
            {
                Id                = accessPolicyId,
                Name              = "Mock AccessPolicy",
                Created           = DateTime.UtcNow.AddDays(-1),
                DurationInMinutes = 10000,
                LastModified      = DateTime.UtcNow,
                Permissions       = (int)AccessPermissions.Read
            };

            accessPolicyData.SetMediaContext(_mediaContextBase);
            _persistedChanges.Add(AccessPolicyBaseCollection.AccessPolicySet,
                                  new List <AccessPolicyData>
            {
                accessPolicyData
            });

            LocatorData locatorData = new LocatorData()
            {
                Id             = Guid.NewGuid().ToString(),
                AssetId        = assetId,
                Name           = "Mock locator",
                AccessPolicyId = accessPolicyId,
                BaseUri        = "http://"
            };

            locatorData.SetMediaContext(_mediaContextBase);
            _persistedChanges.Add(LocatorBaseCollection.LocatorSet,
                                  new List <LocatorData>
            {
                locatorData
            });

            _persistedChanges.Add(AssetFileCollection.FileSet,
                                  new List <AssetFileData>
            {
                new AssetFileData()
                {
                    Id            = Guid.NewGuid().ToString(),
                    Created       = DateTime.UtcNow,
                    Name          = "Mock File",
                    ParentAssetId = assetId
                }
            });

            _persistedChanges.Add(MediaProcessorBaseCollection.MediaProcessorSet,
                                  new List <MediaProcessorData>
            {
                new MediaProcessorData()
                {
                    Id      = Guid.NewGuid().ToString(),
                    Name    = "Mock Processor",
                    Version = "1",
                    Vendor  = "mock"
                }
            });

            _persistedChanges.Add(JobBaseCollection.JobSet,
                                  new List <JobData>
            {
                new JobData()
                {
                    Id   = Guid.NewGuid().ToString(),
                    Name = "Mock Job",
                }
            });
        }