Claims in TestMethod

3

Good morning everyone, I am starting in TDD in Visual Studio, and I am having problems / difficulties to pass the Claims permissions on the request that is performed to the server. The following error is occurring:

  

Message: Test method MainTestes.Areas.Auxiliary.Controllers.AX001_CFOP.SvcControllerUnitTest.AutocompleteByCfopTest threw exception: System.InvalidOperationException: ID7024: There was an attempt to use the ClaimsPrincipalPermission attribute and possibly no configuration section defined. See the inner exception for details. In addition, make sure that the ClaimsAuthorizationManager element is defined in the

Below the code for my test method

    /// <summary>
    ///     Realiza teste unitario no metodo AutocompleteByCFOP
    /// </summary>
    /// <remarks>
    ///     Foi utilizado microsoft fakes para simular comunicação com request e como banco de dados para isolamento do codigo.
    /// </remarks>
    [TestMethod]
    [Owner("Julio")]
    [TestCategory("UnitTest")]
    [TestCategory("MainTests")]
    public void AutocompleteByCfopTest()
    {
        // Cria objeto de retorno do metodo fake
        var listCfop = new List<TechShop.Model.AX001_CFOP>
        {
            _ax001Cfop
        };

        // Classe fake para o manager
        var manager = new StubAX001_CFOPManager()
        {
            FindExpressionOfFuncOfAX001_CFOPBoolean = s => listCfop
        };

        // Cria um metodo Fake do HttpRequestMessage para substituir o request
        using (var request = new StubHttpRequestMessage())
        {
            request.SetConfiguration(new HttpConfiguration());
            request.Method = HttpMethod.Get;
            request.Headers.Add("Authorization",
                                "Bearer 0cr1oRh2byktwIXIDQspQtCkh-kmwZ716NwcfVoeUJ4HJ8mJ2X8FIHcBBRMF3K6I8AZcUYXj7RuvWoQrJm3V6AxGF3OIpxWZMOSwxNdxUVCmwZWZF2hju-tgAM5");

            using (var controller = new CFOPSvcController { Request = request, Manager = manager })
            {
                using (var response = controller.AutocompleteByCFOP(_ax001Cfop.AX001_ID.ToString(), _ax001Cfop.AX001_Type, _ax001Cfop.AX001_Origin))
                {
                    foreach (var item in (List<CFOPFormVM>)((ObjectContent)response.Content).Value)
                    {
                        Assert.AreEqual(item.ID, _ax001Cfop.AX001_ID);
                        Assert.AreEqual(item.Description, _ax001Cfop.AX001_Description);
                    }
                }
            }
        }
    }

Has anyone experienced this or did you know the solution to apply the Claims to the Tests?

    
asked by anonymous 27.10.2016 / 13:13

1 answer

0

Hello Julio Mendonça

You need to set the claimsAuthorizationManager and identityConfiguration elements in your project configuration file (App.config), you should enter the system.identityModel and system.identityModel.services tags in configSections.

<configuration>
    <configSections>
        <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
    </configSections>
    <system.identityModel>
        <identityConfiguration>
            <claimsAuthorizationManager type="MainTests.Security.TestAuthorizationManager, MainTests" />
        </identityConfiguration>
    </system.identityModel>
</configuration>

You must define the path of the class that validates the authorization and the project name of the class in claimsAuthorizationManager.

References:

link

    
31.10.2016 / 11:29