Skip to content

Commit

Permalink
OK-443 päivitetty client-kirjaston readme ja käyttöoikeusattribuutit …
Browse files Browse the repository at this point in the history
…yhdenmukaiseen järjestykseen, paranneltu integraatiotestiä
  • Loading branch information
marjakari committed Dec 16, 2024
1 parent 0bd6f10 commit 2ab7fd7
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 18 deletions.
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.246.562.10.00000000000000006666"), 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 @@ -118,7 +118,7 @@ class RaportointiApiIntegraatioTest extends BaseIntegraatioTesti {
lahetysTunniste = lahetysTunniste,
prioriteetti = prioriteetti,
sailytysaika = sailytysAika,
kayttooikeusRajoitukset = Optional.of(java.util.List.of(KayttooikeusImpl(Optional.of(LAPSI_ORGANISAATIO), Optional.of(OIKEUS)))),
kayttooikeusRajoitukset = Optional.of(java.util.List.of(KayttooikeusImpl(Optional.of(OIKEUS), Optional.of(LAPSI_ORGANISAATIO)))),
metadata = Optional.of(java.util.Map.of("avain", java.util.List.of("arvo1", "arvo2"))),
idempotencyKey = Optional.ofNullable(idempotencyKey)
)
Expand Down Expand Up @@ -154,7 +154,7 @@ class RaportointiApiIntegraatioTest extends BaseIntegraatioTesti {
.andExpect(MockMvcResultMatchers.content().string("OK"));

/**
* Lähetyksien haku
* Testataan lähetyksien haku eri skenaarioilla ja hakuparametreilla
*/
@WithAnonymousUser
@Test def testGetLahetyksetAnonymous(): Unit =
Expand Down Expand Up @@ -292,10 +292,19 @@ class RaportointiApiIntegraatioTest extends BaseIntegraatioTesti {
.accept(MediaType.APPLICATION_JSON_VALUE))
.andExpect(status().isOk).andReturn()
val response = objectMapper.readValue(result.getResponse.getContentAsString(StandardCharset.UTF_8), classOf[PalautaLahetyksetSuccessResponse])
val tunnisteet = response.lahetykset.asScala.map(lahetys => lahetys.lahetysTunniste).toSet
// lähettävällä palvelulla "testipalvelu" löytyy 3 LocalUtilissa alustettua lähetystä
Assertions.assertEquals(3, response.lahetykset.asScala.size)

// luetaan auditlokit ja filtteröidään lukueventit
// useamman lähetyksen katselussa tunnisteet on yhdistetty samaan merkintään pilkulla eroteltuna
val lahetyksetLogEvent = lueAuditLokiEntryt().events().asScala
.filter(e => AuditOperation.ReadLahetys.name.equals(objectMapper.readValue(e.message(), classOf[AuditLogEvent]).operation))
.map(e => objectMapper.readValue(e.message(), classOf[LueLahetysAuditLogEvent]))
.filter(e => tunnisteet.forall(e.target.lahetys.contains))
Assertions.assertTrue(lahetyksetLogEvent.size > 1) // muissakin testeissä on katseltu näitä iditä...
/**
* Lähetyksen haku
* Testataan yksittäisen lähetyksen haku tunnisteella
*/
@WithAnonymousUser
@Test def testGetLahetysAnonymous(): Unit =
Expand Down
42 changes: 39 additions & 3 deletions kirjasto/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,36 @@ 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ä

```
LuolahetysResponse luoLahetysResponse = viestinvalitysClient.luoLahetys(Lahetys.builder()
.withOtsikko("Lahetyksen otsikko")
.withLahettavaPalvelu("virkailijantyopoyta")
.withLahettaja(Optional.empty(), "noreply@opintopolku.fi")
.withNormaaliPrioriteetti()
.withSailytysaika(365)
.withLahettavanVirkailijanOid("1.2.246.562.24.1")
.build())
Viesti.builder()
.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(Vastaanottajat.builder()
.withVastaanottaja(Optional.empty(), "test@example.com")
.build())
.withKayttooikeusRajoitukset(new KayttooikeusImpl(
Optional.of("APP_VIESTINVALITYS_OPH_PAAKAYTTAJA"),
Optional.of("1.2.246.562.10.00000000001")
))
.withLahetysTunniste(lahetysTunniste.toString)
.build()
```

Tai luoda viestejä erillisinä lähetyksinä
```
LuoViestiResponse response = viestinvalitysClient.luoViesti(Viesti.builder()
.withOtsikko("testiotsikko")
Expand All @@ -27,8 +55,16 @@ Tämän jälkeen client-instanssilla voi luoda pyyntöjä jotka luovat liitteit
.withVastaanottaja(Optional.empty(), "test@example.com")
.build())
.withNormaaliPrioriteetti()
.withSailytysAika(1)
.withLahettavaPalvelu("virkailijatyopoyta")
.withSailytysAika(365)
.withLahettavaPalvelu("virkailijantyopoyta")
.withKayttooikeusRajoitukset(new KayttooikeusImpl(
Optional.of("APP_VIESTINVALITYS_OPH_PAAKAYTTAJA"),
Optional.of("1.2.246.562.10.00000000001")
))
.withLahettaja(Optional.empty(), "noreply@opintopolku.fi")
.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.
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,10 @@ public interface Vastaanottaja {
@Schema(implementation = KayttooikeusImpl.class)
public interface Kayttooikeus {

Optional<String> getOikeus();

Optional<String> getOrganisaatio();

Optional<String> getOikeus();
}
Optional<List<Kayttooikeus>> getKayttooikeusRajoitukset();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,12 @@ class MaskitBuilderImpl extends Maskit.MaskitBuilder {
* @param oikeus
*/
case class KayttooikeusImpl(
@(Schema @field)(example = "APP_ATARU_HAKEMUS_CRUD", requiredMode=RequiredMode.REQUIRED, maxLength = ViestiImpl.VIESTI_OIKEUS_MAX_PITUUS)
@BeanProperty oikeus: Optional[String],

@(Schema @field)(example = "1.2.246.562.10.240484683010", requiredMode=RequiredMode.REQUIRED, maxLength = ViestiImpl.VIESTI_ORGANISAATIO_MAX_PITUUS)
@BeanProperty organisaatio: Optional[String],

@(Schema @field)(example = "APP_ATARU_HAKEMUS_CRUD", requiredMode=RequiredMode.REQUIRED, maxLength = ViestiImpl.VIESTI_OIKEUS_MAX_PITUUS)
@BeanProperty oikeus: Optional[String],
) extends Kayttooikeus {

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,12 +309,12 @@ class ViestiValidatorTest {


@Test def testValidateKayttooikeusRajoitukset(): Unit =
val RAJOITUS = KayttooikeusImpl(Optional.of("1.2.246.562.10.00000000000000006666"), Optional.of("RAJOITUS1"))
val RAJOITUS_ORGANISAATIO_TYHJA = KayttooikeusImpl(Optional.empty, Optional.of("RAJOITUS1"))
val RAJOITUS_ORGANISAATIO_INVALID = KayttooikeusImpl(Optional.of("ei hyvä"), Optional.of("RAJOITUS1"))
val RAJOITUS_PITKA_ORGANISAATIO = KayttooikeusImpl(Optional.of(Range(0, ViestiImpl.VIESTI_ORGANISAATIO_MAX_PITUUS+1).mkString(".")), Optional.of("RAJOITUS1"))
val RAJOITUS_OIKEUS_TYHJA = KayttooikeusImpl(Optional.of("1.2.246.562.10.00000000000000006666"), Optional.empty)
val RAJOITUS_OIKEUS_PITKA = KayttooikeusImpl(Optional.of("1.2.246.562.10.00000000000000006666"), Optional.of(Range(0, ViestiImpl.VIESTI_OIKEUS_MAX_PITUUS + 1).map(i => "X").mkString("")))
val RAJOITUS = KayttooikeusImpl(Optional.of("RAJOITUS1"), Optional.of("1.2.246.562.10.00000000000000006666"))
val RAJOITUS_ORGANISAATIO_TYHJA = KayttooikeusImpl(Optional.of("RAJOITUS1"), Optional.empty)
val RAJOITUS_ORGANISAATIO_INVALID = KayttooikeusImpl(Optional.of("RAJOITUS1"), Optional.of("ei hyvä"))
val RAJOITUS_PITKA_ORGANISAATIO = KayttooikeusImpl(Optional.of("RAJOITUS1"), Optional.of(Range(0, ViestiImpl.VIESTI_ORGANISAATIO_MAX_PITUUS+1).mkString(".")))
val RAJOITUS_OIKEUS_TYHJA = KayttooikeusImpl(Optional.empty, Optional.of("1.2.246.562.10.00000000000000006666"))
val RAJOITUS_OIKEUS_PITKA = KayttooikeusImpl(Optional.of(Range(0, ViestiImpl.VIESTI_OIKEUS_MAX_PITUUS + 1).map(i => "X").mkString("")), Optional.of("1.2.246.562.10.00000000000000006666"))

// kenttä ei ole pakollinen (jos ei määritelty niin vain rekisterinpitäjä voi katsoa viestejä)
Assertions.assertEquals(Set.empty, ViestiValidator.validateKayttooikeusRajoitukset(Optional.empty))
Expand All @@ -324,7 +324,7 @@ class ViestiValidatorTest {

// rajoituksia ei voi olla määrättömästi
val rajoitukset = Range(0, ViestiImpl.VIESTI_KAYTTOOIKEUS_MAX_MAARA + 1)
.map(i => KayttooikeusImpl(Optional.of(RAJOITUS.organisaatio.get + "" + i), RAJOITUS.oikeus).asInstanceOf[Kayttooikeus]).asJava
.map(i => KayttooikeusImpl(RAJOITUS.oikeus, Optional.of(RAJOITUS.organisaatio.get + "" + i)).asInstanceOf[Kayttooikeus]).asJava
Assertions.assertEquals(Set(ViestiValidator.VALIDATION_KAYTTOOIKEUSRAJOITUS_LIIKAA), ViestiValidator.validateKayttooikeusRajoitukset(Optional.of(rajoitukset)))

// null-arvot käyttöoikeustunnistelistassa eivät ole sallittuja
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
</modules>

<properties>
<revision>1.0.0-SNAPSHOT</revision>
<revision>1.1-SNAPSHOT</revision>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<encoding>UTF-8</encoding>
Expand Down

0 comments on commit 2ab7fd7

Please sign in to comment.