-- A parent whose git-sync repository has a recorded credential, and the three
-- workspace shapes the qualification predicate has to tell apart.

INSERT INTO workspace (id, name, owner, parent_workspace_id) VALUES
    ('parent-ws', 'parent-ws', 'test-user', NULL),
    ('fork-ws',   'fork-ws',   'test-user', 'parent-ws'),
    -- A fork of a fork: the shape a fork of a dev workspace takes, and the one a
    -- parent-only lookup misses.
    ('deep-fork-ws', 'deep-fork-ws', 'test-user', 'fork-ws'),
    ('errored-fork-ws', 'errored-fork-ws', 'test-user', 'parent-ws'),
    ('orphan-ws', 'orphan-ws', 'test-user', NULL);

-- A stored credential is encrypted with its own workspace's key.
INSERT INTO workspace_key (workspace_id, kind, key) VALUES
    ('parent-ws', 'cloud', 'parent-key'),
    ('fork-ws', 'cloud', 'fork-key'),
    ('deep-fork-ws', 'cloud', 'deep-fork-key'),
    ('errored-fork-ws', 'cloud', 'errored-fork-key'),
    ('orphan-ws', 'cloud', 'orphan-key');

-- The parent holds the credential.
INSERT INTO workspace_settings (workspace_id, git_sync) VALUES
    ('parent-ws', '{"repositories":[{"git_repo_resource_path":"$res:u/admin/repo",
        "credential":{"provider":"gitlab","rotatable":true,"checked_at":1788500000}}]}'),

-- A fork inherits the repository but not the credential: this is what
-- clone_workspace_data leaves behind.
    ('fork-ws', '{"repositories":[{"git_repo_resource_path":"$res:u/admin/repo"}]}'),

-- Two levels down, so neither the credential nor its status is one hop away.
    ('deep-fork-ws', '{"repositories":[{"git_repo_resource_path":"$res:u/admin/repo"}]}'),

-- A fork whose own credential has since failed. Its own standing must win over
-- the parent's healthy record rather than being papered over.
    ('errored-fork-ws', '{"repositories":[{"git_repo_resource_path":"$res:u/admin/repo",
        "credential":{"provider":"gitlab","rotatable":false,"checked_at":1788500000,
        "error":"GitLab no longer accepts this token"}}]}'),

-- No credential and no parent to borrow one from.
    ('orphan-ws', '{"repositories":[{"git_repo_resource_path":"$res:u/admin/repo"}]}');
