From c8bb704e915710890b678f73c38bf148d9bcc5fa Mon Sep 17 00:00:00 2001 From: Andrew Harvey Date: Tue, 15 Jun 2021 13:43:23 +1000 Subject: test xml entities encoding --- bin/mr2osc.mjs | 3 +-- test/xmlEntities.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100755 test/xmlEntities.js diff --git a/bin/mr2osc.mjs b/bin/mr2osc.mjs index 7256624..4c3401b 100755 --- a/bin/mr2osc.mjs +++ b/bin/mr2osc.mjs @@ -360,13 +360,12 @@ async function uploadChanges() { }, Object.assign({ compact: true, attributeValueFn: value => { - // TODO need to test this via the dev api + // these values were tested with test/xmlEntities.js return value.replace(/"/g, '"') // convert quote back before converting amp .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') - .replace(/'/g, ''') } }, argv.dryRun ? { spaces: 2 } : {})) diff --git a/test/xmlEntities.js b/test/xmlEntities.js new file mode 100755 index 0000000..5a03520 --- /dev/null +++ b/test/xmlEntities.js @@ -0,0 +1,61 @@ +#!/usr/bin/env node + +const fetch = require('node-fetch') +const xml = require('xml-js') + +// RAW value is `"Testing & complex < characters > '.` +// JSON value is "name": "\"Testing & complex < characters > '." +fetch(`https://master.apis.dev.openstreetmap.org/api/0.6/node/4327735719`, { + headers: { + 'Accept': 'application/json' + } +}) + .then(res => res.json()) + .then(json => { + const element = json.elements[0] + const body = xml.json2xml({ + _declaration: { + _attributes: { + version: "1.0", + encoding: "UTF-8" + } + }, + osmChange: { + _attributes: { + version: '0.6' + }, + modify: { + node: [ + { + _attributes: { + id: element.id, + version: element.version + 1, + lat: element.lat, + lon: element.lon + }, + tag: [ + { + _attributes: { + k: 'name', + v: element.tags.name + } + } + ] + } + ] + } + } + }, Object.assign({ + compact: true, + attributeValueFn: value => { + return value.replace(/"/g, '"') // convert quote back before converting amp + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + } + }, { spaces: 2 })) + console.log(body) + // result should match view-source:https://master.apis.dev.openstreetmap.org/api/0.6/node/4327735719 + // + }) -- cgit v1.2.3