39 lines
2.0 KiB
Transact-SQL
39 lines
2.0 KiB
Transact-SQL
-- Exercise the same audit procedure used by the merge services; leave no data behind.
|
|
SET XACT_ABORT ON;
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION;
|
|
DECLARE @ProjectID int, @UserID int;
|
|
SELECT TOP (1) @ProjectID=ProjectID, @UserID=UserID FROM dbo.ProjectUserAccess WHERE IsActive=1;
|
|
IF @ProjectID IS NULL THROW 51001, 'Audit tests require a project with an active user.', 1;
|
|
EXEC dbo.ProjectAudit_Record @ProjectID=@ProjectID, @UserID=@UserID,
|
|
@ActivityType=N'Merged', @EntityType=N'Character', @EntityName=N'Merge audit regression';
|
|
IF NOT EXISTS (SELECT 1 FROM dbo.ProjectActivity WHERE ProjectID=@ProjectID
|
|
AND ActivityType=N'Merged' AND EntityType=N'Character' AND EntityName=N'Merge audit regression')
|
|
THROW 51001, 'Character merge activity was not recorded.', 1;
|
|
-- Preserve all activity types that were allowed before the merge migration.
|
|
INSERT dbo.ProjectActivity(ProjectID,UserID,ActivityType,EntityType,EntityName)
|
|
SELECT @ProjectID,@UserID,ActivityType,N'Project',N'Merge audit regression'
|
|
FROM (VALUES (N'Created'),(N'Updated'),(N'Deleted'),(N'Archived'),(N'Restored'),
|
|
(N'Shared'),(N'CollaboratorRemoved'),(N'Exported')) types(ActivityType);
|
|
ROLLBACK TRANSACTION;
|
|
SELECT N'PASS: character merge and all existing activity types; fixtures rolled back' AS Result;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
|
THROW;
|
|
END CATCH;
|
|
GO
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION;
|
|
DECLARE @ProjectID int=(SELECT TOP (1) ProjectID FROM dbo.Projects);
|
|
EXEC dbo.ProjectAudit_Record @ProjectID=@ProjectID, @ActivityType=N'NotAnActivityType',
|
|
@EntityType=N'Project', @EntityName=N'Merge audit regression';
|
|
THROW 51001, 'Unknown activity type was accepted.', 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
|
IF ERROR_NUMBER() <> 547 OR ERROR_MESSAGE() NOT LIKE N'%CK_ProjectActivity_ActivityType%' THROW;
|
|
SELECT N'PASS: unknown activity types remain rejected; fixtures rolled back' AS Result;
|
|
END CATCH;
|
|
GO
|