< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.IdentityModel.Claims.ClaimSet
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Claims/ClaimSet.cs
Line coverage
26%
Covered lines: 11
Uncovered lines: 31
Coverable lines: 42
Total lines: 127
Line coverage: 26.1%
Branch coverage
17%
Covered branches: 5
Total branches: 28
Branch coverage: 17.8%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
SupportedRight(...)75%44100%
ContainsClaim(...)0%10100%
ContainsClaim(...)0%880%
System.Collections.IEnumerable.GetEnumerator()100%110%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Claims/ClaimSet.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.Collections;
 5using System.Collections.Generic;
 6using System.Runtime.Serialization;
 7using System.Security.Principal;
 8
 9namespace CoreWCF.IdentityModel.Claims
 10{
 11    [DataContract(Namespace = XsiConstants.Namespace)]
 12    public abstract class ClaimSet : IEnumerable<Claim>
 13    {
 14        private static ClaimSet s_system;
 15        private static ClaimSet s_windows;
 16        private static ClaimSet s_anonymous;
 17
 18        public static ClaimSet System
 19        {
 20            get
 21            {
 8822                if (s_system == null)
 23                {
 324                    List<Claim> claims = new List<Claim>(2)
 325                    {
 326                        Claim.System,
 327                        new Claim(ClaimTypes.System, XsiConstants.System, Rights.PossessProperty)
 328                    };
 329                    s_system = new DefaultClaimSet(claims);
 30                }
 8831                return s_system;
 32            }
 33        }
 34
 35        public static ClaimSet Windows
 36        {
 37            get
 38            {
 039                if (s_windows == null)
 40                {
 041                    List<Claim> claims = new List<Claim>(2);
 042                    SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.NTAuthoritySid, null);
 043                    claims.Add(new Claim(ClaimTypes.Sid, sid, Rights.Identity));
 044                    claims.Add(Claim.CreateWindowsSidClaim(sid));
 045                    s_windows = new DefaultClaimSet(claims);
 46                }
 047                return s_windows;
 48            }
 49        }
 50
 51        internal static ClaimSet Anonymous
 52        {
 53            get
 54            {
 055                if (s_anonymous == null)
 56                {
 057                    s_anonymous = new DefaultClaimSet();
 58                }
 59
 060                return s_anonymous;
 61            }
 62        }
 63
 64        internal static bool SupportedRight(string right)
 65        {
 766            return right == null ||
 767                Rights.Identity.Equals(right) ||
 768                Rights.PossessProperty.Equals(right);
 69        }
 70
 71
 72        public virtual bool ContainsClaim(Claim claim, IEqualityComparer<Claim> comparer)
 73        {
 074            if (claim == null)
 75            {
 076                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(claim));
 77            }
 78
 079            if (comparer == null)
 80            {
 081                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(comparer));
 82            }
 83
 084            IEnumerable<Claim> claims = FindClaims(null, null);
 085            if (claims != null)
 86            {
 087                foreach (Claim matchingClaim in claims)
 88                {
 089                    if (comparer.Equals(claim, matchingClaim))
 90                    {
 091                        return true;
 92                    }
 93                }
 94            }
 095            return false;
 096        }
 97
 98        public virtual bool ContainsClaim(Claim claim)
 99        {
 0100            if (claim == null)
 101            {
 0102                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(claim));
 103            }
 104
 0105            IEnumerable<Claim> claims = FindClaims(claim.ClaimType, claim.Right);
 0106            if (claims != null)
 107            {
 0108                foreach (Claim matchingClaim in claims)
 109                {
 0110                    if (claim.Equals(matchingClaim))
 111                    {
 0112                        return true;
 113                    }
 114                }
 115            }
 0116            return false;
 0117        }
 118
 119        public abstract Claim this[int index] { get; }
 120        public abstract int Count { get; }
 121        public abstract ClaimSet Issuer { get; }
 122        // Note: null string represents any.
 123        public abstract IEnumerable<Claim> FindClaims(string claimType, string right);
 124        public abstract IEnumerator<Claim> GetEnumerator();
 0125        IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
 126    }
 127}