mirror of
https://github.com/bitwarden/server
synced 2025-12-06 00:03:34 +00:00
* initial lift and shift * extract function RemoveExistingExternalUsers * Extract function RemoveExistingUsers() * extract function OverwriteExisting() * create new model for sync data * extract add users to function, rename * rename OrganizatinUserInvite for command, implement command * implement command * refactor groups logic * fix imports * remove old tests, fix imports * fix namespace * fix CommandResult useage * tests wip * wip * wip * remove redundant code, remove looping db call, refactor tests * clean up * remove looping db call with bulk method * clean up * remove orgId param to use id already in request * change param * cleanup params * remove IReferenceEventService * fix test * fix tests * cr feedback * remove _timeProvider * add xmldoc, refactor to make InviteOrganizationUsersCommand vNext instead of default * switch back to command * re-add old ImportAsync impl * fix test * add feature flag * cleanup * clean up * fix tests * wip * wip * add api integration tests for users WIP * groups integration tests * cleanup * fix error from merging main * fix tests * cr feedback * fix test * fix test
68 lines
2.4 KiB
C#
68 lines
2.4 KiB
C#
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.InviteUsers.Models;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Exceptions;
|
|
using Bit.Core.Models.Data;
|
|
using Bit.Test.Common.AutoFixture.Attributes;
|
|
using Xunit;
|
|
|
|
using static Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.InviteUsers.Models.InviteOrganizationUserErrorMessages;
|
|
|
|
namespace Bit.Core.Test.AdminConsole.Models;
|
|
|
|
public class InviteOrganizationUsersRequestTests
|
|
{
|
|
[Theory]
|
|
[BitAutoData]
|
|
public void Constructor_WhenPassedInvalidEmail_ThrowsException(string email, OrganizationUserType type, Permissions permissions, string externalId)
|
|
{
|
|
var exception = Assert.Throws<BadRequestException>(() =>
|
|
new OrganizationUserInviteCommandModel(email, [], [], type, permissions, externalId, false));
|
|
|
|
Assert.Contains(InvalidEmailErrorMessage, exception.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_WhenPassedInvalidCollectionAccessConfiguration_ThrowsException()
|
|
{
|
|
const string validEmail = "test@email.com";
|
|
|
|
var invalidCollectionConfiguration = new CollectionAccessSelection
|
|
{
|
|
Manage = true,
|
|
HidePasswords = true
|
|
};
|
|
|
|
var exception = Assert.Throws<BadRequestException>(() =>
|
|
new OrganizationUserInviteCommandModel(
|
|
email: validEmail,
|
|
assignedCollections: [invalidCollectionConfiguration],
|
|
groups: [],
|
|
type: default,
|
|
permissions: new Permissions(),
|
|
externalId: string.Empty,
|
|
accessSecretsManager: false));
|
|
|
|
Assert.Equal(InvalidCollectionConfigurationErrorMessage, exception.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_WhenPassedValidArguments_ReturnsInvite()
|
|
{
|
|
const string validEmail = "test@email.com";
|
|
var validCollectionConfiguration = new CollectionAccessSelection { Id = Guid.NewGuid(), Manage = true };
|
|
|
|
var invite = new OrganizationUserInviteCommandModel(
|
|
email: validEmail,
|
|
assignedCollections: [validCollectionConfiguration],
|
|
groups: [],
|
|
type: default,
|
|
permissions: null,
|
|
externalId: null,
|
|
accessSecretsManager: false);
|
|
|
|
Assert.NotNull(invite);
|
|
Assert.Contains(validEmail, invite.Email);
|
|
Assert.Contains(validCollectionConfiguration, invite.AssignedCollections);
|
|
}
|
|
}
|