From d280358e98aebe5cabf6d1a15ab20aee0ef337af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= <stephane.nicoll@broadcom.com>
Date: Wed, 15 Jan 2025 11:17:33 +0100
Subject: [PATCH] Fix typo in HttpHeadersAssert#doesNotContainHeaders

This commit deprecates the existing doesNotContainsHeaders in favor of a
newly introduced method that does not have the typo.

Closes gh-34263
---
 .../test/http/HttpHeadersAssert.java          | 15 ++++++++++++-
 .../test/http/HttpHeadersAssertTests.java     | 22 +++++++++++++++++--
 2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/spring-test/src/main/java/org/springframework/test/http/HttpHeadersAssert.java b/spring-test/src/main/java/org/springframework/test/http/HttpHeadersAssert.java
index a03bda4bc2b5..7e43b42f1910 100644
--- a/spring-test/src/main/java/org/springframework/test/http/HttpHeadersAssert.java
+++ b/spring-test/src/main/java/org/springframework/test/http/HttpHeadersAssert.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2024 the original author or authors.
+ * Copyright 2002-2025 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -78,8 +78,21 @@ public HttpHeadersAssert doesNotContainHeader(String name) {
 	 * Verify that the actual HTTP headers do not contain any of the headers
 	 * with the given {@code names}.
 	 * @param names the names of HTTP headers that should not be present
+	 * @since 6.2.2
 	 * @see #doesNotContainKeys
 	 */
+	public HttpHeadersAssert doesNotContainHeaders(String... names) {
+		return doesNotContainKeys(names);
+	}
+
+	/**
+	 * Verify that the actual HTTP headers do not contain any of the headers
+	 * with the given {@code names}.
+	 * @param names the names of HTTP headers that should not be present
+	 * @see #doesNotContainKeys
+	 * @deprecated in favor of {@link #doesNotContainHeaders(String...)}
+	 */
+	@Deprecated(since = "6.2.2", forRemoval = true)
 	public HttpHeadersAssert doesNotContainsHeaders(String... names) {
 		return doesNotContainKeys(names);
 	}
diff --git a/spring-test/src/test/java/org/springframework/test/http/HttpHeadersAssertTests.java b/spring-test/src/test/java/org/springframework/test/http/HttpHeadersAssertTests.java
index 36dc3c92534a..bbca6954d9a8 100644
--- a/spring-test/src/test/java/org/springframework/test/http/HttpHeadersAssertTests.java
+++ b/spring-test/src/test/java/org/springframework/test/http/HttpHeadersAssertTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2024 the original author or authors.
+ * Copyright 2002-2025 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -78,11 +78,29 @@ void doesNotContainHeaderWithNamePresent() {
 	@Test
 	void doesNotContainHeaders() {
 		assertThat(Map.of("first", "1", "third", "3"))
-				.doesNotContainsHeaders("second", "fourth");
+				.doesNotContainHeaders("second", "fourth");
 	}
 
 	@Test
 	void doesNotContainHeadersWithSeveralNamesPresent() {
+		Map<String, String> map = Map.of("first", "1", "second", "2", "third", "3");
+		assertThatExceptionOfType(AssertionError.class)
+				.isThrownBy(() -> assertThat(map).doesNotContainHeaders("first", "another-wrong-name", "second"))
+				.withMessageContainingAll("HTTP headers", "first", "second");
+	}
+
+	@Test
+	@Deprecated(forRemoval = true)
+	@SuppressWarnings("removal")
+	void doesNotContainHeadersWithDeprecatedMethod() {
+		assertThat(Map.of("first", "1", "third", "3"))
+				.doesNotContainsHeaders("second", "fourth");
+	}
+
+	@Test
+	@Deprecated(forRemoval = true)
+	@SuppressWarnings("removal")
+	void doesNotContainHeadersWithSeveralNamesPresentWithDeprecatedMethod() {
 		Map<String, String> map = Map.of("first", "1", "second", "2", "third", "3");
 		assertThatExceptionOfType(AssertionError.class)
 				.isThrownBy(() -> assertThat(map).doesNotContainsHeaders("first", "another-wrong-name", "second"))