< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Security.WSSecureConversationDec2005
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Security/WSSecureConversationDec2005.cs
Line coverage
68%
Covered lines: 26
Uncovered lines: 12
Coverable lines: 38
Total lines: 151
Line coverage: 68.4%
Branch coverage
60%
Covered branches: 6
Total branches: 10
Branch coverage: 60%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)83.33%6688.88%
PopulateTokenEntries(...)100%11100%
.ctor(...)100%11100%
CanReadGeneration(...)100%11100%
CanReadGeneration(...)0%220%
ReadGeneration(...)100%110%
ReadGeneration(...)100%110%
WriteGeneration(...)50%2228.57%
.ctor()100%11100%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Security/WSSecureConversationDec2005.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.Generic;
 6using System.Xml;
 7using CoreWCF.IdentityModel.Tokens;
 8using CoreWCF.Security.Tokens;
 9using TokenEntry = CoreWCF.Security.WSSecurityTokenSerializer.TokenEntry;
 10
 11namespace CoreWCF.Security
 12{
 13    internal class WSSecureConversationDec2005 : WSSecureConversation
 14    {
 15        private readonly SecurityStateEncoder _securityStateEncoder;
 16        private readonly IList<Type> _knownClaimTypes;
 17
 18        public WSSecureConversationDec2005(WSSecurityTokenSerializer tokenSerializer, SecurityStateEncoder securityState
 19            int maxKeyDerivationOffset, int maxKeyDerivationLabelLength, int maxKeyDerivationNonceLength)
 6720            : base(tokenSerializer, maxKeyDerivationOffset, maxKeyDerivationLabelLength, maxKeyDerivationNonceLength)
 21        {
 6722            if (securityStateEncoder != null)
 23            {
 1724                _securityStateEncoder = securityStateEncoder;
 25            }
 26            else
 27            {
 5028                _securityStateEncoder = new DataProtectionSecurityStateEncoder();
 29            }
 30
 6731            _knownClaimTypes = new List<Type>();
 6732            if (knownTypes != null)
 33            {
 34                // Clone this collection.
 3435                foreach (Type knownType in knownTypes)
 36                {
 037                    _knownClaimTypes.Add(knownType);
 38                }
 39            }
 6740        }
 41
 42        public override SecureConversationDictionary SerializerDictionary
 43        {
 9644            get { return DXD.SecureConversationDec2005Dictionary; }
 45        }
 46
 47        public override void PopulateTokenEntries(IList<TokenEntry> tokenEntryList)
 48        {
 6749            base.PopulateTokenEntries(tokenEntryList);
 6750            tokenEntryList.Add(new SecurityContextTokenEntryDec2005(this, _securityStateEncoder, _knownClaimTypes));
 6751        }
 52
 53        public override string DerivationAlgorithm
 54        {
 55            get
 56            {
 057                return SecurityAlgorithms.Psha1KeyDerivationDec2005;
 58            }
 59        }
 60
 61        private class SecurityContextTokenEntryDec2005 : SecurityContextTokenEntry
 62        {
 63            public SecurityContextTokenEntryDec2005(WSSecureConversationDec2005 parent, SecurityStateEncoder securitySta
 6764                : base(parent, securityStateEncoder, knownClaimTypes)
 65            {
 6766            }
 67
 68            protected override bool CanReadGeneration(XmlDictionaryReader reader)
 69            {
 870                return reader.IsStartElement(DXD.SecureConversationDec2005Dictionary.Instance, DXD.SecureConversationDec
 71            }
 72
 73            protected override bool CanReadGeneration(XmlElement element)
 74            {
 075                return (element.LocalName == DXD.SecureConversationDec2005Dictionary.Instance.Value &&
 076                    element.NamespaceURI == DXD.SecureConversationDec2005Dictionary.Namespace.Value);
 77            }
 78
 79            protected override UniqueId ReadGeneration(XmlDictionaryReader reader)
 80            {
 081                return reader.ReadElementContentAsUniqueId();
 82            }
 83
 84            protected override UniqueId ReadGeneration(XmlElement element)
 85            {
 086                return XmlHelper.ReadTextElementAsUniqueId(element);
 87            }
 88
 89            protected override void WriteGeneration(XmlDictionaryWriter writer, SecurityContextSecurityToken sct)
 90            {
 91                // serialize the generation
 492                if (sct.KeyGeneration != null)
 93                {
 094                    writer.WriteStartElement(DXD.SecureConversationDec2005Dictionary.Prefix.Value,
 095                        DXD.SecureConversationDec2005Dictionary.Instance,
 096                        DXD.SecureConversationDec2005Dictionary.Namespace);
 097                    XmlHelper.WriteStringAsUniqueId(writer, sct.KeyGeneration);
 098                    writer.WriteEndElement();
 99                }
 4100            }
 101        }
 102
 103        public class DriverDec2005 : Driver
 104        {
 67105            public DriverDec2005()
 106            {
 67107            }
 108
 109            protected override SecureConversationDictionary DriverDictionary
 110            {
 77111                get { return DXD.SecureConversationDec2005Dictionary; }
 112            }
 113
 114            public override XmlDictionaryString CloseAction
 115            {
 23116                get { return DXD.SecureConversationDec2005Dictionary.RequestSecurityContextClose; }
 117            }
 118
 119            public override XmlDictionaryString CloseResponseAction
 120            {
 8121                get { return DXD.SecureConversationDec2005Dictionary.RequestSecurityContextCloseResponse; }
 122            }
 123
 124            public override bool IsSessionSupported
 125            {
 5126                get { return true; }
 127            }
 128
 129            public override XmlDictionaryString RenewAction
 130            {
 14131                get { return DXD.SecureConversationDec2005Dictionary.RequestSecurityContextRenew; }
 132            }
 133
 134            public override XmlDictionaryString RenewResponseAction
 135            {
 4136                get { return DXD.SecureConversationDec2005Dictionary.RequestSecurityContextRenewResponse; }
 137            }
 138
 139            public override XmlDictionaryString Namespace
 140            {
 0141                get { return DXD.SecureConversationDec2005Dictionary.Namespace; }
 142            }
 143
 144            public override string TokenTypeUri
 145            {
 5146                get { return DXD.SecureConversationDec2005Dictionary.SecurityContextTokenType.Value; }
 147            }
 148        }
 149    }
 150}
 151