< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Security.SecurityUtils
Assembly: CoreWCF.UnixDomainSocket
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.UnixDomainSocket/src/CoreWCF/Security/SecurityUtils.cs
Line coverage
38%
Covered lines: 8
Uncovered lines: 13
Coverable lines: 21
Total lines: 77
Line coverage: 38%
Branch coverage
0%
Covered branches: 0
Total branches: 8
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
CreateWindowsIdentity(...)0%880%
CreateWindowsIdentity()100%110%
IsDefault(...)100%110%
UnsafeGetDefaultNetworkCredentials()100%110%
AddPosixClaims(...)100%11100%
AddPosixGroupIdentityClaim(...)100%11100%
AddProcessIdClaim(...)100%11100%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.UnixDomainSocket/src/CoreWCF/Security/SecurityUtils.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.Globalization;
 5using System.Net;
 6using System.Security.Claims;
 7using System.Security.Principal;
 8using CoreWCF.Channels;
 9
 10namespace CoreWCF.Security
 11{
 12    internal static class SecurityUtils
 13    {
 14        internal static EndpointIdentity CreateWindowsIdentity(NetworkCredential serverCredential)
 15        {
 016            if (serverCredential != null && !NetworkCredentialHelper.IsDefault(serverCredential))
 17            {
 18                string upn;
 019                if (serverCredential.Domain != null && serverCredential.Domain.Length > 0)
 20                {
 021                    upn = serverCredential.UserName + "@" + serverCredential.Domain;
 22                }
 23                else
 24                {
 025                    upn = serverCredential.UserName;
 26                }
 027                return new UpnEndpointIdentity(upn);
 28            }
 29            else
 30            {
 031                return CreateWindowsIdentity();
 32            }
 33        }
 34
 35        internal static EndpointIdentity CreateWindowsIdentity()
 36        {
 037            EndpointIdentity identity = null;
 038            using (WindowsIdentity self = WindowsIdentity.GetCurrent())
 39            {
 040                identity = new SpnEndpointIdentity(string.Format(CultureInfo.InvariantCulture, "host/{0}", DnsCache.Mach
 041            }
 42
 043            return identity;
 44        }
 45
 46        private static class NetworkCredentialHelper
 47        {
 48            internal static bool IsDefault(NetworkCredential credential)
 49            {
 050                return UnsafeGetDefaultNetworkCredentials().Equals(credential);
 51            }
 52
 53            private static NetworkCredential UnsafeGetDefaultNetworkCredentials()
 54            {
 055                return CredentialCache.DefaultNetworkCredentials;
 56            }
 57        }
 58
 59        internal static void AddPosixClaims(ClaimsIdentity claimsIdentity, string groupName, uint groupId, uint processI
 60        {
 161            AddPosixGroupIdentityClaim(claimsIdentity, groupName, groupId);
 162            AddProcessIdClaim(claimsIdentity, processId);
 163        }
 64
 65        private static void AddPosixGroupIdentityClaim(ClaimsIdentity claimsIdentity, string groupName, uint groupId)
 66        {
 167            claimsIdentity.AddClaim(new Claim(CoreWCF.IdentityModel.Claims.ClaimTypes.PosixGroupId, groupId.ToString()))
 168            claimsIdentity.AddClaim(new Claim(CoreWCF.IdentityModel.Claims.ClaimTypes.PosixGroupName, groupName));
 169        }
 70
 71        internal static void AddProcessIdClaim(ClaimsIdentity claimsIdentity, uint processId)
 72        {
 173            claimsIdentity.AddClaim(new Claim(CoreWCF.IdentityModel.Claims.ClaimTypes.ProcessId, processId.ToString()));
 174        }
 75    }
 76}
 77