-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
705022f
commit a70afb8
Showing
25 changed files
with
887 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
Validating CODEOWNERS rules …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
* @navikt/dusseldorf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
29 changes: 29 additions & 0 deletions
29
apps/ungdomsytelse-soknad/api-mock/data/søker1/arbeidsgivere-mock.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
19
apps/ungdomsytelse-soknad/api-mock/data/søker1/barn-mock.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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": "" } | ||
] | ||
} |
8 changes: 8 additions & 0 deletions
8
apps/ungdomsytelse-soknad/api-mock/data/søker1/søker-mock.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); |
Oops, something went wrong.