extract accounts and add integration test
- add end-to-end test AccountsEndpoint - extract get accounts from account.http to accounts.http - extract get accounts from AccountController to AccountsController - move spring boot test file to integration test - add schema.sql - add dependencies for integration test
This commit is contained in:
80
src/integration-test/resources/postgres/schema.sql
Normal file
80
src/integration-test/resources/postgres/schema.sql
Normal file
@@ -0,0 +1,80 @@
|
||||
-- FUNCTION: public.gen_uuid_v7(timestamp with time zone)
|
||||
CREATE OR REPLACE FUNCTION public.gen_uuid_v7(p_timestamp timestamp with time zone)
|
||||
RETURNS uuid
|
||||
LANGUAGE 'sql'
|
||||
COST 100
|
||||
VOLATILE PARALLEL UNSAFE
|
||||
AS
|
||||
$BODY$
|
||||
-- Replace the first 48 bits of a uuid v4 with the provided timestamp (in milliseconds) since 1970-01-01 UTC, and set the version to 7
|
||||
SELECT encode(set_bit(set_bit(overlay(uuid_send(gen_random_uuid()) PLACING substring(int8send((extract(EPOCH FROM p_timestamp) * 1000):: BIGINT) FROM 3) FROM 1 FOR 6), 52, 1), 53, 1), 'hex') ::uuid;
|
||||
$BODY$;
|
||||
|
||||
-- FUNCTION: public.gen_uuid_v7()
|
||||
CREATE OR REPLACE FUNCTION public.gen_uuid_v7()
|
||||
RETURNS uuid
|
||||
LANGUAGE 'sql'
|
||||
COST 100
|
||||
VOLATILE PARALLEL UNSAFE
|
||||
AS
|
||||
$BODY$
|
||||
SELECT gen_uuid_v7(clock_timestamp());
|
||||
$BODY$;
|
||||
|
||||
-- Table: public.accounts
|
||||
CREATE TABLE IF NOT EXISTS public.accounts
|
||||
(
|
||||
id UUID DEFAULT gen_uuid_v7(),
|
||||
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
enabled boolean NOT NULL DEFAULT true,
|
||||
username VARCHAR(50) UNIQUE NOT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
roles VARCHAR(255) NOT NULL,
|
||||
CONSTRAINT pk_contact_types PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
-- Index: idx_accounts_username
|
||||
CREATE INDEX IF NOT EXISTS idx_accounts_username
|
||||
ON public.accounts USING btree (username COLLATE pg_catalog."default" ASC NULLS LAST)
|
||||
TABLESPACE pg_default;
|
||||
|
||||
-- Table: public.accounts_audit
|
||||
CREATE TABLE IF NOT EXISTS public.accounts_audit
|
||||
(
|
||||
id uuid NOT NULL,
|
||||
timestamp timestamp with time zone NOT NULL,
|
||||
enabled boolean NOT NULL,
|
||||
username VARCHAR(50) NOT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
roles VARCHAR(255) NOT NULL,
|
||||
CONSTRAINT pk_accounts_audit PRIMARY KEY (id, timestamp)
|
||||
) TABLESPACE pg_default;
|
||||
|
||||
-- FUNCTION: public.accounts_audit()
|
||||
CREATE OR REPLACE FUNCTION public.accounts_audit()
|
||||
RETURNS trigger
|
||||
LANGUAGE 'plpgsql'
|
||||
COST 100
|
||||
VOLATILE NOT LEAKPROOF
|
||||
AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
INSERT INTO accounts_audit (id, timestamp, enabled, username, password, roles)
|
||||
VALUES (NEW.id, NEW.updated_at, NEW.enabled, NEW.username, NEW.password, NEW.roles);
|
||||
RETURN NULL; -- result is ignored since this is an AFTER trigger
|
||||
END;
|
||||
$BODY$;
|
||||
|
||||
-- Trigger: accounts_audit_trigger
|
||||
CREATE OR REPLACE TRIGGER accounts_audit_trigger
|
||||
AFTER INSERT OR UPDATE
|
||||
ON public.accounts
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION public.accounts_audit();
|
||||
|
||||
-- Test data
|
||||
insert into public.accounts (id, created_at, updated_at, enabled, username, password, roles)
|
||||
values ('00000000-0000-7000-0000-000000000001'::uuid, '2000-01-01 00:00:00.000001 +00:00', '2000-01-01 00:00:01.000001 +00:00', true, 'admin', '$2a$12$KoXBoLOANMK11J4xeJHPA.Sy0FG.m8KWk7P4XFsMO.ZbFmFI2DckK', 'ROLE_ADMIN'),
|
||||
('00000000-0000-7000-0000-000000000002'::uuid, '2000-01-01 00:00:00.000001 +00:00', '2000-01-01 00:00:01.000001 +00:00', true, 'user', '$2a$12$KoXBoLOANMK11J4xeJHPA.Sy0FG.m8KWk7P4XFsMO.ZbFmFI2DckK', 'ROLE_USER'),
|
||||
('00000000-0000-7000-0000-000000000003'::uuid, '2000-01-01 00:00:00.000001 +00:00', '2000-01-01 00:00:01.000001 +00:00', false, 'disabled', '$2a$12$KoXBoLOANMK11J4xeJHPA.Sy0FG.m8KWk7P4XFsMO.ZbFmFI2DckK', 'ROLE_USER');
|
||||
Reference in New Issue
Block a user