< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Configuration.MetadataServiceCollectionExtensions
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Configuration/MetadataServiceCollectionExtensions.cs
Line coverage
75%
Covered lines: 12
Uncovered lines: 4
Coverable lines: 16
Total lines: 51
Line coverage: 75%
Branch coverage
62%
Covered branches: 5
Total branches: 8
Branch coverage: 62.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
AddServiceModelMetadata(...)62.5%8875%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Configuration/MetadataServiceCollectionExtensions.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 CoreWCF.Channels;
 6using CoreWCF.Description;
 7using Microsoft.Extensions.DependencyInjection;
 8using Microsoft.Extensions.DependencyInjection.Extensions;
 9
 10namespace CoreWCF.Configuration
 11{
 12    public static class MetadataServiceCollectionExtensions
 13    {
 14        public static IServiceCollection AddServiceModelMetadata(this IServiceCollection services)
 15        {
 2416            if (services == null)
 17            {
 018                throw new ArgumentNullException(nameof(services));
 19            }
 20
 2421            int count = services.Count;
 2422            int existingTransportServiceBuilderIndex = -1;
 737223            for (int i = 0; i < count; i++)
 24            {
 366225                ServiceDescriptor service = services[i];
 366226                if (service.ServiceType == typeof(ITransportServiceBuilder))
 27                {
 028                    existingTransportServiceBuilderIndex = i;
 029                    break;
 30                }
 31            }
 32
 2433            var serviceDescriptor = ServiceDescriptor.Singleton<ITransportServiceBuilder, MetadataTransportServiceBuilde
 2434            if (existingTransportServiceBuilderIndex == -1)
 35            {
 36                // No existing ITransportServiceBuilder instances so can place at end
 2437                services.Add(serviceDescriptor);
 38            }
 39            else
 40            {
 41                // There's already an ITransportServiceBuidler and metadata needs to be inserted first
 42                // Otherwise an HTTP based binding could capture requests meant for metadata.
 043                services.Insert(existingTransportServiceBuilderIndex, serviceDescriptor);
 44            }
 45
 2446            services.AddSingleton<ServiceMetadataBehavior>();
 4847            services.AddSingleton<IServiceBehavior>(serviceProvider => serviceProvider.GetRequiredService<ServiceMetadat
 2448            return services;
 49        }
 50    }
 51}