Esempio n. 1
0
        public async Task Post_CheckDuplicate_ShouldReturn_Error_Duplicate_EndpointTargetUriSameAsRepoTargetUri()
        {
            var firstEndpoint = new DistributionEndpointBuilder()
                                .GenerateSampleData()
                                .WithNetworkAddress("http://ID1012")
                                .Build();

            var endpoints = new List <Entity>()
            {
                firstEndpoint
            };

            var resourceRequestDto = new ResourceBuilder()
                                     .GenerateSampleData()
                                     .WithDistributionEndpoint(endpoints)
                                     .BuildRequestDto();

            var resourceWriteResult = await CheckDuplicate(resourceRequestDto);

            // Assert
            _output.WriteLine(resourceWriteResult.Content);
            Assert.Equal(HttpStatusCode.OK, resourceWriteResult.Response.StatusCode);
            Assert.Equal(1, resourceWriteResult.ValidationResults.Count);

            Assert.All(resourceWriteResult.ValidationResults, property =>
            {
                Assert.Equal(Graph.Metadata.Constants.Resource.DistributionEndpoints.HasNetworkAddress, property.Path);
                Assert.Equal(ValidationResultSeverity.Info, property.ResultSeverity);
            });
            Assert.Contains(resourceWriteResult.ValidationResults, property => property.Node == firstEndpoint.Id);
        }
Esempio n. 2
0
        public async Task Post_CheckDuplicate_ShouldReturn_Error_PidUriAndBaseUriSameAsEndpointUri()
        {
            var permanentIdentifier = "https://pid.bayer.com/kos/nice-permanent-identifier";

            var endpoint = new DistributionEndpointBuilder()
                           .GenerateSampleData()
                           .WithPidUri(permanentIdentifier, string.Empty)
                           .Build();

            var resourceRequestDto = new ResourceBuilder()
                                     .GenerateSampleData()
                                     .WithPidUri(permanentIdentifier, string.Empty)
                                     .WithBaseUri(permanentIdentifier, string.Empty)
                                     .WithDistributionEndpoint(endpoint)
                                     .BuildRequestDto();

            var resourceWriteResult = await CheckDuplicate(resourceRequestDto);

            // Assert
            _output.WriteLine(resourceWriteResult.Content);
            Assert.Equal(HttpStatusCode.OK, resourceWriteResult.Response.StatusCode);
            Assert.Equal(3, resourceWriteResult.ValidationResults.Count);
            Assert.All(resourceWriteResult.ValidationResults, property => Assert.Equal(ValidationResultSeverity.Violation, property.ResultSeverity));

            var distinctIds = resourceWriteResult.ValidationResults.Select(t => t.Node).Distinct();

            Assert.Equal(2, distinctIds.Count());

            Assert.Contains(resourceWriteResult.ValidationResults,
                            t => t.Path == Graph.Metadata.Constants.EnterpriseCore.PidUri && t.Node == endpoint.Id);
        }
Esempio n. 3
0
        public async Task Post_CheckDuplicate_ShouldReturn_Error_Duplicate_EndpointPidUriSameAsRepoBaseUri()
        {
            var endpointPermanentIdentifier = "https://pid.bayer.com/URI5005";

            var firstEndpoint = new DistributionEndpointBuilder()
                                .GenerateSampleData()
                                .WithPidUri(endpointPermanentIdentifier, string.Empty)
                                .Build();

            var resourceRequestDto = new ResourceBuilder()
                                     .GenerateSampleData()
                                     .WithDistributionEndpoint(firstEndpoint)
                                     .BuildRequestDto();

            var resourceWriteResult = await CheckDuplicate(resourceRequestDto);

            // Assert
            _output.WriteLine(resourceWriteResult.Content);
            Assert.Equal(HttpStatusCode.OK, resourceWriteResult.Response.StatusCode);
            Assert.Equal(1, resourceWriteResult.ValidationResults.Count);
            Assert.All(resourceWriteResult.ValidationResults, property =>
            {
                Assert.Equal(firstEndpoint.Id, property.Node);
                Assert.Equal(Graph.Metadata.Constants.EnterpriseCore.PidUri, property.Path);
                Assert.Equal(ValidationResultSeverity.Violation, property.ResultSeverity);
            });
        }
        public async Task CreateDistributionEndpoint_Error_UnsupportedMediaType()
        {
            var         deJson         = new DistributionEndpointBuilder().GenerateSampleData().Build().ToString();
            HttpContent requestContent = new StringContent(deJson, Encoding.UTF8);
            var         result         = await _client.PostAsync(_apiPath, new StringContent(string.Empty));

            Assert.Equal(HttpStatusCode.UnsupportedMediaType, result.StatusCode);
        }
