Skip to content

Commit

Permalink
Aggiunti test CSV e patch pendenza
Browse files Browse the repository at this point in the history
  • Loading branch information
nardil committed Oct 29, 2019
1 parent 04515fc commit 1cc7ef7
Show file tree
Hide file tree
Showing 7 changed files with 300 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ Background:
* def codSpontaneo = 'SPONTANEO'
* def codDovuto = 'DOVUTO'
* def idOperatoreSpid = 'RSSMRA30A01H501I'
* def idOperatoreSpid2 = 'RSSMRA30A01H502I'

* def basicAutenticationHeader = getBasicAuthenticationHeader( { username: govpay_backoffice_user, password: govpay_backoffice_password } )
* def gpAdminBasicAutenticationHeader = getBasicAuthenticationHeader( { username: govpay_backoffice_user, password: govpay_backoffice_password } )
* def idA2ABasicAutenticationHeader = getBasicAuthenticationHeader( { username: idA2A, password: 'password' } )
* def idA2A2BasicAutenticationHeader = getBasicAuthenticationHeader( { username: idA2A2, password: 'password' } )
* def backofficeBaseurl = getGovPayApiBaseUrl({api: 'backoffice', versione: 'v1', autenticazione: 'basic'})
* def operatoreSpidAutenticationHeader = {'X-SPID-FISCALNUMBER': 'RSSMRA30A01H501I','X-SPID-NAME': 'Mario','X-SPID-FAMILYNAME': 'Rossi','X-SPID-EMAIL': 'mrossi@mailserver.host.it'}
* def operatoreSpid2AutenticationHeader = {'X-SPID-FISCALNUMBER': 'RSSMRA30A01H502I','X-SPID-NAME': 'Mario','X-SPID-FAMILYNAME': 'Verdi','X-SPID-EMAIL': 'mverdi@mailserver.host.it'}

Scenario: configurazione anagrafica base

Expand All @@ -50,6 +52,38 @@ And request operatoreSpid
When method put
Then assert responseStatus == 200 || responseStatus == 201

Given url backofficeBaseurl
And path 'ruoli', 'operatore'
And headers basicAutenticationHeader
And request
"""
{
"acl": [
{ "servizio": "Pagamenti", "autorizzazioni": [ "R", "W" ] },
{ "servizio": "Pendenze", "autorizzazioni": [ "R", "W" ] }
]
}
"""
When method put
Then assert responseStatus == 200 || responseStatus == 201


Given url backofficeBaseurl
And path 'operatori', idOperatoreSpid2
And headers basicAutenticationHeader
And request
"""
{
"ragioneSociale": "Mario Verdi",
"domini": ["*"],
"tipiPendenza": ["*"],
"acl": null,
"ruoli": ["operatore"],
"abilitato": true
}
"""
When method put
Then assert responseStatus == 200 || responseStatus == 201

