2023-05-25 15:16:40 +00:00
|
|
|
-- Copyright (c) HashiCorp, Inc.
|
|
|
|
|
-- SPDX-License-Identifier: BUSL-1.1
|
|
|
|
|
|
|
|
|
|
begin;
|
|
|
|
|
select plan(11);
|
|
|
|
|
select wtt_load('widgets', 'iam', 'kms', 'auth', 'hosts', 'targets');
|
|
|
|
|
|
|
|
|
|
-- validate the setup data
|
|
|
|
|
select is(count(*), 2::bigint) from storage_plugin_storage_bucket;
|
|
|
|
|
|
|
|
|
|
-- insert target with storage bucket as null with session recording enabled
|
|
|
|
|
prepare invalid_session_recording_insert as
|
|
|
|
|
insert into target_ssh
|
|
|
|
|
(project_id, public_id, enable_session_recording, storage_bucket_id, name)
|
|
|
|
|
values
|
|
|
|
|
('p____swidget', 'tssh___small', true, null, 'Small Widget SSH Target');
|
|
|
|
|
select throws_ok('invalid_session_recording_insert', null, null, 'insert of invalid session recording state succeeded');
|
|
|
|
|
|
|
|
|
|
-- insert target with storage bucket from an org not the parent of its project
|
|
|
|
|
prepare invalid_storage_bucket_insert as
|
|
|
|
|
insert into target_ssh
|
|
|
|
|
(project_id, public_id, enable_session_recording, storage_bucket_id, name)
|
|
|
|
|
values
|
2023-05-25 15:19:42 +00:00
|
|
|
('p____swidget', 'tssh___small', false, 'sb____colors', 'Small Widget SSH Target');
|
2023-05-25 15:16:40 +00:00
|
|
|
select throws_ok('invalid_storage_bucket_insert', null, null, 'insert of invalid storage bucket state succeeded');
|
|
|
|
|
|
|
|
|
|
-- insert targets with valid storage buckets
|
|
|
|
|
insert into target_ssh
|
|
|
|
|
(project_id, public_id, enable_session_recording, storage_bucket_id, name)
|
|
|
|
|
values
|
|
|
|
|
('p____bwidget', 'tssh_____big', false, null, 'Big Widget SSH Target');
|
|
|
|
|
|
2023-05-25 15:19:42 +00:00
|
|
|
select is(count(*), 1::bigint) from target_ssh where public_id = 'tssh______cb' and storage_bucket_id = 'sb____global';
|
|
|
|
|
select is(count(*), 1::bigint) from target_ssh where public_id = 'tssh______cg' and storage_bucket_id = 'sb____colors';
|
2023-05-25 15:16:40 +00:00
|
|
|
select is(count(*), 1::bigint) from target_ssh where public_id = 'tssh_____big' and storage_bucket_id is null;
|
|
|
|
|
|
|
|
|
|
-- update storage bucket to null without disabling session recording
|
|
|
|
|
prepare invalid_session_recording_update as
|
|
|
|
|
update target_ssh
|
|
|
|
|
set storage_bucket_id = null
|
2023-05-25 15:19:42 +00:00
|
|
|
where public_id = 'tssh______cb';
|
2023-05-25 15:16:40 +00:00
|
|
|
select throws_ok('invalid_session_recording_enabled', null, null, 'update to invalid session recording state succeeded');
|
2023-05-25 15:19:42 +00:00
|
|
|
|
2023-05-25 15:16:40 +00:00
|
|
|
prepare valid_session_recording_update as
|
|
|
|
|
update target_ssh
|
|
|
|
|
set storage_bucket_id = null, enable_session_recording = false
|
2023-05-25 15:19:42 +00:00
|
|
|
where public_id = 'tssh______cb';
|
2023-05-25 15:16:40 +00:00
|
|
|
select lives_ok('valid_session_recording_update', 'update to valid session recording state failed');
|
|
|
|
|
|
|
|
|
|
-- Update target with storage bucket from an org not the parent of its project
|
|
|
|
|
prepare invalid_storage_bucket_update as
|
|
|
|
|
update target_ssh
|
2023-05-25 15:19:42 +00:00
|
|
|
set storage_bucket_id = 'sb____colors'
|
2023-05-25 15:16:40 +00:00
|
|
|
where public_id = 'tssh_____big';
|
|
|
|
|
select throws_ok('invalid_storage_bucket_update', null, null, 'update to invalid storage bucket state succeeded');
|
|
|
|
|
|
2023-05-25 15:19:42 +00:00
|
|
|
-- update storage bucket to global scope
|
2023-05-25 15:16:40 +00:00
|
|
|
prepare valid_storage_bucket_global_update as
|
|
|
|
|
update target_ssh
|
2023-05-25 15:19:42 +00:00
|
|
|
set storage_bucket_id = 'sb____global'
|
|
|
|
|
where public_id = 'tssh______cr';
|
2023-05-25 15:16:40 +00:00
|
|
|
select lives_ok('valid_storage_bucket_global_update', 'update to valid storage bucket state failed');
|
|
|
|
|
|
|
|
|
|
-- disable session recording without removing storage bucket
|
|
|
|
|
prepare valid_disable_session_recording as
|
|
|
|
|
update target_ssh
|
|
|
|
|
set enable_session_recording = false
|
2023-05-25 15:19:42 +00:00
|
|
|
where public_id = 'tssh______cr';
|
2023-05-25 15:16:40 +00:00
|
|
|
select lives_ok('valid_disable_session_recording', 'update to valid storage bucket state failed');
|
|
|
|
|
|
|
|
|
|
select * from finish();
|
|
|
|
|
rollback;
|