Merge remote-tracking branch 'origin/develop' into feature/existing-user-invite-messaging-updates

This commit is contained in:
Dean 2023-06-23 09:47:56 +01:00
commit b836bfab74
6 changed files with 1045 additions and 6810 deletions

View File

@ -37,6 +37,14 @@ COPY --from=build /worker /worker
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends software-properties-common nginx uuid-runtime redis-server apt-get install -y --no-install-recommends software-properties-common nginx uuid-runtime redis-server
# Install postgres client for pg_dump utils
RUN apt install software-properties-common apt-transport-https gpg -y \
&& curl -fsSl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/postgresql.gpg > /dev/null \
&& echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | tee /etc/apt/sources.list.d/postgresql.list \
&& apt update -y \
&& apt install postgresql-client-15 -y \
&& apt remove software-properties-common apt-transport-https gpg -y
# install other dependencies, nodejs, oracle requirements, jdk8, redis, nginx # install other dependencies, nodejs, oracle requirements, jdk8, redis, nginx
WORKDIR /nodejs WORKDIR /nodejs
RUN curl -sL https://deb.nodesource.com/setup_16.x -o /tmp/nodesource_setup.sh && \ RUN curl -sL https://deb.nodesource.com/setup_16.x -o /tmp/nodesource_setup.sh && \

View File

