Add owner/admin character deletion in campaign management
This commit is contained in:
@@ -136,4 +136,40 @@ public sealed class ServiceSkillGroupAndOwnershipTests
|
||||
var adminUnlink = ServiceTestSupport.GetValue(service.UpdateCharacter(adminTwoSession, character.Id, "Admin Unlink", null));
|
||||
Assert.Null(adminUnlink.CampaignId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CharacterDelete_AllowsOnlyOwnerOrAdmin()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness();
|
||||
var service = harness.Service;
|
||||
|
||||
service.Register("admin", "Password123", "Admin");
|
||||
service.Register("gm", "Password123", "GM");
|
||||
service.Register("owner", "Password123", "Owner");
|
||||
service.Register("other", "Password123", "Other");
|
||||
|
||||
var adminSession = ServiceTestSupport.GetValue(service.Login("admin", "Password123")).SessionToken;
|
||||
var gmSession = ServiceTestSupport.GetValue(service.Login("gm", "Password123")).SessionToken;
|
||||
var ownerSession = ServiceTestSupport.GetValue(service.Login("owner", "Password123")).SessionToken;
|
||||
var otherSession = ServiceTestSupport.GetValue(service.Login("other", "Password123")).SessionToken;
|
||||
|
||||
var campaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, "Main", "d6"));
|
||||
var ownerCharacter = ServiceTestSupport.GetValue(service.CreateCharacter(ownerSession, "Owner Character", campaign.Id));
|
||||
var otherCharacter = ServiceTestSupport.GetValue(service.CreateCharacter(otherSession, "Other Character", campaign.Id));
|
||||
|
||||
var gmDeleteAttempt = service.DeleteCharacter(gmSession, ownerCharacter.Id);
|
||||
Assert.False(gmDeleteAttempt.Succeeded);
|
||||
|
||||
var otherDeleteAttempt = service.DeleteCharacter(otherSession, ownerCharacter.Id);
|
||||
Assert.False(otherDeleteAttempt.Succeeded);
|
||||
|
||||
var ownerDelete = ServiceTestSupport.GetValue(service.DeleteCharacter(ownerSession, ownerCharacter.Id));
|
||||
Assert.True(ownerDelete);
|
||||
|
||||
var adminDelete = ServiceTestSupport.GetValue(service.DeleteCharacter(adminSession, otherCharacter.Id));
|
||||
Assert.True(adminDelete);
|
||||
|
||||
var campaignAfterDeletes = ServiceTestSupport.GetValue(service.GetCampaign(gmSession, campaign.Id));
|
||||
Assert.Empty(campaignAfterDeletes.Characters);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user