From 291816b9aad476538648a3ab49a8a40056a65400 Mon Sep 17 00:00:00 2001 From: adalpari Date: Wed, 17 Jun 2026 11:47:04 +0200 Subject: [PATCH] Add regression test for null-username application password creation The production fix for the NPE in ApplicationPasswordsManager.getOrFetchUsername (null site username passed into the non-null UsernameFetchPayload constructor) already landed in trunk via #22987. This adds the missing regression unit test covering that scenario: a non-jetpack site with a null username must return a Failure result rather than crashing. Relates to Sentry 7520323693. Co-Authored-By: Claude Opus 4.8 --- .../ApplicationPasswordManagerTests.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordManagerTests.kt b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordManagerTests.kt index b5de2191d79b..23a727b7fcb5 100644 --- a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordManagerTests.kt +++ b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordManagerTests.kt @@ -89,6 +89,22 @@ class ApplicationPasswordManagerTests { verify(applicationPasswordsStore).saveCredentials(site, testCredentials) } + @Test + fun `given a non-jetpack site with a null username, when we ask for a password, then return Failure`() = + runTest { + val site = SiteModel().apply { + url = "http://no-username.example.com" + origin = SiteModel.ORIGIN_XMLRPC + username = null + } + + whenever(applicationPasswordsStore.getCredentials(site)).thenReturn(null) + + val result = mApplicationPasswordsManager.getApplicationCredentials(site) + + Assert.assertTrue(result is ApplicationPasswordCreationResult.Failure) + } + @Test fun `given a local password exists, when we ask for a password, then return it`() = runTest { whenever(applicationPasswordsStore.getCredentials(testSite)).thenReturn(testCredentials)