Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
            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);
            }