Inquiridor
Realizando TestMethod com Claims

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á!
- Editado Warner Ribeiro Arantes quinta-feira, 27 de outubro de 2016 11:57
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
- Editado Warner Ribeiro Arantes segunda-feira, 31 de outubro de 2016 15:41 Melhoramento da resposta