Skip to content

Commit

Permalink
App
Browse files Browse the repository at this point in the history
  • Loading branch information
frodehansen2 committed Sep 23, 2024
1 parent 705022f commit a70afb8
Show file tree
Hide file tree
Showing 25 changed files with 887 additions and 0 deletions.
13 changes: 13 additions & 0 deletions apps/ungdomsytelse-soknad/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# @navikt/sif-demo-app

## 0.1.1

### Patch Changes

- Pakkeoppdateringer - minor-patch

## 0.1.0

### Minor Changes

- f677f10: Sette opp demo-app som kan brukes for å teste ut større POCs.
1 change: 1 addition & 0 deletions apps/ungdomsytelse-soknad/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @navikt/dusseldorf
78 changes: 78 additions & 0 deletions apps/ungdomsytelse-soknad/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
FROM node:20.12-alpine AS base

ARG APP="ungdomsytelse-soknad"
ARG SERVER="server"

ENV SCOPE=@navikt/ungdomsytelse-soknad

RUN apk fix \
&& apk add --no-cache --update libc6-compat tini \
&& rm -rf /var/cache/apk/*

RUN yarn global add turbo

#########################################
# PREPARE DEPS FOR BUILD
#########################################

FROM base AS prepare
WORKDIR /app
COPY ["package.json", ".yarnrc.yml", "yarn.lock", "turbo.json", "./"]
COPY [".yarn/releases/*", ".yarn/releases/"]
COPY packages packages
COPY apps apps
ARG SERVER
COPY ${SERVER} ${SERVER}
RUN find apps \! -name "package.json" -mindepth 2 -maxdepth 2 -print | xargs rm -rf
RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -print | xargs rm -rf
RUN find ${SERVER} \! -name "package.json" -mindepth 2 -maxdepth 2 -print | xargs rm -rf

#########################################
# BUILDER IMAGE - INSTALL PACKAGES AND COPY SOURCE
#########################################

FROM prepare AS installer
COPY --from=prepare /app ./
RUN --mount=type=secret,id=PACKAGES_AUTH_TOKEN \
PACKAGES_AUTH_TOKEN=$(cat /run/secrets/PACKAGES_AUTH_TOKEN) yarn
COPY . .

#########################################
# BUILD SERVER
#########################################

FROM installer AS server-build
ARG SERVER
WORKDIR /app/${SERVER}
RUN --mount=type=secret,id=PACKAGES_AUTH_TOKEN \
PACKAGES_AUTH_TOKEN=$(cat /run/secrets/PACKAGES_AUTH_TOKEN) yarn build


#########################################
# Client
#########################################

FROM installer AS client-build
WORKDIR /app
RUN --mount=type=secret,id=PACKAGES_AUTH_TOKEN \
PACKAGES_AUTH_TOKEN=$(cat /run/secrets/PACKAGES_AUTH_TOKEN) yarn turbo run build --filter=${SCOPE}
RUN mv /app/apps/${APP}/dist /public


#########################################
# Server
#########################################
FROM base AS server
ARG SERVER
WORKDIR /app
COPY --from=server-build /app/${SERVER}/dist ./
ENTRYPOINT ["/sbin/tini", "--"]

#########################################
# App
#########################################
FROM server

COPY --from=client-build /public ./public

CMD ["node", "index.js"]
3 changes: 3 additions & 0 deletions apps/ungdomsytelse-soknad/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Testapp for SIF

Enkel applikasjon som brukes som POC ved større endringer i sif-brukerdialog
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"organisasjoner": [
{ "navn": "SJOKKERENDE ELEKTRIKER", "organisasjonsnummer": "947064649", "ansattFom": "2002-04-20" }
],
"frilansoppdrag": [
{
"type": "type oppdrag",
"organisasjonsnummer": "991012133",
"navn": "Hurdal frilanssenter",
"ansattFom": "2022-01-01",
"ansattTom": "2022-01-15"
},
{
"type": "type oppdrag",
"organisasjonsnummer": "991012134",
"navn": "Svandalen frilanssenter",
"ansattFom": "2022-01-01",
"ansattTom": "2022-01-15"
}
],
"privatarbeidsgiver": [
{
"navn": "Jon Jonsen",
"ansattFom": "2021-01-01",
"ansattTom": "2021-12-31",
"offentligIdent": "12345678910"
}
]
}
19 changes: 19 additions & 0 deletions apps/ungdomsytelse-soknad/api-mock/data/søker1/barn-mock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"barn": [
{
"fornavn": "ALFABETISK",
"etternavn": "FAGGOTT",
"aktørId": "2811762539343",
"fødselsdato": "2019-06-08",
"fødselsnummer": "08861999573"
},
{
"fornavn": "Barn",
"mellomnavn": "Barne",
"etternavn": "Barnesen",
"fødselsdato": "2020-04-20",
"aktørId": "123"
},
{ "fødselsdato": "2015-01-02", "fornavn": "Mock", "etternavn": "Mocknes", "aktørId": "2", "mellomnavn": "" }
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"aktørId": "2320509955297",
"fødselsdato": "1995-06-02",
"fødselsnummer": "02869599259",
"fornavn": "PRESENTABEL",
"mellomnavn": null,
"etternavn": "HOFTE"
}
188 changes: 188 additions & 0 deletions apps/ungdomsytelse-soknad/api-mock/mock-server.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
/* eslint-disable no-console */
const express = require('express');
const helmet = require('helmet');
const busboyCons = require('busboy');
const os = require('os');
const fs = require('fs');
const cors = require('cors');

