public async Task Should_Add_PIN_As_swedish_personal_identity_number_Claim()
        {
            // Arrange
            var bankIdOptions = new BankIdOptions();
            var context       = new BankIdClaimsTransformationContext(bankIdOptions, "", "381123-9106", "", "", "");

            // Act
            var claims = await TransformClaims(context);

            // Assert
            AssertClaim(claims, "swedish_personal_identity_number", "381123-9106");
        }
        public async Task Should_Add_PIN_As_Sub_Claim()
        {
            // Arrange
            var bankIdOptions = new BankIdOptions();
            var context       = new BankIdClaimsTransformationContext(bankIdOptions, "", "381123-9106", "", "", "");

            // Act
            var claims = await TransformClaims(context);

            // Assert
            AssertClaim(claims, "sub", "193811239106");
        }
        internal BankIdClaimsTransformationContext(BankIdOptions bankIdOptions, string bankIdOrderRef, string personalIdentityNumber, string name, string givenName, string surname)
        {
            BankIdOptions = bankIdOptions;

            BankIdOrderRef = bankIdOrderRef;

            PersonalIdentityNumber = personalIdentityNumber;

            Name      = name;
            GivenName = givenName;
            Surname   = surname;
        }
        public async Task Should_Add_Names_As_Name_Claims()
        {
            // Arrange
            var bankIdOptions = new BankIdOptions();
            var context       = new BankIdClaimsTransformationContext(bankIdOptions, "", "381123-9106", "NAME", "GIVEN_NAME", "FAMILY_NAME");

            // Act
            var claims = await TransformClaims(context);

            // Assert
            AssertClaim(claims, "name", "NAME");
            AssertClaim(claims, "given_name", "GIVEN_NAME");
            AssertClaim(claims, "family_name", "FAMILY_NAME");
        }
        public async Task Should_Add_AuthenticationMethod_As_amr_Claim()
        {
            // Arrange
            var bankIdOptions = new BankIdOptions
            {
                IssueAuthenticationMethodClaim = true,
                AuthenticationMethodName       = "AUTH_METHOD"
            };

            var context = new BankIdClaimsTransformationContext(bankIdOptions, "", "381123-9106", "", "", "");

            // Act
            var claims = await TransformClaims(context);

            // Assert
            AssertClaim(claims, "amr", "AUTH_METHOD");
        }
        public async Task Should_Not_Should_Add_IdentityProvider_As_idp_Claim_When_Disabled()
        {
            // Arrange
            var bankIdOptions = new BankIdOptions
            {
                IssueIdentityProviderClaim = false,
                IdentityProviderName       = "IDENTITY_PROVIDER"
            };

            var context = new BankIdClaimsTransformationContext(bankIdOptions, "", "381123-9106", "", "", "");

            // Act
            var claims = await TransformClaims(context);

            // Assert
            AssertNoClaim(claims, "idp");
        }
        public async Task Should_Add_TokenExpiresIn_As_exp_Claim()
        {
            // Arrange
            var bankIdOptions = new BankIdOptions();

            bankIdOptions.TokenExpiresIn = TimeSpan.FromHours(2);

            var context         = new BankIdClaimsTransformationContext(bankIdOptions, "", "381123-9106", "", "", "");
            var systemClockMock = new Mock <ISystemClock>();
            var dateTime        = new DateTime(2022, 03, 11, 05, 30, 30, DateTimeKind.Utc);

            systemClockMock.Setup(x => x.UtcNow).Returns(dateTime);
            var claimsTransformer = new BankIdDefaultClaimsTransformer(systemClockMock.Object);

            // Act
            await claimsTransformer.TransformClaims(context);

            var claims = context.Claims;

            // Assert
            AssertClaim(claims, "exp", "1646983830");
        }