197 lines
7.7 KiB
Plaintext
197 lines
7.7 KiB
Plaintext
*****************************************************************************************
|
||
* test_autopass_driver.prg
|
||
* Driver .prg fara forma pentru US-003 (client AutopassClient) - PRD ROAAUTO-1.0,
|
||
* sectiunea "Acoperire de test": "driver .prg fara forma (1 comanda hand-built) - E2E:
|
||
* acopera encoding/headers/timeouts izolat".
|
||
*
|
||
* Ruleaza autonom din Command Window:
|
||
* DO Programe\test_autopass_driver.prg
|
||
*
|
||
* Ce face:
|
||
* (a) apeleaza autopass_test_conexiune() si afiseaza rezultatul (ping)
|
||
* (b) construieste MANUAL (fara Oracle) 2 obiecte comanda in formatul asteptat de
|
||
* AutopassClient.EnviaLot - una din ele cu operatii cu diacritice in denumire,
|
||
* ca sa acopere codepath-ul de encoding
|
||
* (c) apeleaza Valideaza (dry-run) pe cele 2 comenzi
|
||
* (d) doar cu confirmare MESSAGEBOX explicita SI doar daca mediul citit din config e
|
||
* "test", apeleaza si TrimiteLot - altfel se opreste dupa dry-run
|
||
* (e) afiseaza raspunsurile per element (index, id_ordl, status, motiv, submission_id)
|
||
*
|
||
* Nu se apeleaza din meniul aplicatiei - e un instrument de diagnostic, lansat manual.
|
||
*****************************************************************************************
|
||
|
||
CLOSE ALL
|
||
CLEAR
|
||
|
||
SET PROCEDURE TO Programe\oproceduri_autopass.prg ADDITIVE
|
||
SET PROCEDURE TO COMUN\utile\nfjson\nfjsoncreate.prg ADDITIVE
|
||
SET PROCEDURE TO COMUN\utile\nfjson\nfjsonread.prg ADDITIVE
|
||
|
||
LOCAL loPing, oClient, loComenzi, loRezValidare, loRezTrimite, loConfig
|
||
LOCAL lnAlegere, i, loItem
|
||
|
||
?'============================================================================='
|
||
?'AUTOPASS - driver de test fara forma'
|
||
?'============================================================================='
|
||
|
||
*-- (a) test conexiune (GET /v1/ping) -------------------------------------------------
|
||
?
|
||
?'--- (a) autopass_test_conexiune() ---'
|
||
|
||
loPing = autopass_test_conexiune()
|
||
|
||
?' lSucces : ' + TRANSFORM(loPing.lSucces)
|
||
?' cMediu : ' + loPing.cMediu
|
||
?' lAutentificatCuCheie : ' + TRANSFORM(loPing.lAutentificatCuCheie)
|
||
?' lAreCredsTest : ' + TRANSFORM(loPing.lAreCredsTest)
|
||
?' lAreCredsProd : ' + TRANSFORM(loPing.lAreCredsProd)
|
||
?' cEroare : ' + loPing.cEroare
|
||
|
||
IF !loPing.lSucces
|
||
?
|
||
?'Ping esuat - verifica AUTOPASS_URL/AUTOPASS_KEY in tabelul optiuni inainte de a continua.'
|
||
?'Driverul continua totusi (poate testa doar constructia payload-ului si Valideaza va esua controlat).'
|
||
ENDIF
|
||
|
||
*-- (b) construim manual 2 "comenzi", fara Oracle --------------------------------------
|
||
?
|
||
?'--- (b) construire manuala a comenzilor de test ---'
|
||
|
||
loComenzi = Createobject('Collection')
|
||
|
||
*-- comanda 1: fara diacritice, caz de baza
|
||
loItem = Createobject('empty')
|
||
AddProperty(loItem, 'id_ordl', 900001)
|
||
AddProperty(loItem, 'vin', 'WVWZZZ1KZAW000001')
|
||
AddProperty(loItem, 'nrinmat', 'B99TST01')
|
||
AddProperty(loItem, 'data_prestatie', '2026-07-01')
|
||
AddProperty(loItem, 'odometru_final', '123456')
|
||
|
||
LOCAL ARRAY laPrestatii1(2)
|
||
laPrestatii1(1) = Createobject('empty')
|
||
AddProperty(laPrestatii1(1), 'cod_op_service', 'SCH001')
|
||
AddProperty(laPrestatii1(1), 'denumire', 'Schimb ulei motor')
|
||
laPrestatii1(2) = Createobject('empty')
|
||
AddProperty(laPrestatii1(2), 'cod_op_service', 'FRN010')
|
||
AddProperty(laPrestatii1(2), 'denumire', 'Verificare frane')
|
||
AddProperty(loItem, 'prestatii(2)')
|
||
Acopy(laPrestatii1, loItem.prestatii)
|
||
|
||
AddProperty(loItem, 'obs', autopass_obs(90001, 190001))
|
||
|
||
loComenzi.Add(loItem)
|
||
|
||
*-- comanda 2: cu diacritice in denumirea operatiei - acopera codepath-ul de encoding
|
||
loItem = Createobject('empty')
|
||
AddProperty(loItem, 'id_ordl', 900002)
|
||
AddProperty(loItem, 'vin', 'WVWZZZ1KZAW000002')
|
||
AddProperty(loItem, 'nrinmat', 'B99TST02')
|
||
AddProperty(loItem, 'data_prestatie', '2026-07-02')
|
||
AddProperty(loItem, 'odometru_final', '87654')
|
||
|
||
LOCAL ARRAY laPrestatii2(2)
|
||
laPrestatii2(1) = Createobject('empty')
|
||
AddProperty(laPrestatii2(1), 'cod_op_service', 'DIAC01')
|
||
* diacritice romanesti in text sursa (comentariile raman fara diacritice, dar
|
||
* denumirea trimisa in payload TREBUIE sa contina diacriticele reale, ca sa testeze
|
||
* efectiv encoding-ul):
|
||
AddProperty(laPrestatii2(1), 'denumire', '<27>nlocuire ambreiaj - verificare etan<61>s la str<74>ngere')
|
||
laPrestatii2(2) = Createobject('empty')
|
||
AddProperty(laPrestatii2(2), 'cod_op_service', 'DIAC02')
|
||
AddProperty(laPrestatii2(2), 'denumire', 'Reglaj geometrie ro<72>i fa<66>a/spate')
|
||
AddProperty(loItem, 'prestatii(2)')
|
||
Acopy(laPrestatii2, loItem.prestatii)
|
||
|
||
AddProperty(loItem, 'obs', autopass_obs(90002, 190002))
|
||
|
||
loComenzi.Add(loItem)
|
||
|
||
?' Comenzi construite: ' + TRANSFORM(loComenzi.Count)
|
||
FOR i = 1 TO loComenzi.Count
|
||
loItem = loComenzi.Item(i)
|
||
?' [' + TRANSFORM(i) + '] id_ordl=' + TRANSFORM(loItem.id_ordl) + ;
|
||
' vin=' + loItem.vin + ' obs="' + loItem.obs + '"'
|
||
ENDFOR
|
||
|
||
*-- (c) Valideaza (dry-run) -------------------------------------------------------------
|
||
?
|
||
?'--- (c) AutopassClient.Valideaza() [dry-run, fara enqueue] ---'
|
||
|
||
oClient = Createobject('AutopassClient')
|
||
|
||
loRezValidare = .NULL.
|
||
TRY
|
||
loRezValidare = oClient.Valideaza(loComenzi)
|
||
CATCH TO loEx
|
||
?' EROARE la Valideaza(): ' + loEx.Message
|
||
ENDTRY
|
||
|
||
IF VARTYPE(loRezValidare) = 'O'
|
||
?' lSucces : ' + TRANSFORM(loRezValidare.lSucces)
|
||
?' nStatusHttp : ' + TRANSFORM(loRezValidare.nStatusHttp)
|
||
?' cDetaliu : ' + loRezValidare.cDetaliu
|
||
|
||
IF loRezValidare.lSucces AND VARTYPE(loRezValidare.oRezultate) = 'O'
|
||
?' Rezultate dry-run:'
|
||
FOR EACH loItem IN loRezValidare.oRezultate
|
||
?' index=' + TRANSFORM(loItem.index) + ;
|
||
' id_ordl=' + TRANSFORM(loItem.id_ordl) + ;
|
||
' valid=' + TRANSFORM(loItem.valid) + ;
|
||
' status_estimat=' + TRANSFORM(EVL(loItem.status_estimat,'')) + ;
|
||
' nemapate=' + IIF(TYPE('loItem.nemapate') = 'A', TRANSFORM(ALEN(loItem.nemapate,1)), '0')
|
||
ENDFOR
|
||
ENDIF
|
||
ENDIF
|
||
|
||
*-- (d) TrimiteLot - DOAR cu confirmare explicita SI DOAR daca mediul e test -------------
|
||
?
|
||
?'--- (d) AutopassClient.TrimiteLot() [enqueue real - necesita confirmare] ---'
|
||
|
||
loConfig = autopass_get_config()
|
||
|
||
IF UPPER(ALLTRIM(loConfig.cRarEnv)) <> 'TEST'
|
||
?' Mediul curent din configurare (AUTOPASS_ENV) nu este "test" (este: "' + ;
|
||
loConfig.cRarEnv + '") - TrimiteLot NU se apeleaza din driver.'
|
||
?' Seteaza AUTOPASS_ENV=test in tabelul optiuni daca vrei sa testezi enqueue-ul real.'
|
||
ELSE
|
||
lnAlegere = MESSAGEBOX('Mediul este TEST. Trimiti (enqueue real) cele ' + ;
|
||
TRANSFORM(loComenzi.Count) + ' comenzi de test la gateway-ul AUTOPASS?' + CHR(13) + ;
|
||
'Aceasta e o transmitere reala pe mediul de test (nu Productie).', 4 + 32, 'AUTOPASS - confirmare TrimiteLot')
|
||
|
||
IF lnAlegere = 6 && Yes
|
||
loRezTrimite = .NULL.
|
||
TRY
|
||
loRezTrimite = oClient.TrimiteLot(loComenzi)
|
||
CATCH TO loEx
|
||
?' EROARE la TrimiteLot(): ' + loEx.Message
|
||
ENDTRY
|
||
|
||
IF VARTYPE(loRezTrimite) = 'O'
|
||
?' lSucces : ' + TRANSFORM(loRezTrimite.lSucces)
|
||
?' nStatusHttp : ' + TRANSFORM(loRezTrimite.nStatusHttp)
|
||
?' cDetaliu : ' + loRezTrimite.cDetaliu
|
||
|
||
IF loRezTrimite.lSucces AND VARTYPE(loRezTrimite.oRezultate) = 'O'
|
||
?' Rezultate TrimiteLot:'
|
||
FOR EACH loItem IN loRezTrimite.oRezultate
|
||
?' index=' + TRANSFORM(loItem.index) + ;
|
||
' id_ordl=' + TRANSFORM(loItem.id_ordl) + ;
|
||
' status=' + TRANSFORM(loItem.status) + ;
|
||
' motiv=' + TRANSFORM(loItem.motiv) + ;
|
||
' submission_id=' + TRANSFORM(loItem.submission_id) + ;
|
||
' id_prezentare=' + TRANSFORM(loItem.id_prezentare)
|
||
ENDFOR
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
?' Renuntat de utilizator - TrimiteLot nu s-a apelat.'
|
||
ENDIF
|
||
ENDIF
|
||
|
||
?
|
||
?'============================================================================='
|
||
?'Driver terminat.'
|
||
?'============================================================================='
|
||
|
||
RETURN
|