Esempio n. 5
0
        private Entity CreateEntity(string networkAdress)
        {
            Entity entity = new DistributionEndpointBuilder()
                            .GenerateSampleData()
                            .WithNetworkAddress(networkAdress)
                            .Build();

            return(entity);
        }
        public async Task GetHistoricResource_Successful()
        {
            // Arrange
            var id     = HttpUtility.UrlEncode("https://pid.bayer.com/kos/19050#80221099-a8bd-4ed9-9a9f-db33fba99e7d").ToString();
            var pidUri = HttpUtility.UrlEncode("https://pid.bayer.com/URI5010").ToString();
            var url    = $"{_apiPath}?pidUri={pidUri}&subject={id}";

            // Act
            var result = await _client.GetAsync(url);

            var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

            var historic = JsonConvert.DeserializeObject <ResourceV1>(content);

            // Assert
            result.EnsureSuccessStatusCode();
            Assert.NotNull(historic);

            Assert.Equal("https://pid.bayer.com/kos/19050#80221099-a8bd-4ed9-9a9f-db33fba99e7d", historic.Subject);
            Assert.Equal("https://pid.bayer.com/URI5010", historic.PidUri.ToString());

            var property = historic.Properties;

            Assert.True(property.ContainsLabel("ID5001"));
            Assert.True(property.ContainsResourceDefinition("ID5001"));
            Assert.True(property.ContainsLifecycleStatus("https://pid.bayer.com/kos/19050/released"));
            Assert.True(property.ContainsInformationClassification("https://pid.bayer.com/kos/19050/Open"));
            Assert.True(property.ContainsLastChangeUser("*****@*****.**"));
            Assert.True(property.ContainsAuthor("*****@*****.**"));
            Assert.True(property.ContainsIsPersonalData("false"));
            Assert.True(property.ContainsLicensedData("false"));
            Assert.True(property.ContainsVersion("1"));
            Assert.True(property.ContainsEntryLifecycleStatus("https://pid.bayer.com/kos/19050/historic"));
            Assert.True(property.ContainsHasConsumerGroup("https://pid.bayer.com/kos/19050#bf2f8eeb-fdb9-4ee1-ad88-e8932fa8753c"));
            Assert.Equal("2020-01-22T10:31:41Z", property[Graph.Metadata.Constants.Resource.DateModified].First().ToString("s") + "Z");
            Assert.Equal("2020-01-22T10:29:21Z", property[Graph.Metadata.Constants.Resource.DateCreated].First().ToString("s") + "Z");

            var expectedPidUriEntity   = new PidUriBuilder().WithId("https://pid.bayer.com/URI5010").WithType().Build();
            var expectedPidUriEntityV1 = new EntityV1(expectedPidUriEntity);

            EntityV1 actualPidUriEntityV1 = JsonConvert.DeserializeObject <EntityV1>(property[Graph.Metadata.Constants.EnterpriseCore.PidUri].FirstOrDefault().ToString());

            TestUtils.AssertSameEntityContent <EntityV1>(expectedPidUriEntityV1, actualPidUriEntityV1);

            var expectedDeEntity = new DistributionEndpointBuilder()
                                   .WithId("https://pid.bayer.com/kos/19050#f3a1757e-f7eb-409a-81f4-0d9f30a25342")
                                   .WithType(RegistrationService.Common.Enums.DistributionEndpoint.Type.BrowsableResource)
                                   .WithNetworkedResourceLabel("ID5011").WithNetworkAddress("http://ID5011")
                                   .WithDistributionEndpointLifecycleStatus(RegistrationService.Common.Enums.DistributionEndpoint.LifecycleStatus.Active)
                                   .WithPidUri("https://pid.bayer.com/URI5020", null).Build();
            var expectedDeEntityV1 = new EntityV1(expectedDeEntity);

            EntityV1 actualDeEntityV1 = JsonConvert.DeserializeObject <EntityV1>(property[Graph.Metadata.Constants.Resource.Distribution].FirstOrDefault().ToString());

            TestUtils.AssertSameEntityContent(expectedDeEntityV1, actualDeEntityV1);
        }
