// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Xml.Linq; namespace Microsoft.AspNetCore.Authentication { public class Transaction { public HttpRequestMessage Request { get; set; } public HttpResponseMessage Response { get; set; } public IList SetCookie { get; set; } public string ResponseText { get; set; } public XElement ResponseElement { get; set; } public string AuthenticationCookieValue { get { if (SetCookie != null && SetCookie.Count > 0) { var authCookie = SetCookie.SingleOrDefault(c => c.Contains(".AspNetCore." + TestExtensions.CookieAuthenticationScheme + "=")); if (authCookie != null) { return authCookie.Substring(0, authCookie.IndexOf(';')); } } return null; } } public string FindClaimValue(string claimType, string issuer = null) { var claim = ResponseElement.Elements("claim") .SingleOrDefault(elt => elt.Attribute("type").Value == claimType && (issuer == null || elt.Attribute("issuer").Value == issuer)); if (claim == null) { return null; } return claim.Attribute("value").Value; } public string FindTokenValue(string name) { var claim = ResponseElement.Elements("token") .SingleOrDefault(elt => elt.Attribute("name").Value == name); if (claim == null) { return null; } return claim.Attribute("value").Value; } } }