@ -1,5 +1,5 @@
{ {
"version": "2.7.26-alpha.1", "version": "2.7.26-alpha.2",
"npmClient": "yarn", "npmClient": "yarn",
"useNx": true, "useNx": true,
"packages": [ "packages": [

View File

@ -26,11 +26,21 @@ RUN apt-get install unzip libaio1
COPY scripts/integrations/oracle/ scripts/integrations/oracle/ COPY scripts/integrations/oracle/ scripts/integrations/oracle/
RUN /bin/bash -e scripts/integrations/oracle/instantclient/linux/x86-64/install.sh RUN /bin/bash -e scripts/integrations/oracle/instantclient/linux/x86-64/install.sh
# Install postgres client for pg_dump utils
RUN apt update && apt upgrade -y \
&& apt install software-properties-common apt-transport-https curl gpg -y \
&& curl -fsSl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/postgresql.gpg > /dev/null \
&& echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | tee /etc/apt/sources.list.d/postgresql.list \
&& apt update -y \
&& apt install postgresql-client-15 -y \
&& apt remove software-properties-common apt-transport-https curl gpg -y
COPY package.json . COPY package.json .
COPY dist/yarn.lock . COPY dist/yarn.lock .
RUN yarn install --production=true RUN yarn install --production=true \
# Remove unneeded data from file system to reduce image size # Remove unneeded data from file system to reduce image size
RUN yarn cache clean && apt-get remove -y --purge --auto-remove g++ make python \ && yarn cache clean && apt-get remove -y --purge --auto-remove g++ make python \
&& rm -rf /tmp/* /root/.node-gyp /usr/local/lib/node_modules/npm/node_modules/node-gyp && rm -rf /tmp/* /root/.node-gyp /usr/local/lib/node_modules/npm/node_modules/node-gyp
COPY dist/ dist/ COPY dist/ dist/

5669
qa-core/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -5,18 +5,26 @@ jest.unmock("pg")
describe("getExternalSchema", () => { describe("getExternalSchema", () => {
describe("postgres", () => { describe("postgres", () => {
let host: string
let port: number
let config: any let config: any
// Remove versioning from the outputs to prevent failures when running different pg_dump versions
function stripResultsVersions(sql: string) {
const result = sql
.replace(/\n[^\n]+Dumped from database version[^\n]+\n/, "")
.replace(/\n[^\n]+Dumped by pg_dump version[^\n]+\n/, "")
.toString()
return result
}
beforeAll(async () => { beforeAll(async () => {
// This is left on propose without a tag, so if a new version introduces a breaking change we will be notified
const container = await new GenericContainer("postgres") const container = await new GenericContainer("postgres")
.withExposedPorts(5432) .withExposedPorts(5432)
.withEnv("POSTGRES_PASSWORD", "password") .withEnv("POSTGRES_PASSWORD", "password")
.start() .start()
host = container.getContainerIpAddress() const host = container.getContainerIpAddress()
port = container.getMappedPort(5432) const port = container.getMappedPort(5432)
config = { config = {
host, host,
@ -33,14 +41,11 @@ describe("getExternalSchema", () => {
it("can export an empty database", async () => { it("can export an empty database", async () => {
const integration = new postgres.integration(config) const integration = new postgres.integration(config)
const result = await integration.getExternalSchema() const result = await integration.getExternalSchema()
expect(result).toMatchInlineSnapshot(`
expect(stripResultsVersions(result)).toMatchInlineSnapshot(`
"-- "--
-- PostgreSQL database dump -- PostgreSQL database dump
-- --
-- Dumped from database version 15.3 (Debian 15.3-1.pgdg120+1)
-- Dumped by pg_dump version 15.3
SET statement_timeout = 0; SET statement_timeout = 0;
SET lock_timeout = 0; SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0; SET idle_in_transaction_session_timeout = 0;
@ -63,31 +68,32 @@ describe("getExternalSchema", () => {
it("can export a database with tables", async () => { it("can export a database with tables", async () => {
const integration = new postgres.integration(config) const integration = new postgres.integration(config)
await integration.internalQuery({ await integration.internalQuery(
sql: ` {
CREATE TABLE "users" ( sql: `
"id" SERIAL, CREATE TABLE "users" (
"name" VARCHAR(100) NOT NULL, "id" SERIAL,
"role" VARCHAR(15) NOT NULL, "name" VARCHAR(100) NOT NULL,
PRIMARY KEY ("id") "role" VARCHAR(15) NOT NULL,
); PRIMARY KEY ("id")
CREATE TABLE "products" ( );
"id" SERIAL, CREATE TABLE "products" (
"name" VARCHAR(100) NOT NULL, "id" SERIAL,
"price" DECIMAL NOT NULL, "name" VARCHAR(100) NOT NULL,
PRIMARY KEY ("id") "price" DECIMAL NOT NULL,
);`, "owner" INTEGER NULL,
}) PRIMARY KEY ("id")
);
ALTER TABLE "products" ADD CONSTRAINT "fk_owner" FOREIGN KEY ("owner") REFERENCES "users" ("id");`,
},
false
)
const result = await integration.getExternalSchema() const result = await integration.getExternalSchema()
expect(result).toMatchInlineSnapshot(` expect(stripResultsVersions(result)).toMatchInlineSnapshot(`
"-- "--
-- PostgreSQL database dump -- PostgreSQL database dump
-- --
-- Dumped from database version 15.3 (Debian 15.3-1.pgdg120+1)
-- Dumped by pg_dump version 15.3
SET statement_timeout = 0; SET statement_timeout = 0;
SET lock_timeout = 0; SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0; SET idle_in_transaction_session_timeout = 0;
@ -110,7 +116,8 @@ describe("getExternalSchema", () => {
CREATE TABLE public.products ( CREATE TABLE public.products (
id integer NOT NULL, id integer NOT NULL,
name character varying(100) NOT NULL, name character varying(100) NOT NULL,
price numeric NOT NULL price numeric NOT NULL,
owner integer
); );
@ -203,6 +210,14 @@ describe("getExternalSchema", () => {
ADD CONSTRAINT users_pkey PRIMARY KEY (id); ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: products fk_owner; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.products
ADD CONSTRAINT fk_owner FOREIGN KEY (owner) REFERENCES public.users(id);
-- --
-- PostgreSQL database dump complete -- PostgreSQL database dump complete
-- --
@ -214,20 +229,19 @@ describe("getExternalSchema", () => {
it("does not export a data", async () => { it("does not export a data", async () => {
const integration = new postgres.integration(config) const integration = new postgres.integration(config)
await integration.internalQuery({ await integration.internalQuery(
sql: `INSERT INTO "users" ("name", "role") VALUES ('John Doe', 'Administrator'); {
sql: `INSERT INTO "users" ("name", "role") VALUES ('John Doe', 'Administrator');
INSERT INTO "products" ("name", "price") VALUES ('Book', 7.68);`, INSERT INTO "products" ("name", "price") VALUES ('Book', 7.68);`,
}) },
false
)
const result = await integration.getExternalSchema() const result = await integration.getExternalSchema()
expect(result).toMatchInlineSnapshot(` expect(stripResultsVersions(result)).toMatchInlineSnapshot(`
"-- "--
-- PostgreSQL database dump -- PostgreSQL database dump
-- --
-- Dumped from database version 15.3 (Debian 15.3-1.pgdg120+1)
-- Dumped by pg_dump version 15.3
SET statement_timeout = 0; SET statement_timeout = 0;
SET lock_timeout = 0; SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0; SET idle_in_transaction_session_timeout = 0;
@ -250,7 +264,8 @@ describe("getExternalSchema", () => {
CREATE TABLE public.products ( CREATE TABLE public.products (
id integer NOT NULL, id integer NOT NULL,
name character varying(100) NOT NULL, name character varying(100) NOT NULL,
price numeric NOT NULL price numeric NOT NULL,
owner integer
); );
@ -343,6 +358,14 @@ describe("getExternalSchema", () => {
ADD CONSTRAINT users_pkey PRIMARY KEY (id); ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: products fk_owner; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.products
ADD CONSTRAINT fk_owner FOREIGN KEY (owner) REFERENCES public.users(id);
-- --
-- PostgreSQL database dump complete -- PostgreSQL database dump complete
-- --

File diff suppressed because it is too large Load Diff