const server = express();

server.use(express.json());
server.use(
helmet({
contentSecurityPolicy: true,
crossOriginEmbedderPolicy: false,
crossOriginResourcePolicy: false,
}),
);

server.use(
cors({
origin: 'http://localhost:8080',
methods: ['GET', 'POST', 'DELETE', 'PUT', 'OPTIONS'],
allowedHeaders: ['content-type', 'X-Brukerdialog-Git-Sha', 'x_correlation_id'],
credentials: true,
}),
);
server.options('*', cors());

const MELLOMLAGRING_JSON = `${os.tmpdir()}/omsorgspengesoknad-mellomlagring.json`;

const isJSON = (str) => {
try {
return JSON.parse(str) && !!str;
} catch (e) {
return false;
}
};

const writeFileAsync = async (path, text) => {
return new Promise((resolve, reject) => {
fs.writeFile(path, text, 'utf8', (err) => {
if (err) reject(err);
else resolve();
});
});
};

const readFileSync = (path) => {
return fs.readFileSync(path, 'utf8');
};

const existsSync = (path) => fs.existsSync(path);

const mockPath = `${__dirname}/data`;
const soker = 'søker1';

const søkerFileName = `søker-mock.json`;
const barnFileName = `barn-mock.json`;
const arbeidsgivereFileName = `arbeidsgivere-mock.json`;
const innvilgetVedtakFileName = `innvilget-vedtak-mock.json`;
const ikkeInnvilgetVedtakFileName = `ikke-innvilget-vedtak-mock.json`;

const readMockFile = (file, responseObject) => {
const filePath = `${mockPath}/${soker}/${file}`;
if (existsSync(filePath)) {
const body = readFileSync(filePath);
responseObject.send(JSON.parse(body));
} else {
responseObject.send({});
}
};

const startExpressServer = () => {
const port = process.env.PORT || 8099;

server.get('/oppslag/soker', (req, res) => {
setTimeout(() => {
readMockFile(søkerFileName, res);
}, 250);
});

server.get('/oppslag/barn', (req, res) => {
setTimeout(() => {
readMockFile(barnFileName, res);
}, 250);
});

server.get('/oppslag/arbeidsgiver', (req, res) => {
setTimeout(() => {
readMockFile(arbeidsgivereFileName, res);
}, 250);
});

/** --- Send søknad ---------- */

server.post('/omsorgspenger-utvidet-rett/innsending', (req, res) => {
const body = req.body;
console.log('[POST] body', body);
setTimeout(() => {
res.sendStatus(200);
}, 2500);
});

const errorResponse = {
type: '/problem-details/invalid-request-parameters',
title: 'invalid-request-parameters',
status: 400,
detail: 'Requesten inneholder ugyldige paramtere.',
instance: 'about:blank',
invalid_parameters: [
'høyereRisikoForFraværBeskrivelse matcher ikke tilatt møønster: ^[\\p{Punct}\\p{L}\\p{M}\\p{N}\\p{Sc}\\p{Space}«»–§�\\u2018\\u2019\\u201a\\u201b\\u201c\\u201d\\u201e\\u201f\\u00b4\\u2026]*$',
],
};
server.post('/omsorgspenger-utvidet-rett/innsending-error', (req, res) => {
const body = req.body;
console.log('[POST] body', body);
setTimeout(() => {
res.status(400).send(errorResponse);
}, 100);
});

/** --- Vedlegg ---------- */

server.post('/vedlegg', (req, res) => {
res.set('Access-Control-Expose-Headers', 'Location');
res.set('Location', 'nav.no');
const busboy = busboyCons({ headers: req.headers });
busboy.on('finish', () => {
res.writeHead(200, {
Location: 'http://localhost:8089/vedlegg/eyJraWQiOiIxIiwidHlwIjoiSldUIiwiYWxnIjoibm9uZSJ9.eyJqdG',
});
res.end();
});
req.pipe(busboy);
});

server.delete('/vedlegg', (req, res) => {
res.sendStatus(200);
});

/** --- Mellomlagring ---------- */

server.get('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
if (existsSync(MELLOMLAGRING_JSON)) {
const body = readFileSync(MELLOMLAGRING_JSON);
res.send(JSON.parse(body));
} else {
res.send({});
}
});
server.post('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
const body = req.body;
const jsBody = isJSON(body) ? JSON.parse(body) : body;
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify(jsBody, null, 2));
res.sendStatus(200);
});
server.put('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
const body = req.body;
const jsBody = isJSON(body) ? JSON.parse(body) : body;
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify(jsBody, null, 2));
res.sendStatus(200);
});
server.delete('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => {
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify({}, null, 2));
res.sendStatus(200);
});

server.listen(port, () => {
console.log(`Express mock-api server listening on port: ${port}`);
});

/** --- Sjekk tidligere innvilget vedtak ---------- */

server.post('/k9-sak-innsyn-api/k9sak/omsorgsdager-kronisk-sykt-barn/har-gyldig-vedtak', (req, res) => {
const body = req.body;
console.log('[POST] body', body);
setTimeout(() => {
if (body.pleietrengendeAktørId === '2') {
readMockFile(innvilgetVedtakFileName, res);
} else {
readMockFile(ikkeInnvilgetVedtakFileName, res);
}
}, 2500);
});
};

startExpressServer();
Loading

0 comments on commit a70afb8

Please sign in to comment.