All Downloads are FREE. Search and download functionalities are using the official Maven repository.

csharp.libraries.generichost.DependencyInjectionTests.mustache Maven / Gradle / Ivy

{{>partial_header}}
using System;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System.Collections.Generic;
using System.Security.Cryptography;
using {{packageName}}.{{clientPackage}};
using {{packageName}}.{{apiPackage}};
using {{packageName}}.Extensions;
using Xunit;

namespace {{packageName}}.Test.{{apiPackage}}
{
    /// 
    ///  Tests the dependency injection.
    /// 
    public class DependencyInjectionTest
    {
        private readonly IHost _hostUsingConfigureWithoutAClient = 
            Host.CreateDefaultBuilder(Array.Empty()).Configure{{apiName}}((context, services, options) =>
            {
                {{#hasApiKeyMethods}}ApiKeyToken apiKeyToken = new ApiKeyToken($"", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(apiKeyToken);
                {{/hasApiKeyMethods}}{{#hasHttpBearerMethods}}
                BearerToken bearerToken = new BearerToken($"", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(bearerToken);
                {{/hasHttpBearerMethods}}{{#hasHttpBasicMethods}}
                BasicToken basicToken = new BasicToken("", "", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(basicToken);
                {{/hasHttpBasicMethods}}{{#hasHttpSignatureMethods}}
                HttpSigningConfiguration config = new HttpSigningConfiguration("", "", null, new List(), HashAlgorithmName.SHA256, "", 0);
                HttpSignatureToken httpSignatureToken = new HttpSignatureToken(config, timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(httpSignatureToken);
                {{/hasHttpSignatureMethods}}{{#hasOAuthMethods}}
                OAuthToken oauthToken = new OAuthToken("token", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(oauthToken);{{/hasOAuthMethods}}
            })
            .Build();

        private readonly IHost _hostUsingConfigureWithAClient =
            Host.CreateDefaultBuilder(Array.Empty()).Configure{{apiName}}((context, services, options) =>
            {
                {{#hasApiKeyMethods}}ApiKeyToken apiKeyToken = new ApiKeyToken($"", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(apiKeyToken);
                {{/hasApiKeyMethods}}{{#hasHttpBearerMethods}}
                BearerToken bearerToken = new BearerToken($"", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(bearerToken);
                {{/hasHttpBearerMethods}}{{#hasHttpBasicMethods}}
                BasicToken basicToken = new BasicToken("", "", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(basicToken);
                {{/hasHttpBasicMethods}}{{#hasHttpSignatureMethods}}
                HttpSigningConfiguration config = new HttpSigningConfiguration("", "", null, new List(), HashAlgorithmName.SHA256, "", 0);
                HttpSignatureToken httpSignatureToken = new HttpSignatureToken(config, timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(httpSignatureToken);
                {{/hasHttpSignatureMethods}}{{#hasOAuthMethods}}
                OAuthToken oauthToken = new OAuthToken("token", timeout: TimeSpan.FromSeconds(1));
                options.AddTokens(oauthToken);{{/hasOAuthMethods}}
                options.Add{{apiName}}HttpClients(client => client.BaseAddress = new Uri(ClientUtils.BASE_ADDRESS));
            })
            .Build();

        private readonly IHost _hostUsingAddWithoutAClient =
            Host.CreateDefaultBuilder(Array.Empty()).ConfigureServices((host, services) =>
            {
                services.Add{{apiName}}(options =>
                {
                    {{#hasApiKeyMethods}}ApiKeyToken apiKeyToken = new ApiKeyToken($"", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(apiKeyToken);
                    {{/hasApiKeyMethods}}{{#hasHttpBearerMethods}}
                    BearerToken bearerToken = new BearerToken($"", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(bearerToken);
                    {{/hasHttpBearerMethods}}{{#hasHttpBasicMethods}}
                    BasicToken basicToken = new BasicToken("", "", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(basicToken);
                    {{/hasHttpBasicMethods}}{{#hasHttpSignatureMethods}}
                    HttpSigningConfiguration config = new HttpSigningConfiguration("", "", null, new List(), HashAlgorithmName.SHA256, "", 0);
                    HttpSignatureToken httpSignatureToken = new HttpSignatureToken(config, timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(httpSignatureToken);
                    {{/hasHttpSignatureMethods}}{{#hasOAuthMethods}}
                    OAuthToken oauthToken = new OAuthToken("token", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(oauthToken);{{/hasOAuthMethods}}
                });
            })
            .Build();

        private readonly IHost _hostUsingAddWithAClient =
            Host.CreateDefaultBuilder(Array.Empty()).ConfigureServices((host, services) =>
            {
                services.Add{{apiName}}(options =>
                {
                    {{#hasApiKeyMethods}}ApiKeyToken apiKeyToken = new ApiKeyToken($"", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(apiKeyToken);
                    {{/hasApiKeyMethods}}{{#hasHttpBearerMethods}}
                    BearerToken bearerToken = new BearerToken($"", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(bearerToken);
                    {{/hasHttpBearerMethods}}{{#hasHttpBasicMethods}}
                    BasicToken basicToken = new BasicToken("", "", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(basicToken);
                    {{/hasHttpBasicMethods}}{{#hasHttpSignatureMethods}}
                    HttpSigningConfiguration config = new HttpSigningConfiguration("", "", null, new List(), HashAlgorithmName.SHA256, "", 0);
                    HttpSignatureToken httpSignatureToken = new HttpSignatureToken(config, timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(httpSignatureToken);
                    {{/hasHttpSignatureMethods}}{{#hasOAuthMethods}}
                    OAuthToken oauthToken = new OAuthToken("token", timeout: TimeSpan.FromSeconds(1));
                    options.AddTokens(oauthToken);{{/hasOAuthMethods}}
                    options.Add{{apiName}}HttpClients(client => client.BaseAddress = new Uri(ClientUtils.BASE_ADDRESS));
                });
            })
            .Build();

        /// 
        /// Test dependency injection when using the configure method
        /// 
        [Fact]
        public void ConfigureApiWithAClientTest()
        {
            {{#apiInfo}}{{#apis}}var {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} = _hostUsingConfigureWithAClient.Services.GetRequiredService<{{interfacePrefix}}{{classname}}>();
            Assert.True({{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.HttpClient.BaseAddress != null);{{^-last}}
            
            {{/-last}}{{/apis}}{{/apiInfo}}
        }

        /// 
        /// Test dependency injection when using the configure method
        /// 
        [Fact]
        public void ConfigureApiWithoutAClientTest()
        {
            {{#apiInfo}}{{#apis}}var {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} = _hostUsingConfigureWithoutAClient.Services.GetRequiredService<{{interfacePrefix}}{{classname}}>();
            Assert.True({{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.HttpClient.BaseAddress != null);{{^-last}}
            
            {{/-last}}{{/apis}}{{/apiInfo}}
        }

        /// 
        /// Test dependency injection when using the add method
        /// 
        [Fact]
        public void AddApiWithAClientTest()
        {
            {{#apiInfo}}{{#apis}}var {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} = _hostUsingAddWithAClient.Services.GetRequiredService<{{interfacePrefix}}{{classname}}>();
            Assert.True({{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.HttpClient.BaseAddress != null);{{^-last}}
            
            {{/-last}}{{/apis}}{{/apiInfo}}
        }

        /// 
        /// Test dependency injection when using the add method
        /// 
        [Fact]
        public void AddApiWithoutAClientTest()
        {
            {{#apiInfo}}{{#apis}}var {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} = _hostUsingAddWithoutAClient.Services.GetRequiredService<{{interfacePrefix}}{{classname}}>();
            Assert.True({{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.HttpClient.BaseAddress != null);{{^-last}}
            
            {{/-last}}{{/apis}}{{/apiInfo}}
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy