From 0bd3a87d88ccd09d93aa219fec72add8960a9622 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Nov 2024 08:48:23 +0100 Subject: [PATCH] Oppdatere readme og lokal-profil --- README.md | 19 +++++++++++++++--- apps/api/src/main/resources/application.yml | 2 -- .../FarskapsportalApiApplicationLocal.java | 10 +++------ "readme/h2-p\303\245logging.png" | Bin 0 -> 17600 bytes img.png => readme/intellij-debug-config.png | Bin 5 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 "readme/h2-p\303\245logging.png" rename img.png => readme/intellij-debug-config.png (100%) diff --git a/README.md b/README.md index ea5e192be..2164dce47 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,9 @@ virksomhetssertifikat og passord, samt Postgres-bruker (e.g. kjør >kubectl -n f Endepunktene er dokumentert med Swagger, og kan testes lokalt og på GCP dev: -- LOKALT: http://localhost:8080/swagger-ui.html -- DEV: https://farskapsportal-api-feature.dev.nav.no/swagger-ui.html +- LOKALT: http://localhost:8080/swagger-ui/index.html +- DEV-feature: https://farskapsportal-api-feature.intern.dev.nav.no/swagger-ui/index.html +- DEV: https://farskapsportal-api.intern.dev.nav.no/swagger-ui/index.html ### testpersoner Hent testpersoner fra Skatts Tenor testdata: https://www.skatteetaten.no/skjema/testdata/ @@ -58,6 +59,18 @@ før testappen FarskapsportalApplicationLocal startes. Kjøre fmt-maven-plugin: > mvn fmt:format +Lokal-profilen bruker h2 (i-minnet-db). Admin-konsoll for h2 kan nås på + +>http://localhost:8080/h2-console + + - brukernavn: sa + - passord: 123 + +![/readme/h2-pålogging.png](/readme/h2-pålogging.png) + + +når lokal-profilen kjører. + ##### Brukernotifikasjon Brukernotifikasjoner kan skrus av ved å sette miljøvariabelen BRUKERNOTIFIKASJON_PAA til false. @@ -101,7 +114,7 @@ Ved lokal kjøring må Secret Manager være skrudd av. Dette gjøres i bootstrap gjelder alle profiler som ikke kjører på GCP (inkludert enhetstesting). For at dette skal fungere i Intellij, må active profiles settes i Run/Debug-konfigen som vist i bildet under: -![img.png](img.png) +![/readme/intellij-debug-config.png](/readme/intellij-debug-config.png) ##### Lokal kjøring mot Postgresdatabase på GCP Profilen remote-postgres kan brukes til å spinne opp en lokal instans av farskapsportal-api som benytter sentral postgres-instans på GCP. Denne krever diff --git a/apps/api/src/main/resources/application.yml b/apps/api/src/main/resources/application.yml index 0f31d02af..85d98840d 100644 --- a/apps/api/src/main/resources/application.yml +++ b/apps/api/src/main/resources/application.yml @@ -141,11 +141,9 @@ spring: ### H2 ### spring: config.activate.on-profile: test, local, skatt-ssl-test, scheduled-test - cloud.bootstrap.enabled: true flyway.enabled: false datasource: url: jdbc:h2:mem:default - datasource.type: com.zaxxer.hikari.HikariDataSource username: ${DB_USERNAME} password: ${DB_PASSWORD} data.jpa.repositories.bootstrap-mode: default diff --git a/apps/api/src/test/java/no/nav/farskapsportal/backend/apps/api/FarskapsportalApiApplicationLocal.java b/apps/api/src/test/java/no/nav/farskapsportal/backend/apps/api/FarskapsportalApiApplicationLocal.java index 9eedcf037..019efa2a5 100644 --- a/apps/api/src/test/java/no/nav/farskapsportal/backend/apps/api/FarskapsportalApiApplicationLocal.java +++ b/apps/api/src/test/java/no/nav/farskapsportal/backend/apps/api/FarskapsportalApiApplicationLocal.java @@ -148,10 +148,7 @@ public FlywayConfiguration(@Qualifier("dataSource") DataSource dataSource) { @AutoConfigureWireMock(port = 0) class MockOauthServerLocalConfig { - @Autowired private DifiESignaturStub difiESignaturStub; - - @Bean - public void runStubs() { + public MockOauthServerLocalConfig( @Autowired DifiESignaturStub difiESignaturStub) { difiESignaturStub.runGetSignedDocument(PADES); difiESignaturStub.runGetXades(XADES); } @@ -162,15 +159,14 @@ public void runStubs() { @Profile("!live") class LocalConfig { - @Value("${APPNAVN}") - private String appnavn; - @Container static final GenericContainer fakeGcs = new GenericContainer<>("fsouza/fake-gcs-server") .withExposedPorts(4443) .withCreateContainerCmdModifier( cmd -> cmd.withEntrypoint("/bin/fake-gcs-server", "-scheme", "http")); + @Value("${APPNAVN}") + private String appnavn; private static void updateExternalUrlWithContainerUrl(String fakeGcsExternalUrl) throws Exception { diff --git "a/readme/h2-p\303\245logging.png" "b/readme/h2-p\303\245logging.png" new file mode 100644 index 0000000000000000000000000000000000000000..5506240219f1163858b847f6e77d450dc8a8f492 GIT binary patch literal 17600 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