public void ToEntity_WhenModelHasEncryptionCertificate_ExpectCertificateMappedCorrectly()
        {
            var certToStore = new X509Certificate2("Resources/idsrv3test.cer");
            var model       = new RelyingParty {
                EncryptionCertificate = certToStore
            };

            var entity = model.ToEntity();

            entity.EncryptionCertificate.Should().NotBeNull();

            var parsedCert = new X509Certificate2(entity.EncryptionCertificate);

            parsedCert.Should().NotBeNull();
            parsedCert.Thumbprint.Should().Be(certToStore.Thumbprint);
            parsedCert.SubjectName.Name.Should().Be(certToStore.SubjectName.Name);
            parsedCert.HasPrivateKey.Should().Be(certToStore.HasPrivateKey);
        }
        public void ToEntity_WhenPropertiesSet_ExpectValuesMapped()
        {
            var model = new RelyingParty
            {
                Realm                    = Guid.NewGuid().ToString(),
                TokenType                = Guid.NewGuid().ToString(),
                DigestAlgorithm          = Guid.NewGuid().ToString(),
                SignatureAlgorithm       = Guid.NewGuid().ToString(),
                SamlNameIdentifierFormat = Guid.NewGuid().ToString()
            };

            var entity = model.ToEntity();

            entity.Should().NotBeNull();
            entity.Realm.Should().Be(model.Realm);
            entity.TokenType.Should().Be(model.TokenType);
            entity.DigestAlgorithm.Should().Be(model.DigestAlgorithm);
            entity.SignatureAlgorithm.Should().Be(model.SignatureAlgorithm);
            entity.SamlNameIdentifierFormat.Should().Be(model.SamlNameIdentifierFormat);

            entity.EncryptionCertificate.Should().BeNull();
            entity.ClaimMapping.Should().BeEmpty();
        }
        public void ToEntity_WhenModelHasClaimsMappings_ExpectClaimsMappingsMappedCorrectly()
        {
            var mappings = new Dictionary <string, string>
            {
                { "sub", ClaimTypes.NameIdentifier },
                { "name", ClaimTypes.Name }
            };

            var model = new RelyingParty {
                ClaimMapping = mappings
            };

            var entity = model.ToEntity();

            entity.ClaimMapping.Should().NotBeNullOrEmpty();
            entity.ClaimMapping.Should().HaveSameCount(mappings);

            foreach (var mappedMapping in entity.ClaimMapping)
            {
                var matchingMapping = mappings.FirstOrDefault(x => x.Key == mappedMapping.OriginalClaimType);
                matchingMapping.Should().NotBeNull();
                mappedMapping.NewClaimType.Should().Be(matchingMapping.Value);
            }
        }