mirror of https://github.com/hashicorp/boundary
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
508 lines
20 KiB
508 lines
20 KiB
-- Copyright (c) HashiCorp, Inc.
|
|
-- SPDX-License-Identifier: BUSL-1.1
|
|
|
|
begin;
|
|
select plan(13);
|
|
|
|
-- Create a user dimension for corresponding auth token's user.
|
|
insert into wh_user_dimension (
|
|
user_id, user_name, user_description,
|
|
auth_account_id, auth_account_type, auth_account_name, auth_account_description,
|
|
auth_method_id, auth_method_type, auth_method_name, auth_method_description,
|
|
user_organization_id, user_organization_name, user_organization_description,
|
|
current_row_indicator,
|
|
row_effective_time, row_expiration_time,
|
|
auth_method_external_id, auth_account_external_id, auth_account_full_name, auth_account_email
|
|
) values (
|
|
'u_____user1', 'None', 'None',
|
|
'a______acc1', 'None', 'None', 'None',
|
|
'am______am1', 'None', 'None', 'None',
|
|
'o______org1', 'None', 'None',
|
|
'current',
|
|
now(), 'infinity'::timestamptz,
|
|
'None', 'None', 'None', 'None'
|
|
);
|
|
|
|
|
|
prepare insert_access_time_after_delete as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 11:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 11:00:00'::timestamptz),
|
|
'2023-12-13 11:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token1',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts),
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select throws_ok(
|
|
'insert_access_time_after_delete',
|
|
'23514',
|
|
'new row for relation "wh_auth_token_accumulating_fact" violates check constraint "last_accessed_time_lte_deleted_time"'
|
|
);
|
|
|
|
prepare insert_active_time_after_issued as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 13:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 13:00:00'::timestamptz),
|
|
'2023-12-13 13:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token2',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts + interval '10 minutes', accessed_timestamp.ts),
|
|
tstzrange(issued_timestamp.ts, deleted_timestamp.ts),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select throws_ok(
|
|
'insert_active_time_after_issued',
|
|
'23514',
|
|
'new row for relation "wh_auth_token_accumulating_fact" violates check constraint "active_time_lower_eq_issued_time"'
|
|
);
|
|
|
|
prepare insert_active_time_before_access as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 13:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 13:00:00'::timestamptz),
|
|
'2023-12-13 13:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token2',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts - interval '10 minutes'),
|
|
tstzrange(issued_timestamp.ts, deleted_timestamp.ts),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select throws_ok(
|
|
'insert_active_time_before_access',
|
|
'23514',
|
|
'new row for relation "wh_auth_token_accumulating_fact" violates check constraint "active_time_upper_eq_last_accessed_time"'
|
|
);
|
|
|
|
prepare insert_active_not_contained_by_valid as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 11:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 11:00:00'::timestamptz),
|
|
'2023-12-13 11:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token1',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts),
|
|
tstzrange(issued_timestamp.ts, deleted_timestamp.ts),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select throws_ok(
|
|
'insert_active_not_contained_by_valid',
|
|
'23514',
|
|
'new row for relation "wh_auth_token_accumulating_fact" violates check constraint "active_time_contained_by_valid_time"'
|
|
);
|
|
|
|
prepare insert_valid_time_before_issued as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 13:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 13:00:00'::timestamptz),
|
|
'2023-12-13 13:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token2',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts),
|
|
tstzrange(issued_timestamp.ts - interval '10 minutes', deleted_timestamp.ts),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select throws_ok(
|
|
'insert_valid_time_before_issued',
|
|
'23514',
|
|
'new row for relation "wh_auth_token_accumulating_fact" violates check constraint "valid_time_lower_eq_issued"'
|
|
);
|
|
|
|
prepare insert_valid_time_before_deleted as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 13:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 13:00:00'::timestamptz),
|
|
'2023-12-13 13:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token2',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts),
|
|
tstzrange(issued_timestamp.ts, deleted_timestamp.ts - interval '10 minutes'),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select throws_ok(
|
|
'insert_valid_time_before_deleted',
|
|
'23514',
|
|
'new row for relation "wh_auth_token_accumulating_fact" violates check constraint "valid_time_upper_eq_deleted"'
|
|
);
|
|
|
|
prepare insert_success as
|
|
with
|
|
issued_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 10:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 10:00:00'::timestamptz),
|
|
'2023-12-13 10:00:00'::timestamptz
|
|
),
|
|
accessed_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 12:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 12:00:00'::timestamptz),
|
|
'2023-12-13 12:00:00'::timestamptz
|
|
),
|
|
deleted_timestamp(date_dim_key, time_dim_key, ts) as (
|
|
select wh_date_key('2023-12-13 13:00:00'::timestamptz),
|
|
wh_time_key('2023-12-13 13:00:00'::timestamptz),
|
|
'2023-12-13 13:00:00'::timestamptz
|
|
),
|
|
user_dim(key) as (
|
|
select key
|
|
from wh_user_dimension
|
|
where user_id = 'u_____user1'
|
|
)
|
|
insert into wh_auth_token_accumulating_fact (
|
|
auth_token_id,
|
|
user_key,
|
|
auth_token_issued_date_key,
|
|
auth_token_issued_time_key,
|
|
auth_token_issued_time,
|
|
auth_token_deleted_date_key,
|
|
auth_token_deleted_time_key,
|
|
auth_token_deleted_time,
|
|
auth_token_approximate_last_access_date_key,
|
|
auth_token_approximate_last_access_time_key,
|
|
auth_token_approximate_last_access_time,
|
|
auth_token_approximate_active_time_range,
|
|
auth_token_valid_time_range,
|
|
auth_token_count
|
|
)
|
|
select 'tok___token2',
|
|
user_dim.key,
|
|
issued_timestamp.date_dim_key,
|
|
issued_timestamp.time_dim_key,
|
|
issued_timestamp.ts,
|
|
deleted_timestamp.date_dim_key,
|
|
deleted_timestamp.time_dim_key,
|
|
deleted_timestamp.ts,
|
|
accessed_timestamp.date_dim_key,
|
|
accessed_timestamp.time_dim_key,
|
|
accessed_timestamp.ts,
|
|
tstzrange(issued_timestamp.ts, accessed_timestamp.ts),
|
|
tstzrange(issued_timestamp.ts, deleted_timestamp.ts),
|
|
1
|
|
from user_dim,
|
|
issued_timestamp,
|
|
deleted_timestamp,
|
|
accessed_timestamp;
|
|
select lives_ok('insert_success');
|
|
-- ensure user_id was properly set
|
|
select is(wh_auth_token_accumulating_fact.user_id, 'u_____user1')
|
|
from wh_auth_token_accumulating_fact
|
|
where auth_token_id = 'tok___token2';
|
|
|
|
prepare update_user_id as
|
|
update wh_auth_token_accumulating_fact set user_id = 'u_____user2'
|
|
where auth_token_id = 'tok___token2';
|
|
select throws_ok(
|
|
'update_user_id',
|
|
'23601',
|
|
'immutable column: wh_auth_token_accumulating_fact.user_id'
|
|
);
|
|
|
|
prepare update_user_key as
|
|
update wh_auth_token_accumulating_fact set user_key = 'key_2'
|
|
where auth_token_id = 'tok___token2';
|
|
select throws_ok(
|
|
'update_user_key',
|
|
'23601',
|
|
'immutable column: wh_auth_token_accumulating_fact.user_key'
|
|
);
|
|
|
|
prepare update_auth_token_issued_time as
|
|
update wh_auth_token_accumulating_fact set auth_token_issued_time = '2023-12-13 11:01:00'::timestamptz
|
|
where auth_token_id = 'tok___token2';
|
|
select throws_ok(
|
|
'update_auth_token_issued_time',
|
|
'23601',
|
|
'immutable column: wh_auth_token_accumulating_fact.auth_token_issued_time'
|
|
);
|
|
|
|
prepare update_auth_token_issued_time_key as
|
|
update wh_auth_token_accumulating_fact set auth_token_issued_time_key = wh_time_key('2023-12-13 11:01:00'::timestamptz)
|
|
where auth_token_id = 'tok___token2';
|
|
select throws_ok(
|
|
'update_auth_token_issued_time_key',
|
|
'23601',
|
|
'immutable column: wh_auth_token_accumulating_fact.auth_token_issued_time_key'
|
|
);
|
|
|
|
prepare update_auth_token_issued_date_key as
|
|
update wh_auth_token_accumulating_fact set auth_token_issued_date_key = wh_date_key('2023-12-14 11:00:00'::timestamptz)
|
|
where auth_token_id = 'tok___token2';
|
|
select throws_ok(
|
|
'update_auth_token_issued_date_key',
|
|
'23601',
|
|
'immutable column: wh_auth_token_accumulating_fact.auth_token_issued_date_key'
|
|
);
|
|
|
|
select * from finish();
|
|
rollback;
|