diff --git a/tavern/internal/graphql/mutation.resolvers.go b/tavern/internal/graphql/mutation.resolvers.go index 7b74a125f..330194b4f 100644 --- a/tavern/internal/graphql/mutation.resolvers.go +++ b/tavern/internal/graphql/mutation.resolvers.go @@ -35,6 +35,12 @@ func (r *mutationResolver) DropAllData(ctx context.Context) (bool, error) { // Delete relevant ents // We must delete children before parents to avoid foreign key constraint violations + if _, err := client.ShellTask.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete shell tasks: %w", err)) + } + if _, err := client.Portal.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete portals: %w", err)) + } if _, err := client.Shell.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete shells: %w", err)) } @@ -56,6 +62,9 @@ func (r *mutationResolver) DropAllData(ctx context.Context) (bool, error) { if _, err := client.Quest.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete quests: %w", err)) } + if _, err := client.Link.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete links: %w", err)) + } if _, err := client.Host.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete hosts: %w", err)) } diff --git a/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml b/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml index ade61ef72..e706b3ee7 100644 --- a/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml +++ b/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml @@ -15,6 +15,20 @@ state: | VALUES (2000, 3000); INSERT INTO `tome_assets` (tome_id, asset_id) VALUES (2000, 3001); + INSERT INTO `repositories` (id, url, repository_owner, public_key, private_key, created_at, last_modified_at) + VALUES (4000, "http://github.com/repo", 5, "pubkey", "privkey", "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `links` (id, path, expires_at, link_asset, link_creator, created_at, last_modified_at) + VALUES (5000, "linkpath", "2024-01-23 14:51:13", 3000, 5, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `shells` (id, shell_beacon, shell_owner, data, created_at, last_modified_at) + VALUES (6000, 1337, 5, "", "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `shell_tasks` (id, shell_shell_tasks, shell_task_creator, input, stream_id, sequence_id, created_at, last_modified_at) + VALUES (7000, 6000, 5, "whoami", "stream1", 1, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `quests` (id, name, quest_tome, created_at, last_modified_at) + VALUES (9000, "quest1", 2000, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `tasks` (id, quest_tasks, task_beacon, created_at, last_modified_at) + VALUES (10000, 9000, 1337, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `portals` (id, portal_beacon, portal_task, portal_owner, created_at, last_modified_at) + VALUES (8000, 1337, 10000, 5, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); requestor: session_token: secretToken query: |