public async Task VerifyThatReadReturnsCorrectDTO() { this.dal = new WspDal(); var returned = (await this.dal.Open(this.credentials, this.cancelationTokenSource.Token)).ToList(); Assert.NotNull(returned); Assert.IsNotEmpty(returned); var sd = returned.First(); var attributes = new QueryAttributes(); var readResult = await dal.Read(sd, this.cancelationTokenSource.Token, attributes); // General assertions for any kind of Thing we read Assert.NotNull(readResult); Assert.IsTrue(readResult.Count() == 1); var sd1 = readResult.Single(); Assert.IsTrue(sd.ClassKind == sd1.ClassKind); Assert.IsTrue(sd.Iid == sd1.Iid); Assert.IsTrue(sd.Route == sd1.Route); // Specific assertions for Sitedirectory ClassKind var castedSd = sd as CDP4Common.DTO.SiteDirectory; var castedSd1 = sd as CDP4Common.DTO.SiteDirectory; Assert.NotNull(castedSd); Assert.NotNull(castedSd1); Assert.IsTrue(castedSd.Name == castedSd1.Name); Assert.IsTrue(castedSd.Domain.Count == castedSd1.Domain.Count); Assert.IsTrue(castedSd.SiteReferenceDataLibrary == castedSd1.SiteReferenceDataLibrary); Assert.IsTrue(castedSd.Model == castedSd1.Model); }
public async Task AssemblerSynchronizePerformanceTest() { this.dal = new WspDal(); var returned = await this.dal.Open(this.credentials, this.cancelationTokenSource.Token); var returnedlist = returned.ToList(); const int iterationNumber = 1000; var elapsedTimes = new List <long>(); for (int i = 0; i < iterationNumber; i++) { var assemble = new Assembler(this.uri); var stopwatch = Stopwatch.StartNew(); await assemble.Synchronize(returnedlist); elapsedTimes.Add(stopwatch.ElapsedMilliseconds); await assemble.Clear(); } var synchronizeMeanElapsedTime = elapsedTimes.Average(); var maxElapsedTime = elapsedTimes.Max(); var minElapsedTime = elapsedTimes.Min(); // 204.64 | 181 | 458 ms // refactor: 31.61 | 26 | 283 }
public async Task VerifyThatReadIterationWorks() { var dal = new WspDal { Session = this.session }; var credentials = new Credentials("admin", "pass", new Uri("https://cdp4services-public.cdp4.org")); var session = new Session(dal, credentials); var returned = await dal.Open(credentials, this.cancelationTokenSource.Token); await session.Assembler.Synchronize(returned); var siteDir = session.Assembler.RetrieveSiteDirectory(); var modelSetup = siteDir.Model.Single(x => x.ShortName == "LOFT"); var iterationSetup = modelSetup.IterationSetup.First(); var openCount = session.Assembler.Cache.Count; var model = new EngineeringModel(modelSetup.EngineeringModelIid, null, null); var iteration = new Iteration(iterationSetup.IterationIid, null, null); iteration.Container = model; var modelDtos = await dal.Read((CDP4Common.DTO.Iteration) iteration.ToDto(), this.cancelationTokenSource.Token); await session.Assembler.Synchronize(modelDtos); var readCount = session.Assembler.Cache.Count; Assert.IsTrue(readCount > openCount); }
public async Task Verify_that_person_can_be_Posted() { var wspdal = new WspDal(); var dtos = await wspdal.Open(this.credentials, this.cancelationTokenSource.Token); var siteDirectory = (CDP4Common.DTO.SiteDirectory)dtos.Single(x => x.ClassKind == ClassKind.SiteDirectory); var context = siteDirectory.Route; var operationContainer = new OperationContainer(context, siteDirectory.RevisionNumber); var person = new CDP4Common.DTO.Person(Guid.NewGuid(), 1); person.ShortName = Guid.NewGuid().ToString(); person.Surname = Guid.NewGuid().ToString(); person.GivenName = Guid.NewGuid().ToString(); person.AddContainer(ClassKind.SiteDirectory, siteDirectory.Iid); var operation1 = new Operation(null, person, OperationKind.Create); operationContainer.AddOperation(operation1); var siteDirectoryClone = siteDirectory.DeepClone <CDP4Common.DTO.SiteDirectory>(); siteDirectoryClone.Person.Add(person.Iid); var operation2 = new Operation(siteDirectory, siteDirectoryClone, OperationKind.Update); operationContainer.AddOperation(operation2); var result = await wspdal.Write(operationContainer); var resultPerson = (CDP4Common.DTO.Person)result.Single(x => x.Iid == person.Iid); Assert.NotNull(resultPerson); }
public async Task VerifyThatIfNotHttpOrHttpsExceptionIsThrown() { var uri = new Uri("file://somefile"); var invalidCredentials = new Credentials("John", "a password", uri); var dal = new WspDal(); Assert.That(async() => await dal.Open(invalidCredentials, new CancellationToken()), Throws.TypeOf <ArgumentException>()); }
public async Task VerifThatAClosedDalCannotBeClosedAgain() { var dal = new WspDal(); await dal.Open(this.credentials, new CancellationToken()); dal.Close(); Assert.Throws <InvalidOperationException>(() => dal.Close()); }
public async Task VerifyThatIfCredentialsAreNullOnReadExceptionIsThrown() { var organizationIid = Guid.Parse("44d1ff16-8195-47d0-abfa-163bbba9bf39"); var organizationDto = new CDP4Common.DTO.Organization(organizationIid, 0); organizationDto.AddContainer(ClassKind.SiteDirectory, Guid.Parse("eb77f3e1-a0f3-412d-8ed6-b8ce881c0145")); var dal = new WspDal(); Assert.That(async() => await dal.Read(organizationDto, new CancellationToken()), Throws.TypeOf <InvalidOperationException>()); }
public async Task Vefify_that_when_OperationContainer_is_empty_an_empty_is_returned() { var dal = new WspDal(); this.SetDalToBeOpen(dal); var context = $"/EngineeringModel/{Guid.NewGuid()}/iteration/{Guid.NewGuid()}"; var operationContainer = new OperationContainer(context); Assert.That(await dal.Write(operationContainer), Is.Empty); }
public async Task Verify_that_opens_returns_expected_result() { var uri = new Uri("http://ocdt-dev.rheagroup.com"); this.credentials = new Credentials("admin", "pass", uri); var wspdal = new WspDal(); var result = await wspdal.Open(this.credentials, new CancellationToken()); Assert.NotNull(result); }
public async Task Verify_That_Session_Open_Populates_cache() { var dal = new WspDal(); this.session = new Session(dal, this.credentials); Assert.AreEqual(0, this.session.Assembler.Cache.Count); await session.Open(); Assert.AreNotEqual(0, this.session.Assembler.Cache.Count); }
public void SetUp() { this.cancelationTokenSource = new CancellationTokenSource(); this.credentials = new Credentials("admin", "pass", this.uri); this.dal = new WspDal(); this.session = new Session(this.dal, this.credentials); // Add SiteDirectory to cache this.siteDirectory = new SiteDirectory(Guid.Parse("f13de6f8-b03a-46e7-a492-53b2f260f294"), this.session.Assembler.Cache, this.uri); var lazySiteDirectory = new Lazy <Thing>(() => this.siteDirectory); lazySiteDirectory.Value.Cache.TryAdd(new CacheKey(lazySiteDirectory.Value.Iid, null), lazySiteDirectory); this.PopulateSiteDirectory(); }
public async Task VerifyThatOpenReturnsDTOs() { var uriBuilder = new UriBuilder(this.credentials.Uri) { Path = "/Data/Restore" }; var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes($"{credentials.UserName}:{credentials.Password}"))); await httpClient.PostAsync(uriBuilder.Uri, null); var dal = new WspDal(); var result = await dal.Open(this.credentials, new CancellationToken()); var amountOfDtos = result.ToList().Count; Assert.AreEqual(60, amountOfDtos); }
public void VerifyThatWritingMultipleOperationContainersIsNotSupported() { var dal = new WspDal(); this.SetDalToBeOpen(dal); var contextOne = $"/EngineeringModel/{Guid.NewGuid()}/iteration/{Guid.NewGuid()}"; var contextTwo = $"/EngineeringModel/{Guid.NewGuid()}/iteration/{Guid.NewGuid()}"; var operationContainerOne = new OperationContainer(contextOne); var operationContainerTwo = new OperationContainer(contextTwo); var operationContainers = new List <OperationContainer> { operationContainerOne, operationContainerTwo }; Assert.Throws <NotSupportedException>(() => dal.Write(operationContainers)); Assert.Throws <NotSupportedException>(() => dal.Write(operationContainers)); }
public async Task IntegrationTest() { this.dal = new WspDal(); var returned = await this.dal.Open(this.credentials, this.cancelationTokenSource.Token); var assembler = new Assembler(this.credentials.Uri); await assembler.Synchronize(returned); var attributes = new DalQueryAttributes { RevisionNumber = 0 }; var topcontainers = assembler.Cache.Select(x => x.Value).Where(x => x.Value is CDP4Common.CommonData.TopContainer).ToList(); foreach (var container in topcontainers) { returned = await this.dal.Read(container.Value.ToDto(), this.cancelationTokenSource.Token, attributes); await assembler.Synchronize(returned); } }
public async Task Verify_that_person_can_be_Posted() { var uri = new Uri("http://ocdt-dev.rheagroup.com"); var credentials = new Credentials("admin", "pass", uri); var wspdal = new WspDal(); var dtos = await wspdal.Open(credentials, this.cancelationTokenSource.Token); var siteDirectory = (CDP4Common.DTO.SiteDirectory)dtos.Single(x => x.ClassKind == ClassKind.SiteDirectory); var context = siteDirectory.Route; var operationContainer = new OperationContainer(context, siteDirectory.RevisionNumber); var person = new CDP4Common.DTO.Person(Guid.NewGuid(), 1); person.ShortName = Guid.NewGuid().ToString(); person.Surname = Guid.NewGuid().ToString(); person.GivenName = Guid.NewGuid().ToString(); person.AddContainer(ClassKind.SiteDirectory, Guid.Parse("eb77f3e1-a0f3-412d-8ed6-b8ce881c0145")); var operation1 = new Operation(null, person, OperationKind.Create); operationContainer.AddOperation(operation1); var siteDirectoryClone = siteDirectory.DeepClone <CDP4Common.DTO.SiteDirectory>(); siteDirectoryClone.Person.Add(person.Iid); var operation2 = new Operation(siteDirectory, siteDirectoryClone, OperationKind.Update); operationContainer.AddOperation(operation2); var result = await wspdal.Write(operationContainer); var resultPerson = (CDP4Common.DTO.Person)result.Single(x => x.Iid == person.Iid); Assert.NotNull(resultPerson); }
/// <summary> /// Set the credentials property so DAL appears to be open /// </summary> /// <param name="dal"> /// The <see cref="WspDal"/> that is to be opened /// </param> private void SetDalToBeOpen(WspDal dal) { var credentialsProperty = typeof(WspDal).GetProperty("Credentials"); credentialsProperty.SetValue(dal, this.credentials); }
public void TearDown() { CDPMessageBus.Current.ClearSubscriptions(); this.credentials = null; this.dal = null; }
public void VerifyThatCdpServicesDalCanBeConstructed() { var dal = new WspDal(); Assert.IsNotNull(dal); }
public async Task VerifyThatFileCanBeUploaded() { this.dal = new WspDal { Session = this.session }; var filename = @"TestData\testfile.pdf"; var directory = TestContext.CurrentContext.TestDirectory; var filepath = Path.Combine(directory, filename); var files = new List <string> { filepath }; var contentHash = "F73747371CFD9473C19A0A7F99BCAB008474C4CA"; var uri = new Uri("https://cdp4services-test.cdp4.org"); this.credentials = new Credentials("admin", "pass", uri); var returned = await this.dal.Open(this.credentials, this.cancelationTokenSource.Token); var engineeringModeliid = Guid.Parse("9ec982e4-ef72-4953-aa85-b158a95d8d56"); var iterationiid = Guid.Parse("e163c5ad-f32b-4387-b805-f4b34600bc2c"); var domainFileStoreIid = Guid.Parse("da7dddaa-02aa-4897-9935-e8d66c811a96"); var fileIid = Guid.NewGuid(); var fileRevisionIid = Guid.NewGuid(); var domainOfExpertiseIid = Guid.Parse("0e92edde-fdff-41db-9b1d-f2e484f12535"); var fileTypeIid = Guid.Parse("b16894e4-acb5-4e81-a118-16c00eb86d8f"); //PDF var participantIid = Guid.Parse("284334dd-e8e5-42d6-bc8a-715c507a7f02"); var originalDomainFileStore = new CDP4Common.DTO.DomainFileStore(domainFileStoreIid, 0); originalDomainFileStore.AddContainer(ClassKind.Iteration, iterationiid); originalDomainFileStore.AddContainer(ClassKind.EngineeringModel, engineeringModeliid); var modifiedDomainFileStore = new CDP4Common.DTO.DomainFileStore(domainFileStoreIid, 0); modifiedDomainFileStore.File.Add(fileIid); modifiedDomainFileStore.AddContainer(ClassKind.Iteration, iterationiid); modifiedDomainFileStore.AddContainer(ClassKind.EngineeringModel, engineeringModeliid); var file = new CDP4Common.DTO.File(fileIid, 0) { Owner = domainOfExpertiseIid }; file.FileRevision.Add(fileRevisionIid); file.AddContainer(ClassKind.DomainFileStore, domainFileStoreIid); file.AddContainer(ClassKind.Iteration, iterationiid); file.AddContainer(ClassKind.EngineeringModel, engineeringModeliid); var fileRevision = new CDP4Common.DTO.FileRevision(fileRevisionIid, 0); fileRevision.Name = "testfile"; fileRevision.ContentHash = contentHash; fileRevision.FileType.Add(new OrderedItem() { K = 1, V = fileTypeIid }); fileRevision.Creator = participantIid; fileRevision.AddContainer(ClassKind.File, fileIid); fileRevision.AddContainer(ClassKind.DomainFileStore, domainFileStoreIid); fileRevision.AddContainer(ClassKind.Iteration, iterationiid); fileRevision.AddContainer(ClassKind.EngineeringModel, engineeringModeliid); var context = $"/EngineeringModel/{engineeringModeliid}/iteration/{iterationiid}"; var operationContainer = new OperationContainer(context); var updateCommonFileStoreOperation = new Operation(originalDomainFileStore, modifiedDomainFileStore, OperationKind.Update); operationContainer.AddOperation(updateCommonFileStoreOperation); var createFileOperation = new Operation(null, file, OperationKind.Create); operationContainer.AddOperation(createFileOperation); var createFileRevisionOperation = new Operation(null, fileRevision, OperationKind.Create); operationContainer.AddOperation(createFileRevisionOperation); Assert.DoesNotThrowAsync(async() => await dal.Write(operationContainer, files)); }
public async Task VerifyThatIfCredentialsAreNullExceptionIsThrown() { var dal = new WspDal(); Assert.That(async() => await dal.Open(null, new CancellationToken()), Throws.TypeOf <ArgumentNullException>()); }