Esempio n. 7
0
        private Resource CreateResourceWithEndpointLifecycleStatus(LifecycleStatus endpointStatus)
        {
            var firstEndpoint = new DistributionEndpointBuilder()
                                .GenerateSampleData()
                                .WithDistributionEndpointLifecycleStatus(endpointStatus)
                                .Build();

            var resource = new ResourceBuilder()
                           .GenerateSampleData()
                           .WithMainDistributionEndpoint(firstEndpoint)
                           .Build();

            return(resource);
        }
        /// <summary>
        /// Route POST api/v3/consumerGroup
        /// </summary>
        public async Task CreateDistributionEndpoint_Success()
        {
            // Arrange
            var pidUriParam = "https://pid.bayer.com/URI1010";
            var queryParams = new Dictionary <string, string> {
                { "resourcePidUri", pidUriParam }, { "createAsMainDistributionEndpoint", "false" }
            };
            var requestUri = QueryHelpers.AddQueryString(_apiPath, queryParams);
            var request    = new HttpRequestMessage(HttpMethod.Post, requestUri);
            var content    = new DistributionEndpointBuilder().GenerateSampleData().Build().ToString();

            request.Content = new StringContent(content.ToString(), Encoding.UTF8, MediaTypeNames.Application.Json);

            // Act
            var result = await _client.SendAsync(request);

            _output.WriteLine(result.Content.ReadAsStringAsync().Result.ToString());
            // Assert
            result.EnsureSuccessStatusCode();
        }
Esempio n. 9
0
        public async Task Post_CheckDuplicate_ShouldReturn_Error_SameEndpointUris()
        {
            var endpointPermanentIdentifier = "https://pid.bayer.com/kos/nice-permanent-identifier";

            var firstEndpoint = new DistributionEndpointBuilder()
                                .GenerateSampleData()
                                .WithPidUri(endpointPermanentIdentifier, string.Empty)
                                .Build();

            var secondEndpointEndpoint = new DistributionEndpointBuilder()
                                         .GenerateSampleData()
                                         .WithNetworkAddress("https://www.second-network-adress.de")
                                         .WithPidUri(endpointPermanentIdentifier, string.Empty)
                                         .Build();

            var endpoints = new List <Entity>()
            {
                firstEndpoint, secondEndpointEndpoint
            };

            var resourceRequestDto = new ResourceBuilder()
                                     .GenerateSampleData()
                                     .WithDistributionEndpoint(endpoints)
                                     .BuildRequestDto();

            var resourceWriteResult = await CheckDuplicate(resourceRequestDto);

            // Assert
            _output.WriteLine(resourceWriteResult.Content);
            Assert.Equal(HttpStatusCode.OK, resourceWriteResult.Response.StatusCode);
            Assert.Equal(2, resourceWriteResult.ValidationResults.Count);
            Assert.All(resourceWriteResult.ValidationResults, property =>
            {
                Assert.Equal(Graph.Metadata.Constants.EnterpriseCore.PidUri, property.Path);
                Assert.Equal(ValidationResultSeverity.Violation, property.ResultSeverity);
            });
            Assert.Contains(resourceWriteResult.ValidationResults, property => property.Node == firstEndpoint.Id);
            Assert.Contains(resourceWriteResult.ValidationResults, property => property.Node == secondEndpointEndpoint.Id);
        }
