< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.IdentityModel.Selectors.SecurityTokenSerializer
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Selectors/SecurityTokenSerializer.cs
Line coverage
49%
Covered lines: 30
Uncovered lines: 31
Coverable lines: 61
Total lines: 250
Line coverage: 49.1%
Branch coverage
38%
Covered branches: 14
Total branches: 36
Branch coverage: 38.8%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Selectors/SecurityTokenSerializer.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;
 8
 9namespace CoreWCF.IdentityModel.Selectors
 10{
 11    /// <summary>
 12    /// SecurityTokenSerializer is responsible for writing and reading SecurityKeyIdentifiers, SecurityKeyIdentifierClau
 13    /// In order to read SecurityTokens the SecurityTokenSerializer may need to resolve token references using the Secur
 14    /// The SecurityTokenSerializer is stateless
 15    /// Exceptions: XmlException, SecurityTokenException, NotSupportedException, InvalidOperationException, ArgumentExce
 16    /// </summary>
 17    public abstract class SecurityTokenSerializer
 18    {
 19        // public methods
 20        public bool CanReadToken(XmlReader reader)
 21        {
 022            if (reader == null)
 23            {
 024                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader));
 25            }
 026            return CanReadTokenCore(reader);
 27        }
 28
 29        public bool CanWriteToken(SecurityToken token)
 30        {
 031            if (token == null)
 32            {
 033                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 34            }
 035            return CanWriteTokenCore(token);
 36        }
 37
 38        public bool CanReadKeyIdentifier(XmlReader reader)
 39        {
 040            if (reader == null)
 41            {
 042                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader));
 43            }
 044            return CanReadKeyIdentifierCore(reader);
 45        }
 46
 47        public bool CanWriteKeyIdentifier(SecurityKeyIdentifier keyIdentifier)
 48        {
 049            if (keyIdentifier == null)
 50            {
 051                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(keyIdentifier));
 52            }
 053            return CanWriteKeyIdentifierCore(keyIdentifier);
 54        }
 55
 56        public bool CanReadKeyIdentifierClause(XmlReader reader)
 57        {
 1258            if (reader == null)
 59            {
 060                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader));
 61            }
 1262            return CanReadKeyIdentifierClauseCore(reader);
 63        }
 64
 65        public bool CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause keyIdentifierClause)
 66        {
 067            if (keyIdentifierClause == null)
 68            {
 069                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(keyIdentifierClause));
 70            }
 071            return CanWriteKeyIdentifierClauseCore(keyIdentifierClause);
 72        }
 73
 74
 75        public SecurityToken ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver)
 76        {
 10477            if (reader == null)
 78            {
 079                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader));
 80            }
 10481            return ReadTokenCore(reader, tokenResolver);
 82        }
 83
 84        public void WriteToken(XmlWriter writer, SecurityToken token)
 85        {
 2086            if (writer == null)
 87            {
 088                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(writer));
 89            }
 2090            if (token == null)
 91            {
 092                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(token));
 93            }
 2094            WriteTokenCore(writer, token);
 2095        }
 96
 97        public SecurityKeyIdentifier ReadKeyIdentifier(XmlReader reader)
 98        {
 4699            if (reader == null)
 100            {
 0101                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader));
 102            }
 46103            return ReadKeyIdentifierCore(reader);
 104        }
 105
 106        public void WriteKeyIdentifier(XmlWriter writer, SecurityKeyIdentifier keyIdentifier)
 107        {
 0108            if (writer == null)
 109            {
 0110                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(writer));
 111            }
 0112            if (keyIdentifier == null)
 113            {
 0114                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(keyIdentifier));
 115            }
 0116            WriteKeyIdentifierCore(writer, keyIdentifier);
 0117        }
 118
 119        public SecurityKeyIdentifierClause ReadKeyIdentifierClause(XmlReader reader)
 120        {
 78121            if (reader == null)
 122            {
 0123                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader));
 124            }
 78125            return ReadKeyIdentifierClauseCore(reader);
 126        }
 127
 128        public void WriteKeyIdentifierClause(XmlWriter writer, SecurityKeyIdentifierClause keyIdentifierClause)
 129        {
 40130            if (writer == null)
 131            {
 0132                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(writer));
 133            }
 40134            if (keyIdentifierClause == null)
 135            {
 0136                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(keyIdentifierClause));
 137            }
 40138            WriteKeyIdentifierClauseCore(writer, keyIdentifierClause);
 40139        }
 140
 141
 142        // protected abstract methods
 143        protected abstract bool CanReadTokenCore(XmlReader reader);
 144        protected abstract bool CanWriteTokenCore(SecurityToken token);
 145        protected abstract bool CanReadKeyIdentifierCore(XmlReader reader);
 146        protected abstract bool CanWriteKeyIdentifierCore(SecurityKeyIdentifier keyIdentifier);
 147        protected abstract bool CanReadKeyIdentifierClauseCore(XmlReader reader);
 148        protected abstract bool CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause keyIdentifierClause);
 149
 150        protected abstract SecurityToken ReadTokenCore(XmlReader reader, SecurityTokenResolver tokenResolver);
 151        protected abstract void WriteTokenCore(XmlWriter writer, SecurityToken token);
 152        protected abstract SecurityKeyIdentifier ReadKeyIdentifierCore(XmlReader reader);
 153        protected abstract void WriteKeyIdentifierCore(XmlWriter writer, SecurityKeyIdentifier keyIdentifier);
 154        protected abstract SecurityKeyIdentifierClause ReadKeyIdentifierClauseCore(XmlReader reader);
 155        protected abstract void WriteKeyIdentifierClauseCore(XmlWriter writer, SecurityKeyIdentifierClause keyIdentifier
 156
 157        internal abstract class KeyIdentifierClauseEntry
 158        {
 159            protected abstract XmlDictionaryString LocalName { get; }
 160            protected abstract XmlDictionaryString NamespaceUri { get; }
 161
 162            public virtual bool CanReadKeyIdentifierClauseCore(XmlDictionaryReader reader)
 163            {
 90164                return reader.IsStartElement(LocalName, NamespaceUri);
 165            }
 166
 167            public abstract SecurityKeyIdentifierClause ReadKeyIdentifierClauseCore(XmlDictionaryReader reader);
 168
 169            public abstract bool SupportsCore(SecurityKeyIdentifierClause keyIdentifierClause);
 170
 171            public abstract void WriteKeyIdentifierClauseCore(XmlDictionaryWriter writer, SecurityKeyIdentifierClause ke
 172        }
 173
 174        internal abstract class StrEntry
 175        {
 176            public abstract string GetTokenTypeUri();
 177            public abstract Type GetTokenType(SecurityKeyIdentifierClause clause);
 178            public abstract bool CanReadClause(XmlDictionaryReader reader, string tokenType);
 179            public abstract SecurityKeyIdentifierClause ReadClause(XmlDictionaryReader reader, byte[] derivationNonce, i
 180            public abstract bool SupportsCore(SecurityKeyIdentifierClause clause);
 181            public abstract void WriteContent(XmlDictionaryWriter writer, SecurityKeyIdentifierClause clause);
 182        }
 183
 184        internal abstract class SerializerEntries
 185        {
 134186            public virtual void PopulateTokenEntries(IList<TokenEntry> tokenEntries) { }
 400187            public virtual void PopulateKeyIdentifierEntries(IList<KeyIdentifierEntry> keyIdentifierEntries) { }
 132188            public virtual void PopulateKeyIdentifierClauseEntries(IList<KeyIdentifierClauseEntry> keyIdentifierClauseEn
 268189            public virtual void PopulateStrEntries(IList<StrEntry> strEntries) { }
 190        }
 191
 192        internal abstract class KeyIdentifierEntry
 193        {
 194            protected abstract XmlDictionaryString LocalName { get; }
 195            protected abstract XmlDictionaryString NamespaceUri { get; }
 196
 197            public virtual bool CanReadKeyIdentifierCore(XmlDictionaryReader reader)
 198            {
 0199                return reader.IsStartElement(LocalName, NamespaceUri);
 200            }
 201
 202            public abstract SecurityKeyIdentifier ReadKeyIdentifierCore(XmlDictionaryReader reader);
 203
 204            public abstract bool SupportsCore(SecurityKeyIdentifier keyIdentifier);
 205
 206            public abstract void WriteKeyIdentifierCore(XmlDictionaryWriter writer, SecurityKeyIdentifier keyIdentifier)
 207        }
 208
 209        internal abstract class TokenEntry
 210        {
 211            private Type[] _tokenTypes = null;
 212
 213            protected abstract XmlDictionaryString LocalName { get; }
 214            protected abstract XmlDictionaryString NamespaceUri { get; }
 0215            public Type TokenType { get { return GetTokenTypes()[0]; } }
 216            public abstract string TokenTypeUri { get; }
 217            protected abstract string ValueTypeUri { get; }
 218
 219            public bool SupportsCore(Type tokenType)
 220            {
 112221                Type[] tokenTypes = GetTokenTypes();
 416222                for (int i = 0; i < tokenTypes.Length; ++i)
 223                {
 112224                    if (tokenTypes[i].IsAssignableFrom(tokenType))
 225                    {
 16226                        return true;
 227                    }
 228                }
 96229                return false;
 230            }
 231
 232            protected abstract Type[] GetTokenTypesCore();
 233
 234            public Type[] GetTokenTypes()
 235            {
 131236                if (_tokenTypes == null)
 237                {
 67238                    _tokenTypes = GetTokenTypesCore();
 239                }
 240
 131241                return _tokenTypes;
 242            }
 243
 244            public virtual bool SupportsTokenTypeUri(string tokenTypeUri)
 245            {
 105246                return (TokenTypeUri == tokenTypeUri);
 247            }
 248        }
 249    }
 250}

Methods/Properties

CanReadToken(System.Xml.XmlReader)
CanWriteToken(CoreWCF.IdentityModel.Tokens.SecurityToken)
CanReadKeyIdentifier(System.Xml.XmlReader)
CanWriteKeyIdentifier(CoreWCF.IdentityModel.Tokens.SecurityKeyIdentifier)
CanReadKeyIdentifierClause(System.Xml.XmlReader)
CanWriteKeyIdentifierClause(CoreWCF.IdentityModel.SecurityKeyIdentifierClause)
ReadToken(System.Xml.XmlReader,CoreWCF.IdentityModel.Selectors.SecurityTokenResolver)
WriteToken(System.Xml.XmlWriter,CoreWCF.IdentityModel.Tokens.SecurityToken)
ReadKeyIdentifier(System.Xml.XmlReader)
WriteKeyIdentifier(System.Xml.XmlWriter,CoreWCF.IdentityModel.Tokens.SecurityKeyIdentifier)
ReadKeyIdentifierClause(System.Xml.XmlReader)
WriteKeyIdentifierClause(System.Xml.XmlWriter,CoreWCF.IdentityModel.SecurityKeyIdentifierClause)
CanReadKeyIdentifierClauseCore(System.Xml.XmlDictionaryReader)
PopulateTokenEntries(System.Collections.Generic.IList`1<CoreWCF.IdentityModel.Selectors.SecurityTokenSerializer/TokenEntry>)
PopulateKeyIdentifierEntries(System.Collections.Generic.IList`1<CoreWCF.IdentityModel.Selectors.SecurityTokenSerializer/KeyIdentifierEntry>)
PopulateKeyIdentifierClauseEntries(System.Collections.Generic.IList`1<CoreWCF.IdentityModel.Selectors.SecurityTokenSerializer/KeyIdentifierClauseEntry>)
PopulateStrEntries(System.Collections.Generic.IList`1<CoreWCF.IdentityModel.Selectors.SecurityTokenSerializer/StrEntry>)
CanReadKeyIdentifierCore(System.Xml.XmlDictionaryReader)
TokenType()
SupportsCore(System.Type)
GetTokenTypes()
SupportsTokenTypeUri(System.String)