mirror of
https://github.com/bitwarden/server
synced 2026-01-30 16:23:37 +00:00
* Scenes should return resulting data in the result object The result is for data that cannot be known by the client requesting the scene and the mangle map used for mangling input values to enable parallelizing tests * Fix filenames * SingleUserScene now has a return value of various created User data * 1/100 too frequent for false test failures
76 lines
2.3 KiB
C#
76 lines
2.3 KiB
C#
using System.Net;
|
|
using Bit.SeederApi.Models.Request;
|
|
using Xunit;
|
|
|
|
namespace Bit.SeederApi.IntegrationTest;
|
|
|
|
public class QueryControllerTests : IClassFixture<SeederApiApplicationFactory>, IAsyncLifetime
|
|
{
|
|
private readonly HttpClient _client;
|
|
private readonly SeederApiApplicationFactory _factory;
|
|
|
|
public QueryControllerTests(SeederApiApplicationFactory factory)
|
|
{
|
|
_factory = factory;
|
|
_client = _factory.CreateClient();
|
|
}
|
|
|
|
public Task InitializeAsync()
|
|
{
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task DisposeAsync()
|
|
{
|
|
_client.Dispose();
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
[Fact]
|
|
public async Task QueryEndpoint_WithValidQueryAndArguments_ReturnsOk()
|
|
{
|
|
var testEmail = $"emergency-test-{Guid.NewGuid()}@bitwarden.com";
|
|
|
|
var response = await _client.PostAsJsonAsync("/query", new QueryRequestModel
|
|
{
|
|
Template = "EmergencyAccessInviteQuery",
|
|
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = testEmail })
|
|
});
|
|
|
|
response.EnsureSuccessStatusCode();
|
|
var result = await response.Content.ReadAsStringAsync();
|
|
|
|
Assert.NotNull(result);
|
|
|
|
var urls = System.Text.Json.JsonSerializer.Deserialize<List<string>>(result);
|
|
Assert.NotNull(urls);
|
|
// For a non-existent email, we expect an empty list
|
|
Assert.Empty(urls);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task QueryEndpoint_WithInvalidQueryName_ReturnsNotFound()
|
|
{
|
|
var response = await _client.PostAsJsonAsync("/query", new QueryRequestModel
|
|
{
|
|
Template = "NonExistentQuery",
|
|
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { email = "test@example.com" })
|
|
});
|
|
|
|
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task QueryEndpoint_WithMissingRequiredField_ReturnsBadRequest()
|
|
{
|
|
// EmergencyAccessInviteQuery requires 'email' field
|
|
var response = await _client.PostAsJsonAsync("/query", new QueryRequestModel
|
|
{
|
|
Template = "EmergencyAccessInviteQuery",
|
|
Arguments = System.Text.Json.JsonSerializer.SerializeToElement(new { wrongField = "value" })
|
|
});
|
|
|
|
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
|
|
}
|
|
}
|