public void GetCustomClaims_ForPositiveBlockedUser_ShouldContainResultClaimsBlockedClaimsAndNotCanUploadClaims() { var testdata = DateTime.Today.AddDays(-3); var positiveTestResult = new PositiveTestResult { PositiveTestDate = testdata.Some() }; var verificationLimitMock = new Mock <IVerificationLimit>(); verificationLimitMock .Setup(x => x.HasReachedLimit(It.IsAny <IEnumerable <VerificationRecord> >())) .Returns(true); verificationLimitMock .Setup(x => x.Config) .Returns(new VerificationLimitConfig { MaxLimitDuration = TimeSpan.FromDays(2), MaxVerificationsAllowed = 42 }); var target = new VerificationResult(positiveTestResult, new VerificationRecord[0], verificationLimitMock.Object); var verificationClaims = target.GetVerificationClaims().ToList(); verificationClaims.Should().Contain(c => c.Type == DkSmittestopClaims.Covid19Status && c.Value == DkSmittestopClaims.StatusValues.Positive); verificationClaims.Should().Contain(c => c.Type == VerificationClaims.VerifiedPositiveTestDate && c.Value == testdata.ToString("yyyy-MM-dd")); verificationClaims.Should().Contain(c => c.Type == DkSmittestopClaims.Covid19Blocked && c.Value == "true"); verificationClaims.Should().Contain(c => c.Type == DkSmittestopClaims.Covid19LimitCount); verificationClaims.Should().Contain(c => c.Type == DkSmittestopClaims.Covid19LimitDuration); verificationClaims.Should().NotContain(c => c.Type == JwtClaimTypes.Role); }
private async Task <VerificationResult> CreatePositiveVerificationResult(PositiveTestResult testResult, string pseudonym, IEnumerable <VerificationRecord> existingRecords) { _logger.LogDebug("Creating verified positive result for identified user"); var verificationResult = new VerificationResult(testResult, existingRecords, _verificationLimit); await SaveNewRecordIfWithinVerificationLimit(pseudonym, verificationResult); return(verificationResult); }
private async Task <VerificationResult> CreatePositiveVerificationResult(PositiveTestResult testResult, string pseudonym, IEnumerable <VerificationRecord> existingRecords) { _logger.LogDebug("Creating verified positive result for identified user"); var verificationResult = new VerificationResult(testResult, existingRecords, _verificationLimit); if (!verificationResult.VerificationLimitExceeded) { // Save new record of non-limited verification await _verificationRecordsRepository.SaveNewRecord(new VerificationRecord(pseudonym)); } return(verificationResult); }
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); }