Skip to content

Commit

Permalink
OK-751 käyttöoikeuskäsittelyn tehostamista, OK-443 client-kirjaston v…
Browse files Browse the repository at this point in the history
…iimeistely

OK-751
*  käyttäjän oikeudet sessioon
* tarkistetaan onko tulllut uusia käyttöoikeuksia kantaan ja päivitetään sessio tarvittaessa
* käsitellään käyttäjän käyttöoikeuksista vain ne mitä palvelusta on käytössä 
Muut
* tarkempi organisaation validointi viestirajapintaan
* integraatiotesti raportointi-apille
OK-443
* korjattu client-kirjaston login-polku ja täydennetty integraatiotestejä
* päivitetty versio
* maven flatten plugin kirjastoon
* snapshot-version kovakoodaus pois ja muuttuja tilalle
* päivitetty client-kirjaston readme ja käyttöoikeusattribuutit yhdenmukaiseen järjestykseen
* static metodit pois kirjaston java interfaceista
  • Loading branch information
marjakari authored Dec 19, 2024
1 parent 9ce49a6 commit 5c3e2d4
Show file tree
Hide file tree
Showing 53 changed files with 1,170 additions and 255 deletions.
4 changes: 2 additions & 2 deletions integraatio/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
<parent>
<groupId>fi.oph.viestinvalitys</groupId>
<artifactId>viestinvalityspalvelu</artifactId>
<version>0.1-SNAPSHOT</version>
<version>${revision}</version>
</parent>

