mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 15:42:48 -05:00
[EC-394] SCIM server integration tests (#2197)
* [EC-394] Added ScimApplicationFactory to handle tests for Scim controllers * [EC-394] Added Scim.IntegrationTest project with GroupsControllerTests * [EC-394] Fixed getting Guid Id from Operation Path * [EC-394] Added tests for GroupsController Patch action * [EC-394] Moved tests mock data setup to ScimApplicationFactory * [EC-394] Updated IntegrationTestCommon packages.lock.json * [EC-394] Updated ScimApplicationFactory and GroupsControllerTests; Added UsersController Tests * [EC-394] dotnet format * [EC-394] Updated Identity.IntegrationTest packages.lock.json * [EC-394] Updated Scim.IntegrationTest packages.lock.json * [EC-394] dotnet format * [EC-394] Reverted change on getting GUID from GetOperationPathId * [EC-394] Fixed sending userId on Patch_AddSingleMember_Success and Patch_RemoveSingleMember_Success * [EC-394] Updated test to send request with two operations * [EC-394] Removed Scim dependency from IntegrationTestCommon * [EC-394] Reverted changes to packages.lock.json. Ran dotnet format * [EC-394] Updated Scim.IntegrationTest packages.lock.json * [EC-394] Updated GroupsControllerTests and UsersControllerTests to implement IAsyncLifetime to cleanup database before each test * [EC-394] Declared variables for GetList parameters * [EC-394] Updated AssertHelper.AssertPropertyEqual to compare each item in an IEnumerable property * [EC-394] Updated AssertHelper.AssertPropertyEqual to check if type is comparable * [EC-394] Removed unused variable from ScimApplicationFactory * Apply suggestions from code review Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com> * [EC-394] Changed test users emails to domain example.com * [EC-394] Restore solution file * [EC-394] Added Scim.IntegrationTest to sln * [EC-394] Updated integration tests to be clearer and check responses in detail * [EC-394] Using NoopMailService to mock sending email invitations in tests * [EC-394] Removed multiple references to the same variable ScimApplicationFactory.TestOrganizationId1 * [EC-394] Updated const variable names * [EC-394] Using AssertPropertyEqualPredicate for IEnumerable properties Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
using System.Diagnostics;
|
||||
using System.Collections;
|
||||
using System.Diagnostics;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
@ -25,7 +26,7 @@ public static class AssertHelper
|
||||
throw new Exception("Actual object is null but expected is not");
|
||||
}
|
||||
|
||||
foreach (var expectedPropInfo in expected.GetType().GetProperties().Where(pi => !relevantExcludedProperties.Contains(pi.Name)))
|
||||
foreach (var expectedPropInfo in expected.GetType().GetProperties().Where(pi => !relevantExcludedProperties.Contains(pi.Name) && !pi.GetIndexParameters().Any()))
|
||||
{
|
||||
var actualPropInfo = actual.GetType().GetProperty(expectedPropInfo.Name);
|
||||
|
||||
@ -36,7 +37,7 @@ public static class AssertHelper
|
||||
$"Actual:\n{JsonSerializer.Serialize(actual, JsonHelpers.Indented)}"));
|
||||
}
|
||||
|
||||
if (expectedPropInfo.PropertyType == typeof(string) || expectedPropInfo.PropertyType.IsValueType)
|
||||
if (typeof(IComparable).IsAssignableFrom(expectedPropInfo.PropertyType) || expectedPropInfo.PropertyType.IsPrimitive || expectedPropInfo.PropertyType.IsValueType)
|
||||
{
|
||||
Assert.Equal(expectedPropInfo.GetValue(expected), actualPropInfo.GetValue(actual));
|
||||
}
|
||||
@ -45,6 +46,13 @@ public static class AssertHelper
|
||||
static string JsonDocString(PropertyInfo info, object obj) => JsonSerializer.Serialize(info.GetValue(obj));
|
||||
Assert.Equal(JsonDocString(expectedPropInfo, expected), JsonDocString(actualPropInfo, actual));
|
||||
}
|
||||
else if (typeof(IEnumerable).IsAssignableFrom(expectedPropInfo.PropertyType) && typeof(IEnumerable).IsAssignableFrom(actualPropInfo.PropertyType))
|
||||
{
|
||||
var expectedItems = ((IEnumerable)expectedPropInfo.GetValue(expected)).Cast<object>();
|
||||
var actualItems = ((IEnumerable)actualPropInfo.GetValue(actual)).Cast<object>();
|
||||
|
||||
AssertPropertyEqualPredicate(expectedItems, excludedPropertyStrings)(actualItems);
|
||||
}
|
||||
else
|
||||
{
|
||||
var prefix = $"{expectedPropInfo.PropertyType.Name}.";
|
||||
|
@ -46,6 +46,21 @@ public static class WebApplicationFactoryExtensions
|
||||
string requestUri,
|
||||
Action<HttpContext> extraConfiguration = null)
|
||||
=> SendAsync(server, HttpMethod.Get, requestUri, content: null, extraConfiguration);
|
||||
public static Task<HttpContext> PutAsync(this TestServer server,
|
||||
string requestUri,
|
||||
HttpContent content,
|
||||
Action<HttpContext> extraConfiguration = null)
|
||||
=> SendAsync(server, HttpMethod.Put, requestUri, content, extraConfiguration);
|
||||
public static Task<HttpContext> PatchAsync(this TestServer server,
|
||||
string requestUri,
|
||||
HttpContent content,
|
||||
Action<HttpContext> extraConfiguration = null)
|
||||
=> SendAsync(server, HttpMethod.Patch, requestUri, content, extraConfiguration);
|
||||
public static Task<HttpContext> DeleteAsync(this TestServer server,
|
||||
string requestUri,
|
||||
HttpContent content,
|
||||
Action<HttpContext> extraConfiguration = null)
|
||||
=> SendAsync(server, HttpMethod.Delete, requestUri, content: content, extraConfiguration);
|
||||
|
||||
public static HttpContext SetAuthEmail(this HttpContext context, string username)
|
||||
{
|
||||
|
Reference in New Issue
Block a user