3
Good morning, you guys, I’m starting TDD in Visual Studio, and I’m having problems/difficulties passing Claims permissions on the request that is made 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 there is no configuration section defined. See the internal exception for details. Also, make sure that the Claimsauthorizationmanager element is set in the section
Below the code of 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 been through this or knows the solution to apply Claims in Testing?
And did you do what exception message suggested? " [...] possibly there is no configuration section set. See the internal exception for details. Also, make sure that the Claimsauthorizationmanager element is set in the section"
– Genos
Yes, even enter the "Claims" manually. var Claims = new List<Claim>() { new Claim(Claimtypes.Role, "auxiliary-cfop:query;view;add;! Edit;! delete") }; var Identity = new Claimsidentity(Claims, Claimtypes.Role); var principal = new Claimsprincipal(Identity); controller.User = new Claimsmain(main);
– Júlio C. Mendonça