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

Commit

Permalink
Merge pull request #213 from damianh/dh/remove-cs-query
Browse files Browse the repository at this point in the history
Remove csquery package refrence and unused code
  • Loading branch information
josephdecock authored Dec 17, 2024
2 parents 6aa132d + 6307619 commit 0908510
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 200 deletions.
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;
}
}
}
}

0 comments on commit 0908510

Please sign in to comment.