< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.IdentityModel.Selectors.X509SecurityTokenProvider
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Selectors/X509SecurityTokenProvider.cs
Line coverage
26%
Covered lines: 7
Uncovered lines: 19
Coverable lines: 26
Total lines: 66
Line coverage: 26.9%
Branch coverage
12%
Covered branches: 1
Total branches: 8
Branch coverage: 12.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)50%2280%
.ctor(...)0%660%
GetTokenCore(...)100%110%
Dispose()100%11100%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Selectors/X509SecurityTokenProvider.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.Security.Cryptography.X509Certificates;
 6using CoreWCF.IdentityModel.Tokens;
 7using CoreWCF.Security;
 8
 9namespace CoreWCF.IdentityModel.Selectors
 10{
 11    internal class X509SecurityTokenProvider : SecurityTokenProvider, IDisposable
 12    {
 513        public X509SecurityTokenProvider(X509Certificate2 certificate)
 14        {
 515            if (certificate == null)
 16            {
 017                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(certificate));
 18            }
 19
 520            Certificate = new X509Certificate2(certificate);
 521        }
 22
 023        public X509SecurityTokenProvider(StoreLocation storeLocation, StoreName storeName, X509FindType findType, object
 24        {
 025            if (findValue == null)
 26            {
 027                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(findValue));
 28            }
 29
 030            X509Store store = new X509Store(storeName, storeLocation);
 031            X509Certificate2Collection certificates = null;
 32            try
 33            {
 034                store.Open(OpenFlags.ReadOnly);
 035                certificates = store.Certificates.Find(findType, findValue, false);
 036                if (certificates.Count < 1)
 37                {
 038                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.Format(SR.Ca
 39                }
 040                if (certificates.Count > 1)
 41                {
 042                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.Format(SR.Fo
 43                }
 44
 045                Certificate = new X509Certificate2(certificates[0]);
 046            }
 47            finally
 48            {
 049                SecurityUtils.ResetAllCertificates(certificates);
 050                store.Close();
 051            }
 052        }
 53
 1054        public X509Certificate2 Certificate { get; }
 55
 56        protected override SecurityToken GetTokenCore(TimeSpan timeout)
 57        {
 058            return new X509SecurityToken(Certificate);
 59        }
 60
 61        public void Dispose()
 62        {
 563            SecurityUtils.ResetCertificate(Certificate);
 564        }
 65    }
 66}