コード例 #1
0
            public async Task ThrowsNotFoundException_WhenSmpConfigurationDoesntExist()
            {
                SmpConfigurationDetail fixture = CreateFixture();

                // Act / Assert
                await Assert.ThrowsAsync <NotFoundException>(() => SmpConfigurationService.UpdateAsync(int.MaxValue, fixture));
            }
コード例 #2
0
        private void ValidateSmpConfiguration(SmpConfigurationDetail smpConfiguration)
        {
            EnsureArg.IsTrue(smpConfiguration.EncryptAlgorithmKeySize >= 0, nameof(smpConfiguration.EncryptAlgorithmKeySize));
            EnsureArg.IsNotNullOrWhiteSpace(smpConfiguration.PartyRole, nameof(smpConfiguration.PartyRole));
            EnsureArg.IsNotNullOrWhiteSpace(smpConfiguration.PartyType, nameof(smpConfiguration.PartyType));
            EnsureArg.IsNotNullOrWhiteSpace(smpConfiguration.ToPartyId, nameof(smpConfiguration.ToPartyId));
            EnsureArg.IsNotNullOrWhiteSpace(smpConfiguration.Url, nameof(smpConfiguration.Url));

            if (!String.IsNullOrEmpty(smpConfiguration.EncryptPublicKeyCertificate) &&
                String.IsNullOrEmpty(smpConfiguration.EncryptPublicKeyCertificateName))
            {
                throw new BusinessException(
                          "EncryptPublicKeyCertificateName needs to be provided when EncryptPublicKeyCertificate is not empty!");
            }
        }
コード例 #3
0
        /// <summary>
        ///     Create an e new <see cref="N:Eu.EDelivery.AS4.Fe.Model.SmpConfigurationDetail" />
        /// </summary>
        /// <param name="detail">The SMP configuration.</param>
        /// <returns></returns>
        public async Task <SmpConfigurationDetail> CreateAsync(SmpConfigurationDetail detail)
        {
            EnsureArg.IsNotNull(detail, nameof(detail));

            ValidateSmpConfiguration(detail);

            var configuration = _mapper.Map <Entities.SmpConfiguration>(detail);

            configuration.EncryptPublicKeyCertificate =
                DeserializePublicKeyCertificate(detail.EncryptPublicKeyCertificate);

            await _datastoreContext.SmpConfigurations.AddAsync(configuration);

            await _datastoreContext.SaveChangesAsync();

            return(ToDetail(configuration));
        }
コード例 #4
0
            public async Task ThrowsBusinessException_WhenKeyIsProvidedWithoutFileName()
            {
                // Arrange
                SmpConfigurationDetail dbSmpConfiguration = await SmpConfigurationService.CreateAsync(_smpConfiguration);

                Assert.NotNull(dbSmpConfiguration.Id);

                _smpConfiguration.EncryptPublicKeyCertificate = Convert.ToBase64String(new byte[] { 1, 2, 3 });

                SmpConfigurationDetail smpConfiguration = CreateFixture();

                smpConfiguration.EncryptPublicKeyCertificate = "not empty";

                // Act
                var exception = await Assert.ThrowsAsync <BusinessException>(() => SmpConfigurationService.UpdateAsync(dbSmpConfiguration.Id.Value, smpConfiguration));

                // Assert
                Assert.Equal("EncryptPublicKeyCertificateName needs to be provided when EncryptPublicKeyCertificate is not empty!", exception.Message);
            }
コード例 #5
0
        public SmpConfigurationServiceTest()
        {
            _smpConfiguration = new SmpConfigurationDetail
            {
                Action                          = "Action",
                EncryptAlgorithm                = "EncryptAlgorithm",
                EncryptAlgorithmKeySize         = 10,
                EncryptKeyDigestAlgorithm       = "EncryptKeyDigestAlgorithm",
                EncryptKeyMgfAlorithm           = "EncryptKeyMgfAlorithm",
                EncryptKeyTransportAlgorithm    = "EncryptKeyTransportAlgorithm",
                EncryptPublicKeyCertificateName = "AccessPointA.cer",
                EncryptPublicKeyCertificate     = Base64CertHeader + EncryptionCertificateContents,
                EncryptionEnabled               = true,
                FinalRecipient                  = "FinalRecipient",
                PartyRole                       = "PartyRole",
                PartyType                       = "PartyType",
                ServiceType                     = "ServiceType",
                ServiceValue                    = "ServiceValue",
                TlsEnabled                      = true,
                ToPartyId                       = "ToPartyId",
                Url = "Url"
            };

            Options = new DbContextOptionsBuilder <DatastoreContext>()
                      .UseInMemoryDatabase(Guid.NewGuid().ToString())
                      .Options;

            using (var store = new DatastoreContext(Options, StubConfig.Default))
            {
                store.Database.EnsureCreated();
            }

            CreateNewDbContext();

            MapperConfig = new MapperConfiguration(cfg => { cfg.AddProfile(new SmpConfigurationAutoMapperProfile()); });

            CreateNewSmpConfigurationService();
        }
コード例 #6
0
        /// <summary>
        ///     Update an existing <see cref="N:Eu.EDelivery.AS4.Fe.Model.SmpConfigurationDetail" /> by id
        /// </summary>
        /// <param name="id">The id of the SmpConfiguration</param>
        /// <param name="detail">SMP configuration data to be updated</param>
        /// <returns></returns>
        /// <exception cref="NotFoundException"></exception>
        public async Task UpdateAsync(long id, SmpConfigurationDetail detail)
        {
            EnsureArg.IsNotNull(detail, nameof(detail));

            EnsureArg.IsTrue(id > 0, nameof(id));
            ValidateSmpConfiguration(detail);

            Entities.SmpConfiguration existing =
                await _datastoreContext
                .SmpConfigurations
                .FirstOrDefaultAsync(c => c.Id == id);

            if (existing == null)
            {
                throw new NotFoundException($"No smp configuration with id {id} found.");
            }

            _mapper.Map(detail, existing);
            existing.EncryptPublicKeyCertificate =
                DeserializePublicKeyCertificate(detail.EncryptPublicKeyCertificate);

            _datastoreContext.Entry(existing).State = EntityState.Modified;
            await _datastoreContext.SaveChangesAsync();
        }
コード例 #7
0
        public async Task <IActionResult> Put(int id, [FromBody] SmpConfigurationDetail smpConfiguration)
        {
            await _smpConfiguration.UpdateAsync(id, smpConfiguration);

            return(new OkResult());
        }
コード例 #8
0
        public async Task <IActionResult> Post([FromBody] SmpConfigurationDetail smpConfiguration)
        {
            SmpConfigurationDetail configuration = await _smpConfiguration.CreateAsync(smpConfiguration);

            return(new OkObjectResult(configuration));
        }