Skip to content
This repository has been archived by the owner on Jan 24, 2025. It is now read-only.

Remove csquery package refrence and unused code #213

Merged
merged 2 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@

<PackageReference Update="Duende.IdentityServer" Version="$(IdentityServerVersion)" />

<PackageReference Update="CsQuery.NETStandard" Version="1.3.6.1" />
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Update="xunit" Version="2.9.2" />
<PackageReference Update="xunit.runner.visualstudio" Version="2.8.2">
Expand All @@ -57,4 +56,4 @@
<AssemblyVersion>$(MinVerMajor).$(MinVerMinor).$(MinVerPatch).0</AssemblyVersion>
</PropertyGroup>
</Target>
</Project>
</Project>
1 change: 0 additions & 1 deletion test/Duende.Bff.Tests/Duende.Bff.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="CsQuery.NETStandard" />

<PackageReference Include="Duende.IdentityServer" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
Expand Down
198 changes: 1 addition & 197 deletions test/Duende.Bff.Tests/TestFramework/TestBrowserClient.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
// Copyright (c) Duende Software. All rights reserved.
// See LICENSE in the project root for license information.

using CsQuery;
using FluentAssertions;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Http;
Expand Down Expand Up @@ -67,209 +63,17 @@ private TestBrowserClient(CookieHandler handler)
_handler = handler;
}

public Cookie GetCookie(string name)
{
return GetCookie(_handler.CurrentUri.ToString(), name);
}
public Cookie GetCookie(string uri, string name)
{
return _handler.CookieContainer.GetCookies(new Uri(uri)).Cast<Cookie>().Where(x => x.Name == name).FirstOrDefault();
}

public void RemoveCookie(string name)
{
RemoveCookie(CurrentUri.ToString(), name);
}
public void RemoveCookie(string uri, string name)
{
var cookie = CookieContainer.GetCookies(new Uri(uri)).Cast<Cookie>().Where(x => x.Name == name).FirstOrDefault();
var cookie = CookieContainer.GetCookies(new Uri(uri)).FirstOrDefault(x => x.Name == name);
if (cookie != null)
{
cookie.Expired = true;
}
}

public async Task FollowRedirectAsync()
{
LastResponse.StatusCode.Should().Be(HttpStatusCode.Redirect);
var location = LastResponse.Headers.Location.ToString();
await GetAsync(location);
}

public Task<HttpResponseMessage> PostFormAsync(HtmlForm form)
{
return PostAsync(form.Action, new FormUrlEncodedContent(form.Inputs));
}

public Task<HtmlForm> ReadFormAsync(string selector = null)
{
return ReadFormAsync(LastResponse, selector);
}
public async Task<HtmlForm> ReadFormAsync(HttpResponseMessage response, string selector = null)
{
response.StatusCode.Should().Be(HttpStatusCode.OK);

var htmlForm = new HtmlForm
{

};

var html = await response.Content.ReadAsStringAsync();

var dom = new CQ(html);
var form = dom.Find(selector ?? "form");
form.Length.Should().Be(1);

var postUrl = form.Attr("action");
if (!postUrl.StartsWith("http", StringComparison.OrdinalIgnoreCase))
{
if (postUrl.StartsWith("/"))
{
postUrl = CurrentUri.Scheme + "://" + CurrentUri.Authority + postUrl;
}
else
{
postUrl = CurrentUri + postUrl;
}
}
htmlForm.Action = postUrl;


var data = new Dictionary<string, string>();

var inputs = form.Find("input");
foreach (var input in inputs)
{
var name = input.GetAttribute("name");
var value = input.GetAttribute("value");

if (!data.ContainsKey(name))
{
data.Add(name, value);
}
else
{
data[name] = value;
}
}
htmlForm.Inputs = data;

return htmlForm;
}


public Task<string> ReadElementTextAsync(string selector)
{
return ReadElementTextAsync(LastResponse, selector);
}
public async Task<string> ReadElementTextAsync(HttpResponseMessage response, string selector)
{
var html = await response.Content.ReadAsStringAsync();

var dom = new CQ(html);
var element = dom.Find(selector);
return element.Text();
}

public Task<string> ReadElementAttributeAsync(string selector, string attribute)
{
return ReadElementAttributeAsync(LastResponse, selector, attribute);
}
public async Task<string> ReadElementAttributeAsync(HttpResponseMessage response, string selector, string attribute)
{
var html = await response.Content.ReadAsStringAsync();

var dom = new CQ(html);
var element = dom.Find(selector);
return element.Attr(attribute);
}

public Task AssertExistsAsync(string selector)
{
return AssertExistsAsync(LastResponse, selector);
}

public async Task AssertExistsAsync(HttpResponseMessage response, string selector)
{
response.StatusCode.Should().Be(HttpStatusCode.OK);

var html = await response.Content.ReadAsStringAsync();

var dom = new CQ(html);
var element = dom.Find(selector);
element.Length.Should().BeGreaterThan(0);
}

public Task AssertNotExistsAsync(string selector)
{
return AssertNotExistsAsync(selector);
}
public async Task AssertNotExistsAsync(HttpResponseMessage response, string selector)
{
response.StatusCode.Should().Be(HttpStatusCode.OK);

var html = await response.Content.ReadAsStringAsync();

var dom = new CQ(html);
var element = dom.Find(selector);
element.Length.Should().Be(0);
}

public Task AssertErrorPageAsync(string error = null)
{
return AssertErrorPageAsync(LastResponse, error);
}
public async Task AssertErrorPageAsync(HttpResponseMessage response, string error = null)
{
response.StatusCode.Should().Be(HttpStatusCode.OK);
await AssertExistsAsync(response, ".error-page");

if (!String.IsNullOrWhiteSpace(error))
{
var errorText = await ReadElementTextAsync(response, ".alert.alert-danger");
errorText.Should().Contain(error);
}
}

public Task AssertValidationErrorAsync(string error = null)
{
return AssertValidationErrorAsync(error);
}
public async Task AssertValidationErrorAsync(HttpResponseMessage response, string error = null)
{
response.StatusCode.Should().Be(HttpStatusCode.OK);
await AssertExistsAsync(response, ".validation-summary-errors");

if (!String.IsNullOrWhiteSpace(error))
{
var errorText = await ReadElementTextAsync(response, ".validation-summary-errors");
errorText.ToLowerInvariant().Should().Contain(error.ToLowerInvariant());
}
}
}

[DebuggerDisplay("{Action}, Inputs: {Inputs.Count}")]
public class HtmlForm
{
public HtmlForm(string action = null)
{
Action = action;
}

public string Action { get; set; }
public Dictionary<string, string> Inputs { get; set; } = new Dictionary<string, string>();

public string this[string key]
{
get
{
if (Inputs.ContainsKey(key)) return Inputs[key];
return null;
}
set
{
Inputs[key] = value;
}
}
}
}
Loading