<artifactId>integraatio</artifactId>
<packaging>jar</packaging>
<name>integraatio</name>
<version>0.1-SNAPSHOT</version>
<version>${revision}</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class BaseIntegraatioTesti {

val LOG = LoggerFactory.getLogger(this.getClass)

val localstack: LocalStackContainer = new LocalStackContainer(new DockerImageName("localstack/localstack:2.2.0"))
val localstack: LocalStackContainer = new LocalStackContainer(DockerImageName.parse("localstack/localstack:2.2.0"))
.withServices(Service.SQS, Service.SES, Service.CLOUDWATCH)
.withLogConsumer(frame => LOG.info(frame.getUtf8StringWithoutLineEnding))
.withExposedPorts(4566)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class CasSecurityConfiguration {
@Profile(Array("caslocal"))
def serviceProperties(@Value("${cas-service.service}") service: String, @Value("${cas-service.sendRenew}") sendRenew: Boolean): ServiceProperties = {
val serviceProperties = new ServiceProperties()
serviceProperties.setService(service + RaportointiAPIConstants.RAPORTOINTI_API_PREFIX +"/login/j_spring_cas_security_check")
serviceProperties.setService(service + RaportointiAPIConstants.CAS_TICKET_VALIDATION_PATH)
serviceProperties.setSendRenew(sendRenew)
serviceProperties.setAuthenticateAllArtifacts(true)
serviceProperties
Expand Down Expand Up @@ -111,7 +111,7 @@ class CasSecurityConfiguration {
def casAuthenticationFilter(authenticationManager: AuthenticationManager, serviceProperties: ServiceProperties): CasAuthenticationFilter = {
val casAuthenticationFilter = new OpintopolkuCasAuthenticationFilter(serviceProperties)
casAuthenticationFilter.setAuthenticationManager(authenticationManager)
casAuthenticationFilter.setFilterProcessesUrl(RaportointiAPIConstants.RAPORTOINTI_API_PREFIX +"/login/j_spring_cas_security_check")
casAuthenticationFilter.setFilterProcessesUrl(RaportointiAPIConstants.CAS_TICKET_VALIDATION_PATH)
casAuthenticationFilter
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ class IntegraatioTest extends BaseIntegraatioTesti {
lahetysTunniste = lahetysTunniste,
prioriteetti = prioriteetti,
sailytysaika = sailytysAika,
kayttooikeusRajoitukset = Optional.of(java.util.List.of(KayttooikeusImpl(Optional.of("1.2.3"), Optional.of("OIKEUS1")))),
kayttooikeusRajoitukset = Optional.of(java.util.List.of(KayttooikeusImpl(Optional.of("OIKEUS1"), Optional.of("1.2.246.562.10.00000000000000006666")))),
metadata = Optional.of(java.util.Map.of("avain", java.util.List.of("arvo1", "arvo2"))),
idempotencyKey = Optional.ofNullable(idempotencyKey)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ object LocalUtil {
val kayttooikeus = Kayttooikeus("APP_OIKEUS", Some("1.2.246.562.10.240484683010"))
val kantaOperaatiot = new KantaOperaatiot(DbUtil.database)
val (lahetyksia, _, _) = kantaOperaatiot.searchLahetykset(Option.empty, 20,
Option.apply(kantaOperaatiot.getKayttooikeusTunnisteet(Set(kayttooikeus).toSeq)))
Option.apply(kantaOperaatiot.getKayttooikeusTunnisteet(Set(kayttooikeus).toSeq)._1))
if(lahetyksia.isEmpty || lahetyksia.length < 3) {
// lähetyksiä massaviestillä jossa samalla viestillä useita vastaanottajia
Range(0, 20).map(counter => {
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fi.oph.viestinvalitys;

import fi.oph.viestinvalitys.vastaanotto.model.*;
import fi.oph.viestinvalitys.vastaanotto.resource.VastaanottajaResponseImpl;
import io.netty.handler.codec.http.cookie.Cookie;
import org.asynchttpclient.Dsl;
import org.asynchttpclient.AsyncHttpClient;
Expand All @@ -12,7 +11,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;

import java.io.ByteArrayInputStream;
import java.util.Optional;
import java.util.List;
import java.util.Iterator;
Expand Down Expand Up @@ -42,7 +40,7 @@ private String getSessionCookie() throws Exception {

private ViestinvalitysClient getClient() throws Exception {
String port = environment.getProperty("local.server.port");
return ViestinvalitysClient.builder()
return ClientBuilder.viestinvalitysClientBuilder()
.withEndpoint("http://localhost:" + port)
.withSessionId(this.getSessionCookie())
.withCallerId(CALLER_ID)
Expand All @@ -51,7 +49,8 @@ private ViestinvalitysClient getClient() throws Exception {

@Test
public void testLuoLahetys() throws Exception {
LuoLahetysSuccessResponse response = this.getClient().luoLahetys(Lahetys.builder()
LuoLahetysSuccessResponse response = this.getClient().luoLahetys(
ViestinvalitysBuilder.lahetysBuilder()
.withOtsikko("otsikko")
.withLahettavaPalvelu("palvelu")
.withLahettaja(Optional.empty(), "[email protected]")
Expand All @@ -62,7 +61,7 @@ public void testLuoLahetys() throws Exception {

@Test
public void testLuoLiite() throws Exception {
LuoLiiteSuccessResponse response = this.getClient().luoLiite(Liite.builder()
LuoLiiteSuccessResponse response = this.getClient().luoLiite(ViestinvalitysBuilder.liiteBuilder()
.withFileName("test.png")
.withBytes(getClass().getResourceAsStream("/screenshot.png").readAllBytes())
.withContentType("image/png")
Expand All @@ -71,19 +70,22 @@ public void testLuoLiite() throws Exception {

@Test
public void testLuoViesti() throws Exception {
LuoViestiSuccessResponse response = this.getClient().luoViesti(Viesti.builder()
LuoViestiSuccessResponse response = this.getClient().luoViesti(ViestinvalitysBuilder.viestiBuilder()
.withOtsikko("otsikko")
.withTextSisalto("sisältö")
.withKielet("fi")
.withVastaanottajat(Vastaanottajat.builder()
.withVastaanottajat(ViestinvalitysBuilder.vastaanottajatBuilder()
.withVastaanottaja(Optional.empty(), "[email protected]")
.build())
.withMetadatat(Metadatat.builder()
.withMetadatat(ViestinvalitysBuilder.metadatatBuilder()
.withMetadata("avain", List.of("arvo1", "arvo2"))
.build())
.withMaskit(Maskit.builder()
.withMaskit(ViestinvalitysBuilder.maskitBuilder()
.withMaski("salaisuus", "maskattu")
.build())
.withKayttooikeusRajoitukset(ViestinvalitysBuilder.kayttooikeusrajoituksetBuilder()
.withKayttooikeus("APP_HAKEMUS_CRUD", "1.2.246.562.10.240484683010")
.build())
.withLahettavaPalvelu("palvelu")
.withNormaaliPrioriteetti()
.withLahettaja(Optional.empty(), "[email protected]")
Expand All @@ -95,17 +97,17 @@ public void testLuoViesti() throws Exception {
public void testLiitaLiite() throws Exception {
ViestinvalitysClient client = this.getClient();

LuoLiiteSuccessResponse liiteResponse = client.luoLiite(Liite.builder()
LuoLiiteSuccessResponse liiteResponse = client.luoLiite(ViestinvalitysBuilder.liiteBuilder()
.withFileName("test.png")
.withBytes(getClass().getResourceAsStream("/screenshot.png").readAllBytes())
.withContentType("image/png")
.build());

LuoViestiSuccessResponse viestiResponse = client.luoViesti(Viesti.builder()
LuoViestiSuccessResponse viestiResponse = client.luoViesti(ViestinvalitysBuilder.viestiBuilder()
.withOtsikko("otsikko")
.withTextSisalto("sisältö")
.withKielet("fi")
.withVastaanottajat(Vastaanottajat.builder()
.withVastaanottajat(ViestinvalitysBuilder.vastaanottajatBuilder()
.withVastaanottaja(Optional.empty(), "[email protected]")
.build())
.withLiitteidenTunnisteet(List.of(liiteResponse.getLiiteTunniste()))
Expand All @@ -120,11 +122,11 @@ public void testLiitaLiite() throws Exception {
public void testGetVastaanottajat() throws Exception {
ViestinvalitysClient client = this.getClient();

LuoViestiSuccessResponse viestiResponse = client.luoViesti(Viesti.builder()
LuoViestiSuccessResponse viestiResponse = client.luoViesti(ViestinvalitysBuilder.viestiBuilder()
.withOtsikko("otsikko")
.withTextSisalto("sisältö")
.withKielet("fi")
.withVastaanottajat(Vastaanottajat.builder()
.withVastaanottajat(ViestinvalitysBuilder.vastaanottajatBuilder()
.withVastaanottaja(Optional.empty(), "[email protected]")
.withVastaanottaja(Optional.empty(), "[email protected]")
.build())
Expand Down
48 changes: 42 additions & 6 deletions kirjasto/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Kirjaston avulla asiakasjärjestelmät voivat käyttää viestinvälityspalvelua
Client instanssi luodaan builderilla, esim:

```
ViestinvalitysClient client = ViestinvalitysClient.builder()
ViestinvalitysClient client = ClientBuilder.viestinvalitysClientBuilder()
.withEndpoint(<viestinvälityspalvelun osoite, esim: "https://viestinvalitys.hahtuvaopintopolku.fi">)
.withUsername(<käyttäjätunnus>)
.withPassword(<salana>)
Expand All @@ -16,19 +16,55 @@ Client instanssi luodaan builderilla, esim:
.build()
```

Tämän jälkeen client-instanssilla voi luoda pyyntöjä jotka luovat liitteitä, lähetyksiä, ja viestejä, sekä tarkastelevat näiden tilaa, Esim. viesti luodaan seuraavasti:
Tämän jälkeen client-instanssilla voi luoda pyyntöjä jotka luovat liitteitä, lähetyksiä, ja viestejä, sekä tarkastelevat näiden tilaa, Esim. seuraavasti:

Voidaan joko luoda ensin lähetys ja liittää samaan lähetykseen useita viestejä

```
LuoViestiResponse response = viestinvalitysClient.luoViesti(Viesti.builder()
LuolahetysResponse luoLahetysResponse = viestinvalitysClient.luoLahetys(
ViestinvalitysBuilder.lahetysBuilder()
.withOtsikko("Lahetyksen otsikko")
.withLahettavaPalvelu("virkailijantyopoyta")
.withLahettaja(Optional.empty(), "[email protected]")
.withNormaaliPrioriteetti()
.withSailytysaika(365)
.withLahettavanVirkailijanOid("1.2.246.562.24.1")
.build())
ViestinvalitysBuilder.viestiBuilder()
.withOtsikko("viestin otsikko")
.withHtmlSisalto("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><title></title></head><body style=\"margin: 0; font-family: 'Open Sans', Arial, sans-serif;\"><H1>Otsikko</h1><p>Viestin sisältö</p><p>Ystävällisin terveisin<br/>Opintopolku</p></body></html>")
.withKielet("fi")
.withVastaanottajat(ViestinvalitysBuilder.vastaanottajatBuilder()
.withVastaanottaja(Optional.empty(), "[email protected]")
.build())
.withKayttooikeusRajoitukset(ViestinvalitysBuilder.kayttooikeusrajoituksetBuilder()
.withKayttooikeus("APP_HAKEMUS_CRUD", "1.2.246.562.10.240484683010")
.build())
.withLahetysTunniste(lahetysTunniste.toString)
.build()
```

Tai luoda viestejä erillisinä lähetyksinä
```
LuoViestiResponse response = viestinvalitysClient.luoViesti(
ViestinvalitysBuilder.viestiBuilder()
.withOtsikko("testiotsikko")
.withTextSisalto("testisisältö")
.withKielet("fi")
.withVastaanottajat(Vastaanottajat.builder()
.withVastaanottajat(ViestinvalitysBuilder.vastaanottajatBuilder()
.withVastaanottaja(Optional.empty(), "[email protected]")
.build())
.withNormaaliPrioriteetti()
.withSailytysAika(1)
.withLahettavaPalvelu("virkailijatyopoyta")
.withSailytysAika(365)
.withLahettavaPalvelu("virkailijantyopoyta")
.withKayttooikeusRajoitukset(ViestinvalitysBuilder.kayttooikeusrajoituksetBuilder()
.withKayttooikeus("APP_HAKEMUS_CRUD", "1.2.246.562.10.240484683010")
.build())
.withLahettaja(Optional.empty(), "[email protected]")
.build())
```
### Kirjaston päivitys

Jos kirjastoa on tarve muuttaa tai päivittää, nosta projektin parent-pomissa oleva revision
ja päivitä uusi snapshot-numero clientia käyttäviin palveluihin.
30 changes: 27 additions & 3 deletions kirjasto/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
<parent>
<groupId>fi.oph.viestinvalitys</groupId>
<artifactId>viestinvalityspalvelu</artifactId>
<version>0.1-SNAPSHOT</version>
<version>${revision}</version>
</parent>

<artifactId>kirjasto</artifactId>
<packaging>jar</packaging>
<name>kirjasto</name>
Expand All @@ -19,7 +18,7 @@
<dependency>
<groupId>fi.oph.viestinvalitys</groupId>
<artifactId>lahetysrajapinta</artifactId>
<version>0.1-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>fi.vm.sade.java-utils</groupId>
Expand Down Expand Up @@ -103,6 +102,31 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
</configuration>
<executions>
<!-- enable flattening -->
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<!-- ensure proper cleanup -->
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package fi.oph.viestinvalitys;

public class ClientBuilder {
public static ViestinvalitysClient.EndpointBuilder viestinvalitysClientBuilder() {
return new ViestinvalitysClientBuilderImpl();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ public interface ViestinvalitysClient {

public Iterator<List<VastaanottajaResponse>> getVastaanottajat(UUID lahetysTunniste, Optional<Integer> enintaan);

public static EndpointBuilder builder() {
return new ViestinvalitysClientBuilderImpl();
}

interface EndpointBuilder {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class ViestinvalitysClientBuilderImpl(config: ViestinvalitysClientConfig) extend
ViestinvalitysClientBuilderImpl(config.copy(casEndpoint = casEndpoint))

override def build(): ViestinvalitysClient =
val casConfig = new CasConfig.CasConfigBuilder(config.username, config.password, config.casEndpoint, config.endpoint + "/lahetys/j_spring_cas_security_check", "CSRF", config.callerId, "")
val casConfig = new CasConfig.CasConfigBuilder(config.username, config.password, config.casEndpoint, config.endpoint + LahetysAPIConstants.CAS_TICKET_VALIDATION_PATH, "CSRF", config.callerId, "")
.setJsessionName("JSESSIONID")
.build();
val casClient = {
Expand Down
2 changes: 1 addition & 1 deletion kuormatestaus/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ function getViestiPayload(korkea, liite, testdataItem) {
' "sailytysaika": 365,\n' +
' "kayttooikeusRajoitukset": [{\n' +
' "oikeus": "APP_ATARU_HAKEMUS_CRUD",\n' +
' "organisaatio": "1.2.246.562.00.000000000000000066' + Math.floor(Math.random()*200) + '"\n' +
' "organisaatio": "1.2.246.562.10.000000000000000066' + Math.floor(Math.random()*200) + '"\n' +
' }],\n' +
' "metadata": {\n' +
' "key": ["value"]\n' +
Expand Down
2 changes: 1 addition & 1 deletion lahetysrajapinta/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>fi.oph.viestinvalitys</groupId>
<artifactId>viestinvalityspalvelu</artifactId>
<version>0.1-SNAPSHOT</version>
<version>${revision}</version>
</parent>

<artifactId>lahetysrajapinta</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package fi.oph.viestinvalitys.vastaanotto.model;

import java.util.Optional;
import java.util.List;
import fi.oph.viestinvalitys.vastaanotto.model.Viesti.Kayttooikeus;

public interface Kayttooikeusrajoitukset {
interface KayttooikeusrajoituksetBuilder {

KayttooikeusrajoituksetBuilder withKayttooikeus(String oikeus, String organisaatio);

List<Kayttooikeus> build();
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ public interface Lahettaja {

Optional<Integer> getSailytysaika();

static OtsikkoBuilder builder() {
return new LahetysBuilderImpl();
}

interface OtsikkoBuilder {
LahettavaPalveluBuilder withOtsikko(String otsikko);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@ public interface Liite {

byte[] getBytes();

public static TiedostoNimiBuilder builder() {
return new LiiteBuilderImpl();
}

interface TiedostoNimiBuilder {
BytesBuilder withFileName(String fileName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,5 @@ interface MaskitBuilder {

List<Maski> build();
}

static MaskitBuilder builder() {
return new MaskitBuilderImpl();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,5 @@ interface MetadatatBuilder {

Map<String, List<String>> build();
}

static MetadatatBuilder builder() {
return new MetadatatBuilderImpl();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,4 @@ interface VastaanottajatBuilder {
List<Viesti.Vastaanottaja> build();
}

static VastaanottajatBuilder builder() {
return new VastaanottajatBuilderImpl();
}
}
Loading

0 comments on commit 5c3e2d4

Please sign in to comment.