Add tests verifying the interaction between instance groups and workspace auto-add functionality: - Users in instance groups get auto-added to configured workspaces - Role assignment (admin/operator/developer) works correctly - Role precedence when user belongs to multiple groups - User removal when removed from instance group - Cleanup when instance groups removed from workspace config - added_via field tracking Tests are ignored by default in CI and can be run locally with: cargo test -p windmill --test instance_group_auto_add --features private,enterprise -- --ignored Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
77 lines
2.8 KiB
SQL
77 lines
2.8 KiB
SQL
-- Fixture for instance group auto-add tests
|
|
-- Sets up test data for testing the interaction between instance groups and workspace auto-add
|
|
|
|
-- Create additional workspaces for testing
|
|
INSERT INTO workspace (id, name, owner)
|
|
VALUES
|
|
('ws-with-auto-add', 'Workspace with Auto Add', 'admin'),
|
|
('ws-no-auto-add', 'Workspace without Auto Add', 'admin'),
|
|
('ws-multi-group', 'Workspace with Multiple Groups', 'admin')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO workspace_settings (workspace_id)
|
|
VALUES
|
|
('ws-with-auto-add'),
|
|
('ws-no-auto-add'),
|
|
('ws-multi-group')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO workspace_key(workspace_id, kind, key)
|
|
VALUES
|
|
('ws-with-auto-add', 'cloud', 'key-auto-add'),
|
|
('ws-no-auto-add', 'cloud', 'key-no-auto'),
|
|
('ws-multi-group', 'cloud', 'key-multi')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Create instance groups
|
|
INSERT INTO instance_group (name, summary, id)
|
|
VALUES
|
|
('engineering', 'Engineering team', 'eng-uuid-001'),
|
|
('sales', 'Sales team', 'sales-uuid-002'),
|
|
('admins', 'Admin group', 'admin-uuid-003')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Create users in the password table (required for auto-add eligibility)
|
|
INSERT INTO password (email, password_hash, login_type, super_admin, verified, name)
|
|
VALUES
|
|
('alice@example.com', 'hash1', 'password', false, true, 'Alice'),
|
|
('bob@example.com', 'hash2', 'password', false, true, 'Bob'),
|
|
('charlie@example.com', 'hash3', 'password', false, true, 'Charlie'),
|
|
('dave@example.com', 'hash4', 'password', false, true, 'Dave'),
|
|
('admin@windmill.dev', 'hash5', 'password', true, true, 'Admin')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Add users to instance groups
|
|
INSERT INTO email_to_igroup (email, igroup)
|
|
VALUES
|
|
('alice@example.com', 'engineering'),
|
|
('bob@example.com', 'engineering'),
|
|
('bob@example.com', 'sales'),
|
|
('charlie@example.com', 'sales'),
|
|
('dave@example.com', 'admins')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Create admin user in workspaces for running tests
|
|
INSERT INTO usr (workspace_id, username, email, is_admin, operator)
|
|
VALUES
|
|
('ws-with-auto-add', 'admin', 'admin@windmill.dev', true, false),
|
|
('ws-no-auto-add', 'admin', 'admin@windmill.dev', true, false),
|
|
('ws-multi-group', 'admin', 'admin@windmill.dev', true, false)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Create the 'all' group for each workspace (required for user auto-add)
|
|
INSERT INTO group_ (workspace_id, name, summary, extra_perms)
|
|
VALUES
|
|
('ws-with-auto-add', 'all', 'All users', '{}'),
|
|
('ws-no-auto-add', 'all', 'All users', '{}'),
|
|
('ws-multi-group', 'all', 'All users', '{}')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Add admin to the 'all' group
|
|
INSERT INTO usr_to_group (workspace_id, usr, group_)
|
|
VALUES
|
|
('ws-with-auto-add', 'admin', 'all'),
|
|
('ws-no-auto-add', 'admin', 'all'),
|
|
('ws-multi-group', 'admin', 'all')
|
|
ON CONFLICT DO NOTHING;
|