none
Realizando TestMethod com Claims RRS feed

  • Discussão Geral

  • Bom dia pessoal, Estou iniciando em TDD no Visual Studio com Microsoft Fakes, e estou com problemas/dificuldades para passar as permissões de Claims na requisição que é realizada ao servidor. Está ocorrendo o seguinte erro:

    Message:
    Test method MainTests.Areas.Auxiliary.Controllers.AX001_CFOP.CFOPSvcControllerUnitTest.AutocompleteByCfopTest threw exception: System.InvalidOperationException: ID7024: Houve uma tentativa de uso do atributo ClaimsPrincipalPermission e possivelmente não há seção de configuração <system.identityModel> definida. Consulte a exceção interna para obter detalhes. Além disso, certifique-se de que o elemento ClaimsAuthorizationManager esteja definido na seção <system.identityModel>. ---> System.InvalidOperationException: ID7027: Não foi possível carregar a configuração da identidade porque nenhuma seção de configuração <system.identityModel> foi encontrada.

        /// <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);
                        }
                    }
                }
            }
        }

    Alguém já passou por isto ou sabe a solução para aplicar os Claims nos Testes?

    Agradeço desde já!







    quinta-feira, 27 de outubro de 2016 11:41

Todas as Respostas

  • Você precisa definir os elementos de claimsAuthorizationManager e identityConfiguration no seu arquivo de configuração de projeto (App.config), você deve informar as tag system.identityModel e system.identityModel.services no 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>

    Você deve definir o caminho da class que valida a autorização e o nome do projeto da classe no claimsAuthorizationManager.

    Referências:

    https://forums.asp.net/p/2106526/6091223.aspx?Re+Performing+TestMethod+with+Claims



    segunda-feira, 31 de outubro de 2016 15:40