mirror of
https://github.com/bitwarden/server
synced 2025-12-14 23:33:41 +00:00
Fix tests
This commit is contained in:
@@ -29,21 +29,21 @@ public class SeedControllerTests : IClassFixture<SeederApiApplicationFactory>, I
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SeedEndpoint_WithValidScene_ReturnsOkWithSeedId()
|
||||
public async Task SeedEndpoint_WithValidScene_ReturnsOk()
|
||||
{
|
||||
var testEmail = $"seed-test-{Guid.NewGuid()}@bitwarden.com";
|
||||
var playId = Guid.NewGuid().ToString();
|
||||
|
||||
var response = await _client.PostAsJsonAsync("/seed", new SeedRequestModel
|
||||
{
|
||||
Template = "SingleUserScene",
|
||||
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
||||
});
|
||||
}, playId);
|
||||
|
||||
response.EnsureSuccessStatusCode();
|
||||
var result = await response.Content.ReadFromJsonAsync<SceneResponseModel>();
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.NotEqual(Guid.Empty, result.SeedId);
|
||||
Assert.NotNull(result.MangleMap);
|
||||
Assert.Null(result.Result);
|
||||
}
|
||||
@@ -74,60 +74,63 @@ public class SeedControllerTests : IClassFixture<SeederApiApplicationFactory>, I
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteEndpoint_WithValidSeedId_ReturnsOk()
|
||||
public async Task DeleteEndpoint_WithValidPlayId_ReturnsOk()
|
||||
{
|
||||
var testEmail = $"delete-test-{Guid.NewGuid()}@bitwarden.com";
|
||||
var playId = Guid.NewGuid().ToString();
|
||||
|
||||
var seedResponse = await _client.PostAsJsonAsync("/seed", new SeedRequestModel
|
||||
{
|
||||
Template = "SingleUserScene",
|
||||
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
||||
});
|
||||
}, playId);
|
||||
|
||||
seedResponse.EnsureSuccessStatusCode();
|
||||
var seedResult = await seedResponse.Content.ReadFromJsonAsync<SceneResponseModel>();
|
||||
Assert.NotNull(seedResult);
|
||||
|
||||
var deleteResponse = await _client.DeleteAsync($"/seed/{seedResult.SeedId}");
|
||||
var deleteResponse = await _client.DeleteAsync($"/seed/{playId}");
|
||||
deleteResponse.EnsureSuccessStatusCode();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteEndpoint_WithInvalidSeedId_ReturnsOkWithNull()
|
||||
public async Task DeleteEndpoint_WithInvalidPlayId_ReturnsOk()
|
||||
{
|
||||
// DestroyRecipe is idempotent - returns null for non-existent seeds
|
||||
var nonExistentSeedId = Guid.NewGuid();
|
||||
var response = await _client.DeleteAsync($"/seed/{nonExistentSeedId}");
|
||||
// DestroyRecipe is idempotent - returns null for non-existent play IDs
|
||||
var nonExistentPlayId = Guid.NewGuid().ToString();
|
||||
var response = await _client.DeleteAsync($"/seed/{nonExistentPlayId}");
|
||||
|
||||
response.EnsureSuccessStatusCode();
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
Assert.Equal("null", content);
|
||||
Assert.Equal($$"""{"playId":"{{nonExistentPlayId}}"}""", content);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteBatchEndpoint_WithValidSeedIds_ReturnsOk()
|
||||
public async Task DeleteBatchEndpoint_WithValidPlayIds_ReturnsOk()
|
||||
{
|
||||
// Create multiple seeds
|
||||
var seedIds = new List<Guid>();
|
||||
// Create multiple seeds with different play IDs
|
||||
var playIds = new List<string>();
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
var playId = Guid.NewGuid().ToString();
|
||||
playIds.Add(playId);
|
||||
|
||||
var testEmail = $"batch-test-{Guid.NewGuid()}@bitwarden.com";
|
||||
var seedResponse = await _client.PostAsJsonAsync("/seed", new SeedRequestModel
|
||||
{
|
||||
Template = "SingleUserScene",
|
||||
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
||||
});
|
||||
}, playId);
|
||||
|
||||
seedResponse.EnsureSuccessStatusCode();
|
||||
var seedResult = await seedResponse.Content.ReadFromJsonAsync<SceneResponseModel>();
|
||||
Assert.NotNull(seedResult);
|
||||
Assert.NotNull(seedResult.SeedId);
|
||||
seedIds.Add(seedResult.SeedId.Value);
|
||||
}
|
||||
|
||||
// Delete them in batch
|
||||
var request = new HttpRequestMessage(HttpMethod.Delete, "/seed/batch")
|
||||
{
|
||||
Content = JsonContent.Create(seedIds)
|
||||
Content = JsonContent.Create(playIds)
|
||||
};
|
||||
var deleteResponse = await _client.SendAsync(request);
|
||||
deleteResponse.EnsureSuccessStatusCode();
|
||||
@@ -141,24 +144,25 @@ public class SeedControllerTests : IClassFixture<SeederApiApplicationFactory>, I
|
||||
public async Task DeleteBatchEndpoint_WithSomeInvalidIds_ReturnsOk()
|
||||
{
|
||||
// DestroyRecipe is idempotent - batch delete succeeds even with non-existent IDs
|
||||
// Create one valid seed
|
||||
// Create one valid seed with a play ID
|
||||
var validPlayId = Guid.NewGuid().ToString();
|
||||
var testEmail = $"batch-partial-test-{Guid.NewGuid()}@bitwarden.com";
|
||||
|
||||
var seedResponse = await _client.PostAsJsonAsync("/seed", new SeedRequestModel
|
||||
{
|
||||
Template = "SingleUserScene",
|
||||
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
||||
});
|
||||
}, validPlayId);
|
||||
|
||||
seedResponse.EnsureSuccessStatusCode();
|
||||
var seedResult = await seedResponse.Content.ReadFromJsonAsync<SceneResponseModel>();
|
||||
Assert.NotNull(seedResult);
|
||||
|
||||
// Try to delete with mix of valid and invalid IDs
|
||||
Assert.NotNull(seedResult.SeedId);
|
||||
var seedIds = new List<Guid> { seedResult.SeedId.Value, Guid.NewGuid(), Guid.NewGuid() };
|
||||
var playIds = new List<string> { validPlayId, Guid.NewGuid().ToString(), Guid.NewGuid().ToString() };
|
||||
var request = new HttpRequestMessage(HttpMethod.Delete, "/seed/batch")
|
||||
{
|
||||
Content = JsonContent.Create(seedIds)
|
||||
Content = JsonContent.Create(playIds)
|
||||
};
|
||||
var deleteResponse = await _client.SendAsync(request);
|
||||
|
||||
@@ -174,13 +178,17 @@ public class SeedControllerTests : IClassFixture<SeederApiApplicationFactory>, I
|
||||
// Create multiple seeds
|
||||
for (var i = 0; i < 2; i++)
|
||||
{
|
||||
var playId = Guid.NewGuid().ToString();
|
||||
var testEmail = $"deleteall-test-{Guid.NewGuid()}@bitwarden.com";
|
||||
|
||||
var seedResponse = await _client.PostAsJsonAsync("/seed", new SeedRequestModel
|
||||
{
|
||||
Template = "SingleUserScene",
|
||||
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
||||
});
|
||||
}, playId);
|
||||
|
||||
var body = await seedResponse.Content.ReadAsStringAsync();
|
||||
Console.WriteLine(body);
|
||||
seedResponse.EnsureSuccessStatusCode();
|
||||
}
|
||||
|
||||
@@ -190,21 +198,22 @@ public class SeedControllerTests : IClassFixture<SeederApiApplicationFactory>, I
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SeedEndpoint_VerifyResponseContainsSeedIdAndResult()
|
||||
public async Task SeedEndpoint_VerifyResponseContainsMangleMapAndResult()
|
||||
{
|
||||
var testEmail = $"verify-response-{Guid.NewGuid()}@bitwarden.com";
|
||||
var playId = Guid.NewGuid().ToString();
|
||||
|
||||
var response = await _client.PostAsJsonAsync("/seed", new SeedRequestModel
|
||||
{
|
||||
Template = "SingleUserScene",
|
||||
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
||||
});
|
||||
}, playId);
|
||||
|
||||
response.EnsureSuccessStatusCode();
|
||||
var jsonString = await response.Content.ReadAsStringAsync();
|
||||
|
||||
// Verify the response contains both SeedId and Result fields
|
||||
Assert.Contains("seedId", jsonString, StringComparison.OrdinalIgnoreCase);
|
||||
// Verify the response contains MangleMap and Result fields
|
||||
Assert.Contains("mangleMap", jsonString, StringComparison.OrdinalIgnoreCase);
|
||||
Assert.Contains("result", jsonString, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user