< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.IdentityModel.Selectors.SecurityTokenAuthenticator
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Selectors/SecurityTokenAuthenticator.cs
Line coverage
45%
Covered lines: 9
Uncovered lines: 11
Coverable lines: 20
Total lines: 68
Line coverage: 45%
Branch coverage
40%
Covered branches: 4
Total branches: 10
Branch coverage: 40%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor()100%11100%
CanValidateToken(...)50%2266.66%
ValidateToken(...)0%220%
ValidateTokenAsync()50%6660%
ValidateTokenCore(...)100%110%
ValidateTokenCoreAsync(...)100%110%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Selectors/SecurityTokenAuthenticator.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using System.Collections.ObjectModel;
 6using System.Threading.Tasks;
 7using CoreWCF.IdentityModel.Policy;
 8using CoreWCF.IdentityModel.Tokens;
 9
 10namespace CoreWCF.IdentityModel.Selectors
 11{
 12    public abstract class SecurityTokenAuthenticator
 13    {
 17414        protected SecurityTokenAuthenticator() { }
 15
 16        public bool CanValidateToken(SecurityToken token)
 17        {
 36718            if (token == null)
 19            {
 020                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 21            }
 36722            return CanValidateTokenCore(token);
 23        }
 24
 25        public ReadOnlyCollection<IAuthorizationPolicy> ValidateToken(SecurityToken token)
 26        {
 27            // We don't call this internally, so we won't have problems with sync over async causing performance issues
 028            var validationResult = ValidateTokenAsync(token);
 029            return validationResult.IsCompleted
 030                ? validationResult.Result
 031                : validationResult.AsTask().GetAwaiter().GetResult();
 32        }
 33
 34        public async ValueTask<ReadOnlyCollection<IAuthorizationPolicy>> ValidateTokenAsync(SecurityToken token)
 35        {
 13836            if (token == null)
 37            {
 038                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 39            }
 13840            if (!CanValidateToken(token))
 41            {
 042                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenValidationException(SR.Format
 43            }
 44
 13845            ReadOnlyCollection<IAuthorizationPolicy> authorizationPolicies = await ValidateTokenCoreAsync(token);
 9546            if (authorizationPolicies == null)
 47            {
 048                string errorMsg = SR.Format(SR.CannotValidateSecurityTokenType, this, token.GetType());
 049                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenValidationException(errorMsg)
 50            }
 51
 9552            return authorizationPolicies;
 9553        }
 54
 55        protected abstract bool CanValidateTokenCore(SecurityToken token);
 56
 57        [Obsolete("Implementers should override ValidateTokenCoreAsync.")]
 058        protected virtual ReadOnlyCollection<IAuthorizationPolicy> ValidateTokenCore(SecurityToken token) => throw new N
 59
 60        protected virtual ValueTask<ReadOnlyCollection<IAuthorizationPolicy>> ValidateTokenCoreAsync(SecurityToken token
 61        {
 62            // Default to calling sync implementation to support existing derived types which haven't overridden this me
 63#pragma warning disable CS0618 // Type or member is obsolete
 064            return new ValueTask<ReadOnlyCollection<IAuthorizationPolicy>>(ValidateTokenCore(token));
 65#pragma warning restore CS0618 // Type or member is obsolete
 66        }
 67    }
 68}