PATH is not resolving correctly

Offen
#285 3 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
javascript
Bereich
backend

Rechercherichtung

Reproduzieren Sie Issue #285 mit der bereitgestellten Regel und den Payloads und sehen Sie anschließend die verlinkte Mojaloop-Diskussion durch, um den Kontext zum JSON-PATH-Verhalten zu verstehen. Der Fix ist abgeschlossen, wenn ein String-Body die Bedingung $.amount nicht erfüllt, während ein Objekt-Body, der amount: '123' enthält, dies tut, und im entsprechenden Projekttest eine Regressionstestabdeckung hinzugefügt wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

I have seen some strange happenings with regard to how the JSON-PATH is resolving in the rules with "json-rules-engine": "6.1.2".

If you consider the following rule:

{
    "ruleId": 1,
    "description": "Returns an NDC exceeded error response (ML error 4001) from the simulator when transfer value is 123 in any currency",
    "conditions": {
        "all": [
            {
                "fact": "path",
                "operator": "equal",
                "value": "/transfers"
            },
            {
                "fact": "method",
                "operator": "equal",
                "value": "POST"
            },
            {
                "fact": "body",
                "operator": "equal",
                "value": "123",
                "path": "$.amount"
            }
        ]
    },
    "event": {
        "type": "simulateError",
        "params": {
            "statusCode": 500,
            "body": {
                "statusCode": "4001",
                "message": "Payer FSP insufficient liquidity"
            }
        }
    }
}

With the following payload:

{
  path: '/transfers',
  body: '123', // <-- Non-matching PATH
  method: 'POST',
}

The rule will still resolve and fire off the event which I believe is incorrect.

My expectation is that it should only resolve when the payload is as follows:

{
  path: '/transfers',
  body: {      // <-- correct body 
      amount: '123',  // <-- Matching PATH
  },
  method: 'POST',
}

Link for reference: https://github.com/mojaloop/mojaloop-simulator/pull/120/files#r747311386

Vorherrschende Sprache
JavaScript
Sterne
3.1k
Forks
507
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus CacheControl/json-rules-engine

Alle Issues in CacheControl/json-rules-engine

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.