#### creazione intermediario
* def intermediario = read('classpath:configurazione/v1/msg/intermediario.json')
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"causale": '#("Pagamento dovuto n." + idPendenza)',
"soggettoPagatore": {
"tipo": "F",
"identificativo": "RSSMRA30A01H501I",
"anagrafica": "Mario Rossi",
"email": "mario.rossi@testmail.it",
"cellulare": "+39 000-0000000"
},
"importo": 100.99,
"dataValidita": "2900-12-31",
"dataScadenza": "2999-12-31",
"tassonomiaAvviso": "Servizi erogati dal comune",
"idDominio": '#(idDominio)',
"voci": [
{
"idVocePendenza": '1',
"importo": 100.99,
"descrizione": "Diritti e segreteria",
"codEntrata": "SEGRETERIA"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Feature: Annullamento di una pendenza da console

Background:

* callonce read('classpath:utils/common-utils.feature')
* callonce read('classpath:configurazione/v1/anagrafica.feature')

* def idPendenza = getCurrentTimeMillis()
* def pendenzeBaseurl = getGovPayApiBaseUrl({api: 'backoffice', versione: 'v1', autenticazione: 'basic'})
* def backofficeBasicBaseurl = getGovPayApiBaseUrl({api: 'backoffice', versione: 'v1', autenticazione: 'basic'})
* def pendenzaPut = read('msg/pendenza-put_monovoce_riferimento.json')
Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
And request pendenzaPut
When method put
Then status 201

Scenario: Annullamento con operatore autorizzato per ruolo

* def backofficeBasicBaseurl = getGovPayApiBaseUrl({api: 'backoffice', versione: 'v1', autenticazione: 'spid'})

Given url backofficeBasicBaseurl
And path '/pendenze', idA2A, idPendenza
And headers operatoreSpid2AutenticationHeader
And request
"""
[
{ "op":"REPLACE","path":"/stato","value":"ANNULLATA"},
{"op":"REPLACE","path":"/descrizioneStato","value":"Test annullamento"}
]
"""
When method patch
Then status 200

Scenario: Annullamento con operatore autorizzato per acl

* def backofficeBasicBaseurl = getGovPayApiBaseUrl({api: 'backoffice', versione: 'v1', autenticazione: 'spid'})

Given url backofficeBasicBaseurl
And path '/pendenze', idA2A, idPendenza
And headers operatoreSpidAutenticationHeader
And request
"""
[
{ "op":"REPLACE","path":"/stato","value":"ANNULLATA"},
{"op":"REPLACE","path":"/descrizioneStato","value":"Test annullamento"}
]
"""
When method patch
Then status 200
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<#assign csvFormat = class["org.apache.commons.csv.CSVFormat"].newFormat(';')>
<#assign csvFormat = csvFormat.withQuote('"')>
<#assign csvUtils = class["it.govpay.core.utils.CSVUtils"].getInstance(csvFormat)>
<#assign csvRecord = csvUtils.getCSVRecord(lineaCsvRichiesta)>
{
"idA2A": ${csvUtils.toJsonValue(csvRecord, 0)},
"idPendenza": ${csvUtils.toJsonValue(csvRecord, 1)},
"idDominio": ${csvUtils.toJsonValue(csvRecord, 2)},
"idTipoPendenza": ${csvUtils.toJsonValue(csvRecord, 3)},
"idUnitaOperativa": ${csvUtils.toJsonValue(csvRecord, 4)},
"causale": ${csvUtils.toJsonValue(csvRecord, 5)},
"annoRiferimento": ${csvUtils.toJsonValue(csvRecord, 6)},
"cartellaPagamento": ${csvUtils.toJsonValue(csvRecord, 7)},
"datiAllegati" : {
"testAccenti": "òàáâãäåæçèéêëìíîï",
"testCaratteri" : "!#$%&'()*+,-./",
<#if !csvUtils.isEmpty(csvRecord, 8)>"datiAllegatiCSV": ${csvRecord.get(8)}</#if>
},

"direzione": ${csvUtils.toJsonValue(csvRecord, 9)},
"divisione": ${csvUtils.toJsonValue(csvRecord, 10)},
"importo": ${csvUtils.toJsonValue(csvRecord, 11)},
"dataValidita": ${csvUtils.toJsonValue(csvRecord, 12)},
"dataScadenza": ${csvUtils.toJsonValue(csvRecord, 13)},
"tassonomiaAvviso": ${csvUtils.toJsonValue(csvRecord, 14)},
"soggettoPagatore": {
"tipo": ${csvUtils.toJsonValue(csvRecord, 15)},
"identificativo": ${csvUtils.toJsonValue(csvRecord, 16)},
"anagrafica": ${csvUtils.toJsonValue(csvRecord, 17)},
"indirizzo": ${csvUtils.toJsonValue(csvRecord, 18)},
"civico": ${csvUtils.toJsonValue(csvRecord, 19)},
"cap": ${csvUtils.toJsonValue(csvRecord, 20)},
"localita": ${csvUtils.toJsonValue(csvRecord, 21)},
"provincia": ${csvUtils.toJsonValue(csvRecord, 22)},
"nazione": ${csvUtils.toJsonValue(csvRecord, 23)},
"email": ${csvUtils.toJsonValue(csvRecord, 24)},
"cellulare": ${csvUtils.toJsonValue(csvRecord, 25)}
},
"voci": [
{
"idVocePendenza": ${csvUtils.toJsonValue(csvRecord, 26)},
"importo": ${csvUtils.toJsonValue(csvRecord, 27)},
"descrizione": ${csvUtils.toJsonValue(csvRecord, 28)},
<#if !csvUtils.isEmpty(csvRecord, 33)>
"tipoEntrata": ${csvUtils.toJsonValue(csvRecord, 33)}
<#else>
"ibanAccredito": ${csvUtils.toJsonValue(csvRecord, 29)},
"ibanAppoggio": ${csvUtils.toJsonValue(csvRecord, 30)},
"tipoContabilita": ${csvUtils.toJsonValue(csvRecord, 31)},
"codiceContabilita": ${csvUtils.toJsonValue(csvRecord, 32)}
</#if>
}
<#if !csvUtils.isEmpty(csvRecord, 34)>
,{
"idVocePendenza": ${csvUtils.toJsonValue(csvRecord, 34)},
"importo": ${csvUtils.toJsonValue(csvRecord, 35)},
"descrizione": ${csvUtils.toJsonValue(csvRecord, 36)},
<#if !csvUtils.isEmpty(csvRecord, 41)>
"tipoEntrata": ${csvUtils.toJsonValue(csvRecord, 41)}
<#else>
"ibanAccredito": ${csvUtils.toJsonValue(csvRecord, 37)},
"ibanAppoggio": ${csvUtils.toJsonValue(csvRecord, 38)},
"tipoContabilita": ${csvUtils.toJsonValue(csvRecord, 39)},
"codiceContabilita": ${csvUtils.toJsonValue(csvRecord, 40)}
</#if>
}
</#if>
<#if !csvUtils.isEmpty(csvRecord, 42)>
,{
"idVocePendenza": ${csvUtils.toJsonValue(csvRecord, 42)},
"importo": ${csvUtils.toJsonValue(csvRecord, 43)},
"descrizione": ${csvUtils.toJsonValue(csvRecord, 44)},
<#if !csvUtils.isEmpty(csvRecord, 49)>
"tipoEntrata": ${csvUtils.toJsonValue(csvRecord, 49)}
<#else>
"ibanAccredito": ${csvUtils.toJsonValue(csvRecord, 45)},
"ibanAppoggio": ${csvUtils.toJsonValue(csvRecord, 46)},
"tipoContabilita": ${csvUtils.toJsonValue(csvRecord, 47)},
"codiceContabilita": ${csvUtils.toJsonValue(csvRecord, 48)}
</#if>
}
</#if>
<#if !csvUtils.isEmpty(csvRecord, 50)>
,{
"idVocePendenza": ${csvUtils.toJsonValue(csvRecord, 50)},
"importo": ${csvUtils.toJsonValue(csvRecord, 51)},
"descrizione": ${csvUtils.toJsonValue(csvRecord, 52)},
<#if !csvUtils.isEmpty(csvRecord, 57)>
"tipoEntrata": ${csvUtils.toJsonValue(csvRecord, 57)}
<#else>
"ibanAccredito": ${csvUtils.toJsonValue(csvRecord, 53)},
"ibanAppoggio": ${csvUtils.toJsonValue(csvRecord, 54)},
"tipoContabilita": ${csvUtils.toJsonValue(csvRecord, 55)},
"codiceContabilita": ${csvUtils.toJsonValue(csvRecord, 56)}
</#if>
}
</#if>
<#if !csvUtils.isEmpty(csvRecord, 58)>
,{
"idVocePendenza": ${csvUtils.toJsonValue(csvRecord, 58)},
"importo": ${csvUtils.toJsonValue(csvRecord, 59)},
"descrizione": ${csvUtils.toJsonValue(csvRecord, 60)},
<#if !csvUtils.isEmpty(csvRecord, 85)>
"tipoEntrata": ${csvUtils.toJsonValue(csvRecord, 65)}
<#else>
"ibanAccredito": ${csvUtils.toJsonValue(csvRecord, 61)},
"ibanAppoggio": ${csvUtils.toJsonValue(csvRecord, 62)},
"tipoContabilita": ${csvUtils.toJsonValue(csvRecord, 63)},
"codiceContabilita": ${csvUtils.toJsonValue(csvRecord, 64)}
</#if>
}
</#if>
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
idA2A;idPendenza;idDominio;tipoPendenza;idUnitaOperativa;causale;annoRiferimento;cartellaPagamento;datiAllegati;direzione;divisione;importo;dataValidita;dataScadenza;tassonomiaAvviso;tipoSoggettoPagatore;identificativoPagatore;anagraficaPagatore;indirizzoPagatore;civicoPagatore;capPagatore;localitaPagatore;provinciaPagatore;nazionePagatore;emailPagatore;cellularePagatore;idVoce1;importoVoce1;descrizioneVoce1;ibanAccreditoVoce1;ibanAppoggioVoce1;tipoContabilitaVoce1;codiceContabilitaVoce1;tipoVoce1;idVoce2;importoVoce2;descrizioneVoce2;ibanAccreditoVoce2;ibanAppoggioVoce2;tipoContabilitaVoce2;codiceContabilitaVoce2;tipoVoce2;idVoce3;importoVoce3;descrizioneVoce3;ibanAccreditoVoce3;ibanAppoggioVoce3;tipoContabilitaVoce3;codiceContabilitaVoce3;tipoVoce3;idVoce4;importoVoce4;descrizioneVoce4;ibanAccreditoVoce4;ibanAppoggioVoce4;tipoContabilitaVoce4;codiceContabilitaVoce4;tipoVoce4;idVoce5;importoVoce5;descrizioneVoce5;ibanAccreditoVoce5;ibanAppoggioVoce5;tipoContabilitaVoce5;codiceContabilitaVoce5;tipoVoce5
{idA2A};{idPendenza};{idDominio};{tipoPendenza};;Tassa Passo Carrabile n. abc00000;2010;CRT-001;"{ ""foo"": ""baz"", ""bar"": true }";;;{importo};2019-12-30;2020-12-30;Servizi erogati da altri enti;F;DRCGNN12A46A326K;Giovanna D'Arco;Viale Monterosa;11Bis;340;Roma;RM;IT;laPulzelladOrleans@yahoo.fr;;1;{importo_voce};Tassa Passo Carrabile n. abc00000;{ibanAccredito};;ALTRO;CodiceContabilita;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Original file line number Diff line number Diff line change
Expand Up @@ -734,3 +734,78 @@ And request tracciato
When method post
Then status 415

@debug
Scenario: Caricamento di un tracciato in formato CSV valido con separatore non standard

* set patchValue.freemarkerRequest = encodeBase64InputStream(read('msg/freemarker-request-separatore.ftl'))
* set patchValue.freemarkerResponse = encodeBase64InputStream(read('msg/freemarker-response.ftl'))

Given url backofficeBaseurl
And path '/configurazioni'
And headers basicAutenticationHeader
And request
"""
[
{
op: "REPLACE",
path: "/tracciatoCsv",
value: #(patchValue)
}
]
"""
When method patch
Then status 200

* call read('classpath:configurazione/v1/operazioni-resetCache.feature')

* def idPendenza = getCurrentTimeMillis()
* def tracciato = karate.readAsString('classpath:test/api/backoffice/v1/tracciati/post/msg/tracciato-pendenze-separatore.csv')
* def tracciato = replace(tracciato,"{idA2A}", idA2A);
* def tracciato = replace(tracciato,"{idPendenza}", idPendenza);
* def tracciato = replace(tracciato,"{idDominio}", idDominio);
* def tracciato = replace(tracciato,"{ibanAccredito}", ibanAccredito);
* def tracciato = replace(tracciato,"{tipoPendenza}", codEntrataSegreteria);
* def tracciato = replace(tracciato,"{importo}", importo);
* def tracciato = replace(tracciato,"{importo_voce}", importo_voce);

Given url backofficeBaseurl
And path 'pendenze', 'tracciati', idDominio, codEntrataSegreteria
And headers { 'Content-Type' : 'text/csv' }
And headers basicAutenticationHeader
And request tracciato
When method post
Then status 201

* def idTracciato = response.id

* call sleep(1000)

Given url backofficeBaseurl
And path 'pendenze', 'tracciati', idTracciato
And headers basicAutenticationHeader
And retry until response.stato == 'ESEGUITO'
When method get
Then match response.descrizioneStato == ''
Then match response.numeroOperazioniTotali == 1
Then match response.numeroOperazioniEseguite == 1
Then match response.numeroOperazioniFallite == 0

Given url backofficeBaseurl
And path 'pendenze', 'tracciati', idTracciato, 'stampe'
And headers basicAutenticationHeader
When method get
Then status 200

Given url backofficeBaseurl
And path 'pendenze', 'tracciati', idTracciato, 'richiesta'
And headers basicAutenticationHeader
When method get
Then status 200

Given url backofficeBaseurl
And path 'pendenze', 'tracciati', idTracciato, 'esito'
And headers basicAutenticationHeader
When method get
Then status 200


2 changes: 1 addition & 1 deletion src/main/resources/db/sql/init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ insert into sonde(nome, classe, soglia_warn, soglia_error) values ('avvisatura-d
insert into sonde(nome, classe, soglia_warn, soglia_error) values ('spedizione-promemoria', 'org.openspcoop2.utils.sonde.impl.SondaBatch', 86400000, 172800000);

-- Configurazione Generale
INSERT INTO configurazione (nome,valore) VALUES ('giornale_eventi','{"apiEnte":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiPagamento":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiRagioneria":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiBackoffice":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiPagoPA":{"letture":{"log":"SEMPRE","dump":"SOLO_ERRORE"},"scritture":{"log":"SEMPRE","dump":"SOLO_ERRORE"}},"apiPendenze":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}}}');
INSERT INTO configurazione (nome,valore) VALUES ('giornale_eventi','{"apiEnte":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiPagamento":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiRagioneria":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiBackoffice":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SOLO_ERRORE","dump":"SOLO_ERRORE"}},"apiPagoPA":{"letture":{"log":"SEMPRE","dump":"SOLO_ERRORE"},"scritture":{"log":"SEMPRE","dump":"SOLO_ERRORE"}},"apiPendenze":{"letture":{"log":"MAI","dump":"MAI"},"scritture":{"log":"SEMPRE","dump":"SOLO_ERRORE"}}}');

0 comments on commit 1cc7ef7

Please sign in to comment.