< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Security.Tokens.SecurityTokenParameters
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Security/Tokens/SecurityTokenParameters.cs
Line coverage
39%
Covered lines: 25
Uncovered lines: 39
Coverable lines: 64
Total lines: 217
Line coverage: 39%
Branch coverage
22%
Covered branches: 9
Total branches: 40
Branch coverage: 22.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)50%2285.71%
.ctor()100%11100%
Clone()50%2275%
CreateKeyIdentifierClause(...)66.66%6662.5%
CreateGenericXmlTokenKeyIdentifierClause(...)0%10100%
MatchesKeyIdentifierClause(...)30%101033.33%
MatchesGenericXmlTokenKeyIdentifierClause(...)0%10100%
ToString()100%110%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Security/Tokens/SecurityTokenParameters.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
 4namespace CoreWCF.Security.Tokens
 5{
 6    using System;
 7    using System.Globalization;
 8    using System.Text;
 9    using CoreWCF;
 10    using CoreWCF.IdentityModel;
 11    using CoreWCF.IdentityModel.Selectors;
 12    using CoreWCF.IdentityModel.Tokens;
 13    using CoreWCF.Security;
 14
 15    public abstract class SecurityTokenParameters
 16    {
 17        internal const SecurityTokenInclusionMode defaultInclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
 18        internal const SecurityTokenReferenceStyle defaultReferenceStyle = SecurityTokenReferenceStyle.Internal;
 19        internal const bool defaultRequireDerivedKeys = true;
 20        private SecurityTokenInclusionMode _inclusionMode = defaultInclusionMode;
 21        private SecurityTokenReferenceStyle _referenceStyle = defaultReferenceStyle;
 22
 141723        protected SecurityTokenParameters(SecurityTokenParameters other)
 24        {
 141725            if (other == null)
 26            {
 027                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(other));
 28            }
 29
 141730            RequireDerivedKeys = other.RequireDerivedKeys;
 141731            _inclusionMode = other._inclusionMode;
 141732            _referenceStyle = other._referenceStyle;
 141733        }
 34
 39335        protected SecurityTokenParameters()
 36        {
 37            // empty
 39338        }
 39
 40        protected internal abstract bool HasAsymmetricKey { get; }
 41
 42        public SecurityTokenInclusionMode InclusionMode
 43        {
 44            get
 45            {
 1946                return _inclusionMode;
 47            }
 48            set
 49            {
 5550                SecurityTokenInclusionModeHelper.Validate(value);
 5551                _inclusionMode = value;
 5552            }
 53        }
 54
 55        public SecurityTokenReferenceStyle ReferenceStyle
 56        {
 57            get
 58            {
 059                return _referenceStyle;
 60            }
 61            set
 62            {
 063                TokenReferenceStyleHelper.Validate(value);
 064                _referenceStyle = value;
 065            }
 66        }
 67
 574968        public bool RequireDerivedKeys { get; set; } = defaultRequireDerivedKeys;
 69
 70        protected internal abstract bool SupportsClientAuthentication { get; }
 71        protected internal abstract bool SupportsServerAuthentication { get; }
 72        protected internal abstract bool SupportsClientWindowsIdentity { get; }
 73
 74        public SecurityTokenParameters Clone()
 75        {
 141776            SecurityTokenParameters result = CloneCore();
 77
 141778            if (result == null)
 79            {
 080                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.Format(SR.Sec
 81            }
 82
 141783            return result;
 84        }
 85
 86        protected abstract SecurityTokenParameters CloneCore();
 87
 88        protected internal abstract SecurityKeyIdentifierClause CreateKeyIdentifierClause(SecurityToken token, SecurityT
 89
 90        protected internal abstract void InitializeSecurityTokenRequirement(SecurityTokenRequirement requirement);
 91
 92        internal SecurityKeyIdentifierClause CreateKeyIdentifierClause<TExternalClause, TInternalClause>(SecurityToken t
 93            where TExternalClause : SecurityKeyIdentifierClause
 94            where TInternalClause : SecurityKeyIdentifierClause
 95        {
 3096            if (token == null)
 97            {
 098                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 99            }
 100
 101            SecurityKeyIdentifierClause result;
 102
 103            switch (referenceStyle)
 104            {
 105                default:
 0106                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(
 0107                        SR.Format(SR.TokenDoesNotSupportKeyIdentifierClauseCreation, token.GetType().Name, referenceStyl
 108                case SecurityTokenReferenceStyle.External:
 20109                    result = token.CreateKeyIdentifierClause<TExternalClause>();
 20110                    break;
 111                case SecurityTokenReferenceStyle.Internal:
 10112                    result = token.CreateKeyIdentifierClause<TInternalClause>();
 113                    break;
 114            }
 115
 30116            return result;
 117        }
 118
 119        internal SecurityKeyIdentifierClause CreateGenericXmlTokenKeyIdentifierClause(SecurityToken token, SecurityToken
 120        {
 0121            if (token is GenericXmlSecurityToken xmlToken)
 122            {
 0123                if (referenceStyle == SecurityTokenReferenceStyle.Internal && xmlToken.InternalTokenReference != null)
 124                {
 0125                    return xmlToken.InternalTokenReference;
 126                }
 127
 0128                if (referenceStyle == SecurityTokenReferenceStyle.External && xmlToken.ExternalTokenReference != null)
 129                {
 0130                    return xmlToken.ExternalTokenReference;
 131                }
 132            }
 133
 0134            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.Format(SR.UnableTo
 135        }
 136
 137        protected internal virtual bool MatchesKeyIdentifierClause(SecurityToken token, SecurityKeyIdentifierClause keyI
 138        {
 23139            if (token == null)
 140            {
 0141                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 142            }
 143
 23144            if (token is GenericXmlSecurityToken)
 145            {
 0146                return MatchesGenericXmlTokenKeyIdentifierClause(token, keyIdentifierClause, referenceStyle);
 147            }
 148
 149            bool result;
 150
 151            switch (referenceStyle)
 152            {
 153                default:
 0154                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(
 0155                        SR.Format(SR.TokenDoesNotSupportKeyIdentifierClauseCreation, token.GetType().Name, referenceStyl
 156                case SecurityTokenReferenceStyle.External:
 0157                    if (keyIdentifierClause is LocalIdKeyIdentifierClause)
 158                    {
 0159                        result = false;
 160                    }
 161                    else
 162                    {
 0163                        result = token.MatchesKeyIdentifierClause(keyIdentifierClause);
 164                    }
 165
 0166                    break;
 167                case SecurityTokenReferenceStyle.Internal:
 23168                    result = token.MatchesKeyIdentifierClause(keyIdentifierClause);
 169                    break;
 170            }
 171
 23172            return result;
 173        }
 174
 175        internal bool MatchesGenericXmlTokenKeyIdentifierClause(SecurityToken token, SecurityKeyIdentifierClause keyIden
 176        {
 0177            if (token == null)
 178            {
 0179                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 180            }
 181
 182            bool result;
 183
 184
 0185            if (!(token is GenericXmlSecurityToken xmlToken))
 186            {
 0187                result = false;
 188            }
 0189            else if (referenceStyle == SecurityTokenReferenceStyle.External && xmlToken.ExternalTokenReference != null)
 190            {
 0191                result = xmlToken.ExternalTokenReference.Matches(keyIdentifierClause);
 192            }
 0193            else if (referenceStyle == SecurityTokenReferenceStyle.Internal)
 194            {
 0195                result = xmlToken.MatchesKeyIdentifierClause(keyIdentifierClause);
 196            }
 197            else
 198            {
 0199                result = false;
 200            }
 201
 0202            return result;
 203        }
 204
 205        public override string ToString()
 206        {
 0207            StringBuilder sb = new StringBuilder();
 208
 0209            sb.AppendLine(string.Format(CultureInfo.InvariantCulture, "{0}:", GetType().ToString()));
 0210            sb.AppendLine(string.Format(CultureInfo.InvariantCulture, "InclusionMode: {0}", _inclusionMode.ToString()));
 0211            sb.AppendLine(string.Format(CultureInfo.InvariantCulture, "ReferenceStyle: {0}", _referenceStyle.ToString())
 0212            sb.Append(string.Format(CultureInfo.InvariantCulture, "RequireDerivedKeys: {0}", RequireDerivedKeys.ToString
 213
 0214            return sb.ToString();
 215        }
 216    }
 217}