Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dotnet] Guard for cookie deletion when name is empty #15074

Merged
merged 3 commits into from
Jan 13, 2025
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
13 changes: 7 additions & 6 deletions dotnet/src/webdriver/CookieJar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,16 @@ public void AddCookie(Cookie cookie)
/// Delete the cookie by passing in the name of the cookie
/// </summary>
/// <param name="name">The name of the cookie that is in the browser</param>
/// <exception cref="ArgumentNullException">If <paramref name="name"/> is <see langword="null"/>.</exception>
/// <exception cref="ArgumentException">If <paramref name="name"/> is <see langword="null"/> or <see cref="string.Empty"/>.</exception>
public void DeleteCookieNamed(string name)
{
if (name is null)
if (string.IsNullOrWhiteSpace(name))
{
throw new ArgumentNullException(nameof(name));
throw new ArgumentException("Cookie name cannot be null or empty", nameof(name));
}

Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("name", name);
Dictionary<string, object> parameters = new() { { "name", name } };

driver.InternalExecute(DriverCommand.DeleteCookie, parameters);
}

Expand Down Expand Up @@ -115,11 +115,12 @@ public void DeleteAllCookies()
/// </summary>
/// <param name="name">name of the cookie that needs to be returned</param>
/// <returns>A Cookie from the name; or <see langword="null"/> if not found.</returns>
/// <exception cref="ArgumentException">If <paramref name="name"/> is <see langword="null"/> or <see cref="string.Empty"/>.</exception>
public Cookie? GetCookieNamed(string name)
{
if (string.IsNullOrWhiteSpace(name))
{
throw new ArgumentException("Cookie name cannot be empty", nameof(name));
throw new ArgumentException("Cookie name cannot be null or empty", nameof(name));
}

try
Expand Down
2 changes: 1 addition & 1 deletion dotnet/src/webdriver/ICookieJar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public interface ICookieJar
/// Deletes the cookie with the specified name from the page.
/// </summary>
/// <param name="name">The name of the cookie to be deleted.</param>
/// <exception cref="ArgumentNullException">If <paramref name="name"/> is <see langword="null"/>.</exception>
/// <exception cref="ArgumentException">If <paramref name="name"/> is <see langword="null"/> or <see cref="string.Empty"/>.</exception>
void DeleteCookieNamed(string name);

/// <summary>
Expand Down
22 changes: 22 additions & 0 deletions dotnet/test/common/CookieImplementationTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,28 @@ public void DeleteAllCookiesDifferentUrls()
AssertCookieIsPresentWithName(cookie2.Name);
}

[Test]
[TestCase(null)]
[TestCase("")]
[TestCase(" ")]
public void ShouldThrowWhenGetInvalidCookieByName(string cookieName)
{
var getCookieAction = () => driver.Manage().Cookies.GetCookieNamed(cookieName);

Assert.That(getCookieAction, Throws.ArgumentException);
}

[Test]
[TestCase(null)]
[TestCase("")]
[TestCase(" ")]
public void ShouldThrowWhenDeleteInvalidCookieByName(string cookieName)
{
var deleteCookieAction = () => driver.Manage().Cookies.DeleteCookieNamed(cookieName);

Assert.That(deleteCookieAction, Throws.ArgumentException);
}

//------------------------------------------------------------------
// Tests below here are not included in the Java test suite
//------------------------------------------------------------------
Expand Down
Loading