Skip to content

Commit

Permalink
add tests for sql ip address columns to ensure ipv6 capabiltiy (#5062)
Browse files Browse the repository at this point in the history
  • Loading branch information
kheina authored Sep 5, 2024
1 parent 66af7db commit 5575919
Show file tree
Hide file tree
Showing 6 changed files with 295 additions and 0 deletions.
1 change: 1 addition & 0 deletions internal/db/sqltest/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ TESTS ?= tests/setup/*.sql \
tests/purge/*.sql \
tests/pagination/*.sql \
tests/policy/*.sql \
tests/host/*.sql \
tests/server/*.sql

POSTGRES_DOCKER_IMAGE_BASE ?= postgres
Expand Down
42 changes: 42 additions & 0 deletions internal/db/sqltest/tests/history/static_host_ipv6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-- Copyright (c) HashiCorp, Inc.
-- SPDX-License-Identifier: BUSL-1.1

begin;

select plan(4); -- the number of `is` calls

-- short form ipv6

insert into static_host_hst
( catalog_id, public_id, address)
values
('hc__st_____b', 'h___st____bx', '2001:4860:4860::8888');

select is(count(*), 1::bigint) from static_host_hst
where address = '2001:4860:4860::8888';

update static_host_hst
set address = '2001:4860:4860::8844'
where public_id = 'h___st____bx';

select is(count(*), 1::bigint) from static_host_hst
where address = '2001:4860:4860::8844';

-- explicit form ipv6

insert into static_host_hst
( catalog_id, public_id, address)
values
('hc__st_____b', 'h___st____by', '2001:4860:4860:0:0:0:0:8888');

select is(count(*), 1::bigint) from static_host_hst
where address = '2001:4860:4860:0:0:0:0:8888';

update static_host_hst
set address = '2001:4860:4860:0:0:0:0:8844'
where public_id = 'h___st____by';

select is(count(*), 1::bigint) from static_host_hst
where address = '2001:4860:4860:0:0:0:0:8844';

rollback;
42 changes: 42 additions & 0 deletions internal/db/sqltest/tests/host/static_host_ipv6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-- Copyright (c) HashiCorp, Inc.
-- SPDX-License-Identifier: BUSL-1.1

begin;

select plan(4); -- the number of `is` calls

-- short form ipv6

insert into static_host
( catalog_id, public_id, address)
values
('hc__st_____b', 'h___st____bx', '2001:4860:4860::8888');

select is(count(*), 1::bigint) from static_host
where address = '2001:4860:4860::8888';

update static_host
set address = '2001:4860:4860::8844'
where public_id = 'h___st____bx';

select is(count(*), 1::bigint) from static_host
where address = '2001:4860:4860::8844';

-- explicit form ipv6

insert into static_host
( catalog_id, public_id, address)
values
('hc__st_____b', 'h___st____by', '2001:4860:4860:0:0:0:0:8888');

select is(count(*), 1::bigint) from static_host
where address = '2001:4860:4860:0:0:0:0:8888';

update static_host
set address = '2001:4860:4860:0:0:0:0:8844'
where public_id = 'h___st____by';

select is(count(*), 1::bigint) from static_host
where address = '2001:4860:4860:0:0:0:0:8844';

rollback;
76 changes: 76 additions & 0 deletions internal/db/sqltest/tests/server/ipv6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
-- Copyright (c) HashiCorp, Inc.
-- SPDX-License-Identifier: BUSL-1.1

begin;

select plan(8); -- the number of `is` calls

-- short form ipv6

insert into server_controller
( private_id, address)
values
('test-controller-1', '2001:4860:4860::8888');

select is(count(*), 1::bigint) from server_controller
where address = '2001:4860:4860::8888';

update server_controller
set address = '2001:4860:4860::8844'
where private_id = 'test-controller-1';

select is(count(*), 1::bigint) from server_controller
where address = '2001:4860:4860::8844';

-- worker

insert into server_worker
( public_id, scope_id, type, last_status_time, address)
values
('w_________1', 'global', 'pki', now(), '2001:4860:4860::8888');

select is(count(*), 1::bigint) from server_worker
where address = '2001:4860:4860::8888';

update server_worker
set address = '2001:4860:4860::8844'
where public_id = 'w_________1';

select is(count(*), 1::bigint) from server_worker
where address = '2001:4860:4860::8844';

-- explicit form ipv6

insert into server_controller
( private_id, address)
values
('test-controller-2', '2001:4860:4860:0:0:0:0:8888');

select is(count(*), 1::bigint) from server_controller
where address = '2001:4860:4860:0:0:0:0:8888';

update server_controller
set address = '2001:4860:4860:0:0:0:0:8844'
where private_id = 'test-controller-2';

select is(count(*), 1::bigint) from server_controller
where address = '2001:4860:4860:0:0:0:0:8844';

-- worker

insert into server_worker
( public_id, scope_id, type, last_status_time, address)
values
('w_________2', 'global', 'pki', now(), '2001:4860:4860:0:0:0:0:8888');

select is(count(*), 1::bigint) from server_worker
where address = '2001:4860:4860:0:0:0:0:8888';

update server_worker
set address = '2001:4860:4860:0:0:0:0:8844'
where public_id = 'w_________2';

select is(count(*), 1::bigint) from server_worker
where address = '2001:4860:4860:0:0:0:0:8844';

rollback;
73 changes: 73 additions & 0 deletions internal/db/sqltest/tests/session/session_connection_ipv6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
-- Copyright (c) HashiCorp, Inc.
-- SPDX-License-Identifier: BUSL-1.1

begin;

select plan(12); -- the number of `is` calls

-- short form ipv6

insert into session_connection
( public_id, session_id, client_tcp_address, endpoint_tcp_address, user_client_ip)
values
('sc_________1', 's1_____clare', '2001:4860:4860::8888', '2001:4860:4860::8888', '2001:4860:4860::8888');

select is(count(*), 1::bigint) from session_connection
where client_tcp_address = '2001:4860:4860::8888';

select is(count(*), 1::bigint) from session_connection
where endpoint_tcp_address = '2001:4860:4860::8888';

select is(count(*), 1::bigint) from session_connection
where user_client_ip = '2001:4860:4860::8888';

update session_connection
set client_tcp_address = '2001:4860:4860::8844',
endpoint_tcp_address = '2001:4860:4860::8844',
user_client_ip = '2001:4860:4860::8844'
where public_id = 'sc_________1';

select is(count(*), 1::bigint) from session_connection
where client_tcp_address = '2001:4860:4860::8844';

select is(count(*), 1::bigint) from session_connection
where endpoint_tcp_address = '2001:4860:4860::8844';

select is(count(*), 1::bigint) from session_connection
where user_client_ip = '2001:4860:4860::8844';

-- explicit form ipv6

insert into session_connection
( public_id, session_id, client_tcp_address, endpoint_tcp_address, user_client_ip)
values
('sc_________2', 's2_____clare', '2001:4860:4860:0:0:0:0:8888', '2001:4860:4860:0:0:0:0:8888', '2001:4860:4860:0:0:0:0:8888');

select is(count(*), 1::bigint) from session_connection
where client_tcp_address = '2001:4860:4860:0:0:0:0:8888';

select is(count(*), 1::bigint) from session_connection
where endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8888';

select is(count(*), 1::bigint) from session_connection
where user_client_ip = '2001:4860:4860:0:0:0:0:8888';

update session_connection
set client_tcp_address = '2001:4860:4860:0:0:0:0:8844',
endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8844',
user_client_ip = '2001:4860:4860:0:0:0:0:8844'
where public_id = 'sc_________2';

-- since the col type is inet, postgres actually knows that 2001:4860:4860:0:0:0:0:8844 is
-- equivalent to 2001:4860:4860::8844 from above, meaning these selects return 2 results

select is(count(*), 2::bigint) from session_connection
where client_tcp_address = '2001:4860:4860:0:0:0:0:8844';

select is(count(*), 2::bigint) from session_connection
where endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8844';

select is(count(*), 2::bigint) from session_connection
where user_client_ip = '2001:4860:4860:0:0:0:0:8844';

rollback;
61 changes: 61 additions & 0 deletions internal/db/sqltest/tests/wh/session_connection/ipv6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
-- Copyright (c) HashiCorp, Inc.
-- SPDX-License-Identifier: BUSL-1.1

begin;

select plan(8); -- the number of `is` calls

-- short form ipv6

insert into session_connection
( public_id, session_id, client_tcp_address, endpoint_tcp_address, user_client_ip)
values
('sc_________1', 's1_____clare', '2001:4860:4860::8888', '2001:4860:4860::8888', '2001:4860:4860::8888');

select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
where client_tcp_address = '2001:4860:4860::8888';

select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
where endpoint_tcp_address = '2001:4860:4860::8888';

update session_connection
set client_tcp_address = '2001:4860:4860::8844',
endpoint_tcp_address = '2001:4860:4860::8844',
user_client_ip = '2001:4860:4860::8844'
where public_id = 'sc_________1';

select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
where client_tcp_address = '2001:4860:4860::8844';

select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
where endpoint_tcp_address = '2001:4860:4860::8844';

-- explicit form ipv6

insert into session_connection
( public_id, session_id, client_tcp_address, endpoint_tcp_address, user_client_ip)
values
('sc_________2', 's2_____clare', '2001:4860:4860:0:0:0:0:8888', '2001:4860:4860:0:0:0:0:8888', '2001:4860:4860:0:0:0:0:8888');

select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
where client_tcp_address = '2001:4860:4860:0:0:0:0:8888';

select is(count(*), 1::bigint) from wh_session_connection_accumulating_fact
where endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8888';

update session_connection
set client_tcp_address = '2001:4860:4860:0:0:0:0:8844',
endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8844',
user_client_ip = '2001:4860:4860:0:0:0:0:8844'
where public_id = 'sc_________2';

-- since the col type is inet, postgres actually knows that 2001:4860:4860:0:0:0:0:8844 is
-- equivalent to 2001:4860:4860::8844 from above, meaning these selects return 2 results

select is(count(*), 2::bigint) from wh_session_connection_accumulating_fact
where client_tcp_address = '2001:4860:4860:0:0:0:0:8844';

select is(count(*), 2::bigint) from wh_session_connection_accumulating_fact
where endpoint_tcp_address = '2001:4860:4860:0:0:0:0:8844';

rollback;

0 comments on commit 5575919

Please sign in to comment.