public void ReturnsNullIfNameIdentityMissing()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            identity.RemoveClaim(identity.FindFirst(ClaimTypes.NameIdentifier));
            Assert.Null(service.GetVippsUserInfo(identity));
        }
        public void IsVippsIdentityForVippsIssuer()
        {
            var service = new VippsLoginService();

            var identity = new ClaimsIdentity();

            identity.AddClaim(new Claim(JwtClaimTypes.Issuer, VippsLoginService.VippsTestApi));
            Assert.True(service.IsVippsIdentity(identity));
        }
        public void NotIsVippsIdentityForUnknownIssuer()
        {
            var service = new VippsLoginService();

            var identity = new ClaimsIdentity();

            identity.AddClaim(new Claim(JwtClaimTypes.Issuer, "unknown"));
            Assert.False(service.IsVippsIdentity(identity));
        }
        public void IgnoresEmptyAddresses()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            identity.AddClaims(new[] { _emptyAddress });
            var userInfo = service.GetVippsUserInfo(identity);

            Assert.Equal(0, userInfo.Addresses.Count());
        }
        public void ParsesNorwegianBirthDate2()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            identity.AddClaim(_birthDateClaimNo2);

            var userInfo = service.GetVippsUserInfo(identity);

            Assert.Equal(new DateTime(2020, 6, 30), userInfo.BirthDate);
        }
        public void HasPreferredAddress()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            identity.AddClaims(new[] { _address1, _address2, _address3 });
            var userInfo = service.GetVippsUserInfo(identity);

            Assert.Equal(3, userInfo.Addresses.Count());
            Assert.Equal(1, userInfo.Addresses.Count(x => x.IsPreferred));
            Assert.Equal("Rådhusgata 28\nBar 3", userInfo.Addresses.First(x => x.IsPreferred).StreetAddress);
        }
        public void HasThreeAddresses()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            identity.AddClaims(new[] { _address1, _address2, _address3 });
            var userInfo = service.GetVippsUserInfo(identity);

            Assert.Equal(3, userInfo.Addresses.Count());
            Assert.Equal(1, userInfo.Addresses.Count(x => x.AddressType.Equals(VippsAddressType.Home)));
            Assert.Equal(1, userInfo.Addresses.Count(x => x.AddressType.Equals(VippsAddressType.Work)));
            Assert.Equal(1, userInfo.Addresses.Count(x => x.AddressType.Equals(VippsAddressType.Other)));
        }
        public void MapsClaims()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            var userInfo = service.GetVippsUserInfo(identity);

            Assert.Equal(_subClaim.Value.ToLowerInvariant(), userInfo.Sub.ToString().ToLowerInvariant());
            Assert.Equal(_emailClaim.Value, userInfo.Email);
            Assert.Equal(_familyNameClaim.Value, userInfo.FamilyName);
            Assert.Equal(_givenNameClaim.Value, userInfo.GivenName);
            Assert.Equal(_nameClaim.Value, userInfo.Name);
            Assert.Equal(_phoneNumberClaim.Value, userInfo.PhoneNumber);
        }
        public void PrefersJwtClaims()
        {
            var service  = new VippsLoginService();
            var identity = CreateIdentity();

            identity.AddClaims(new []
            {
                _subClaimJwt,
                _emailClaimJwt,
                _familyNameClaimJwt,
                _givenNameClaimJwt,
                _nameClaimJwt,
                _phoneNumberClaimJwt,
            });

            var userInfo = service.GetVippsUserInfo(identity);

            Assert.Equal(_subClaimJwt.Value, userInfo.Sub.ToString());
            Assert.Equal(_emailClaimJwt.Value, userInfo.Email);
            Assert.Equal(_familyNameClaimJwt.Value, userInfo.FamilyName);
            Assert.Equal(_givenNameClaimJwt.Value, userInfo.GivenName);
            Assert.Equal(_nameClaimJwt.Value, userInfo.Name);
            Assert.Equal(_phoneNumberClaimJwt.Value, userInfo.PhoneNumber);
        }
        public void ReturnsNullIfNotVippsIdentity()
        {
            var service = new VippsLoginService();

            Assert.Null(service.GetVippsUserInfo(new ClaimsIdentity()));
        }
        public void ValidateVippsIdentity()
        {
            var service = new VippsLoginService();

            Assert.True(service.IsVippsIdentity(CreateIdentity()));
        }
        public void NotIsVippsIdentityForNullIdentity()
        {
            var service = new VippsLoginService();

            Assert.False(service.IsVippsIdentity(null));
        }
        public void ThrowsArgumentNullException()
        {
            var service = new VippsLoginService();

            Assert.Throws <ArgumentNullException>(() => service.GetVippsUserInfo(null));
        }