public void HasVerifiedPostiveTest_ForPositiveUser_ShouldBeTrue()
        {
            var target = new PositiveUser("idporten", "pseudo-id-1", new PositiveTestResult
            {
                PositiveTestDate = DateTime.Today.AddDays(-3).Some()
            }, new VerificationRecord[0], new Mock <IVerificationLimit>().Object);

            target.HasVerifiedPostiveTest.Should().BeTrue();
        }
        public void Constructor_CreatesUserWithIdBasedOnProviderId()
        {
            var target = new PositiveUser("idporten", "pseudo-id-1", new PositiveTestResult
            {
                PositiveTestDate = DateTime.Today.AddDays(-3).Some()
            }, new VerificationRecord[0], new Mock <IVerificationLimit>().Object);

            target.Id.Should().NotBeEmpty();
        }
        public void GetCustomClaims_ForNonPositiveUser_ShouldContainVerifiedPostiveRoleAndTestDateClaim()
        {
            var testdata = DateTime.Today.AddDays(-3);
            var target   = new PositiveUser("idporten", "pseudo-id-1", new PositiveTestResult
            {
                PositiveTestDate = testdata.Some()
            }, new VerificationRecord[0], new Mock <IVerificationLimit>().Object);

            target.GetCustomClaims().Should().Contain(c => c.Type == JwtClaimTypes.Role && c.Value == VerificationRoles.VerifiedPositive);
            target.GetCustomClaims().Should().Contain(c => c.Type == VerificationClaims.VerifiedPositiveTestDate && c.Value == testdata.ToString("yyyy-MM-dd"));
        }
            private async Task <User> CreatePositiveUser(PositiveTestResult testResult, Command request)
            {
                var userIdClaim = FindUserIdClaim(request.ExternalClaims).ValueOr(() =>
                                                                                  throw new Exception("Unable to determine user-ID from external claims from provider: " + request.Provider));

                var pseudonym       = _pseudonymFactory.Create(request.Provider + ":" + userIdClaim.Value);
                var existingRecords =
                    await _verificationRecordsRepository.RetrieveRecordsForPseudonym(pseudonym);

                var newRecord = new VerificationRecord(pseudonym);

                var verificationRecords = existingRecords.Concat(new[] { newRecord });

                _logger.LogInformation("Verified positive user created after ID-porten login and MSIS lookup");
                var postiveUser = new PositiveUser(request.Provider, userIdClaim.Value, testResult, verificationRecords, _verificationLimit);

                await _verificationRecordsRepository.SaveNewRecord(newRecord);

                return(postiveUser);
            }