Allow changing capitalization of usernames

Fixes #17195
Adds a regression test
This commit is contained in:
Bond_009
2026-07-03 18:33:10 +02:00
parent ccc1712d10
commit 482cf4b8c3
2 changed files with 29 additions and 2 deletions

View File

@@ -170,7 +170,7 @@ namespace Jellyfin.Server.Implementations.Users
{
ThrowIfInvalidUsername(newName);
if (oldName.Equals(newName, StringComparison.OrdinalIgnoreCase))
if (oldName.Equals(newName, StringComparison.Ordinal))
{
throw new ArgumentException("The new and old names must be different.");
}

View File

@@ -1,6 +1,5 @@
using System;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Json;
@@ -164,5 +163,33 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
using var response = await UpdateUserPassword(client, _testUserId, createRequest);
Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
}
[Fact]
[Priority(2)]
public async Task UpdateUser_UsernameCaseDifference_Success()
{
var client = _factory.CreateClient();
client.DefaultRequestHeaders.AddAuthHeader(_accessToken!);
using var response = await client.GetAsync("Users/" + _testUserId, TestContext.Current.CancellationToken);
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var userDto = await response.Content.ReadFromJsonAsync<UserDto>(JsonDefaults.Options, TestContext.Current.CancellationToken);
Assert.NotNull(userDto);
userDto.Name = userDto.Name.ToLowerInvariant();
using var response2 = await client.PostAsJsonAsync($"Users?userId={_testUserId}", userDto, _jsonOptions, TestContext.Current.CancellationToken);
Assert.Equal(HttpStatusCode.NoContent, response2.StatusCode);
using var response3 = await client.GetAsync("Users/" + _testUserId, TestContext.Current.CancellationToken);
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var newUserDto = await response3.Content.ReadFromJsonAsync<UserDto>(JsonDefaults.Options, TestContext.Current.CancellationToken);
Assert.NotNull(newUserDto);
Assert.Equal(userDto.Name, newUserDto.Name);
// Sanity check, make sure we're testing something
Assert.NotEqual(TestUsername, userDto.Name);
}
}
}