Esempio n. 10
0
        public async Task Post_CheckDuplicate_ShouldReturn_Ok()
        {
            var permanentIdentifier         = "https://pid.bayer.com/kos/nice-permanent-identifier";
            var endpointPermanentIdentifier = "https://pid.bayer.com/kos/nice-endpoint-permanent-identifier";

            var endpoint = new DistributionEndpointBuilder()
                           .GenerateSampleData()
                           .WithPidUri(endpointPermanentIdentifier, string.Empty)
                           .Build();

            var resourceRequestDto = new ResourceBuilder()
                                     .GenerateSampleData()
                                     .WithPidUri(permanentIdentifier, string.Empty)
                                     .WithDistributionEndpoint(endpoint)
                                     .BuildRequestDto();

            var resourceWriteResult = await CheckDuplicate(resourceRequestDto);

            // Assert
            _output.WriteLine(resourceWriteResult.Content);
            Assert.Equal(HttpStatusCode.OK, resourceWriteResult.Response.StatusCode);
            Assert.Empty(resourceWriteResult.ValidationResults);
        }
        public void CreateHistoricTest_Successful()
        {
            Resource resourceAfterMethod = null;

            // Arrange
            _historicRepo.Setup(mock => mock.CreateHistoricResource(It.IsAny <Resource>(), It.IsAny <IList <MetadataProperty> >()))
            .Callback <Resource, IList <MetadataProperty> >((r, mp) => resourceAfterMethod = r);

            Entity   de     = new DistributionEndpointBuilder().GenerateSampleData().Build();
            Entity   mainDe = new DistributionEndpointBuilder().GenerateSampleData().WithNetworkAddress("www.google2").Build();
            Resource res    = new ResourceBuilder().GenerateSampleData()
                              .WithEntryLifecycleStatus(ColidEntryLifecycleStatus.Published)
                              .WithDistributionEndpoint(de)
                              .WithMainDistributionEndpoint(mainDe)
                              .Build();

            // Act
            _service.CreateHistoricResource(res, new List <MetadataProperty>());

            // Assert
            _historicRepo.Verify(mock => mock.CreateHistoricResource(It.IsAny <Resource>(), It.IsAny <IList <MetadataProperty> >()), Times.Once());

            res.Properties.TryGetValue(Graph.Metadata.Constants.Resource.HasEntryLifecycleStatus, out var entryLifecycleStatusValue);
            Assert.False(entryLifecycleStatusValue.Contains(ColidEntryLifecycleStatus.Published.GetDescription()));
            Assert.True(entryLifecycleStatusValue.Contains(ColidEntryLifecycleStatus.Historic.GetDescription()));

            // Assert that the resource was cleaned up by PrepareResourceForHistorization
            res.Properties.TryGetValue(Graph.Metadata.Constants.Resource.HasPidEntryDraft, out var pidEntryDraftValue);
            Assert.True(pidEntryDraftValue.IsNullOrEmpty <dynamic>());

            res.Properties.TryGetValue(Graph.Metadata.Constants.EnterpriseCore.PidUri, out var pidUriValue);
            Assert.Empty(pidUriValue.FirstOrDefault().Properties);

            AssertNestedProperties(res, Graph.Metadata.Constants.Resource.Distribution);
            AssertNestedProperties(res, Graph.Metadata.Constants.Resource.MainDistribution);
        }