mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 03:57:51 +02:00
This change renames directories in preparation for the great package rename. The repository is now in a broken state because the code itself hasn't been updated. However this should ensure that git correctly preserves history for each file.
183 lines
6 KiB
JavaScript
183 lines
6 KiB
JavaScript
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
goog.setTestOnly();
|
|
|
|
goog.require('goog.dom.xml');
|
|
goog.require('goog.testing.asserts');
|
|
goog.require('goog.testing.jsunit');
|
|
goog.require('registry.testing');
|
|
goog.require('registry.xml');
|
|
|
|
|
|
function testEmptyElement_hasNoKeyValue() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {}},
|
|
'<epp></epp>');
|
|
}
|
|
|
|
|
|
function testSelfClosingRootElement_hasNoKeyValue() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {}},
|
|
'<epp/>');
|
|
}
|
|
|
|
|
|
function testElementWithWhitespaceTextContent_getsIgnored() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {}},
|
|
'<epp> \r\n </epp>');
|
|
}
|
|
|
|
|
|
function testElementWithTextContent_getsSetToKeyValueField() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {'keyValue': 'hello'}},
|
|
'<epp>hello</epp>');
|
|
}
|
|
|
|
|
|
function testTextWithSpacesOnSides_getsTrimmed() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {'keyValue': 'hello'}},
|
|
'<epp> hello </epp>');
|
|
}
|
|
|
|
|
|
function testAttribute_getsSetToFieldPrefixedByAtSymbol() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {'@ohmy': 'goth'}},
|
|
'<epp ohmy="goth"/>');
|
|
}
|
|
|
|
|
|
function testSingleNestedElement_keyIsNameAndValueIsNode() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {'ohmy': {'keyValue': 'goth'}}},
|
|
'<epp><ohmy>goth</ohmy></epp>');
|
|
}
|
|
|
|
|
|
function testMultipleNestedElements_valueBecomesArray() {
|
|
assertXmlTurnsIntoJson(
|
|
{'epp': {'ohmy': [{'keyValue': 'goth1'}, {'keyValue': 'goth2'}]}},
|
|
'<epp><ohmy>goth1</ohmy><ohmy>goth2</ohmy></epp>');
|
|
}
|
|
|
|
|
|
function testInterspersedText_throwsError() {
|
|
assertEquals(
|
|
'XML text "hello" interspersed with "there"',
|
|
assertThrows(function() {
|
|
registry.xml.convertToJson(
|
|
goog.dom.xml.loadXml(
|
|
'<epp> hello <omg/> there </epp>'));
|
|
}).message);
|
|
}
|
|
|
|
|
|
function testEppMessage() {
|
|
assertXmlTurnsIntoJson(
|
|
{
|
|
'epp': {
|
|
'@xmlns': 'urn:ietf:params:xml:ns:epp-1.0',
|
|
'response': {
|
|
'result': {
|
|
'@code': '1000',
|
|
'msg': {'keyValue': 'Command completed successfully'}
|
|
},
|
|
'resData': {
|
|
'domain:infData': {
|
|
'@xmlns:domain': 'urn:ietf:params:xml:ns:domain-1.0',
|
|
'domain:name': {'keyValue': 'justine.lol'},
|
|
'domain:roid': {'keyValue': '6-roid'},
|
|
'domain:status': {'@s': 'inactive'},
|
|
'domain:registrant': {'keyValue': 'GK Chesterton'},
|
|
'domain:contact': [
|
|
{'@type': 'admin', 'keyValue': '<justine>'},
|
|
{'@type': 'billing', 'keyValue': 'candycrush'},
|
|
{'@type': 'tech', 'keyValue': 'krieger'}
|
|
],
|
|
'domain:ns': {
|
|
'domain:hostObj': [
|
|
{'keyValue': 'ns1.justine.lol'},
|
|
{'keyValue': 'ns2.justine.lol'}
|
|
]
|
|
},
|
|
'domain:host': {'keyValue': 'ns1.justine.lol'},
|
|
'domain:clID': {'keyValue': 'justine'},
|
|
'domain:crID': {'keyValue': 'justine'},
|
|
'domain:crDate': {'keyValue': '2014-07-10T02:17:02Z'},
|
|
'domain:exDate': {'keyValue': '2015-07-10T02:17:02Z'},
|
|
'domain:authInfo': {
|
|
'domain:pw': {'keyValue': 'lolcat'}
|
|
}
|
|
}
|
|
},
|
|
'trID': {
|
|
'clTRID': {'keyValue': 'abc-1234'},
|
|
'svTRID': {'keyValue': 'ytk1RO+8SmaDQxrTIdulnw==-4'}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
'<?xml version="1.0"?>' +
|
|
'<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">' +
|
|
' <response>' +
|
|
' <result code="1000">' +
|
|
' <msg>Command completed successfully</msg>' +
|
|
' </result>' +
|
|
' <resData>' +
|
|
' <domain:infData' +
|
|
' xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">' +
|
|
' <domain:name>justine.lol</domain:name>' +
|
|
' <domain:roid>6-roid</domain:roid>' +
|
|
' <domain:status s="inactive"/>' +
|
|
' <domain:registrant>GK Chesterton</domain:registrant>' +
|
|
' <domain:contact type="admin"><justine></domain:contact>' +
|
|
' <domain:contact type="billing">candycrush</domain:contact>' +
|
|
' <domain:contact type="tech">krieger</domain:contact>' +
|
|
' <domain:ns>' +
|
|
' <domain:hostObj>ns1.justine.lol</domain:hostObj>' +
|
|
' <domain:hostObj>ns2.justine.lol</domain:hostObj>' +
|
|
' </domain:ns>' +
|
|
' <domain:host>ns1.justine.lol</domain:host>' +
|
|
' <domain:clID>justine</domain:clID>' +
|
|
' <domain:crID>justine</domain:crID>' +
|
|
' <domain:crDate>2014-07-10T02:17:02Z</domain:crDate>' +
|
|
' <domain:exDate>2015-07-10T02:17:02Z</domain:exDate>' +
|
|
' <domain:authInfo>' +
|
|
' <domain:pw>lolcat</domain:pw>' +
|
|
' </domain:authInfo>' +
|
|
' </domain:infData>' +
|
|
' </resData>' +
|
|
' <trID>' +
|
|
' <clTRID>abc-1234</clTRID>' +
|
|
' <svTRID>ytk1RO+8SmaDQxrTIdulnw==-4</svTRID>' +
|
|
' </trID>' +
|
|
' </response>' +
|
|
'</epp>');
|
|
}
|
|
|
|
|
|
/**
|
|
* Asserts {@code xml} turns into {@code json}.
|
|
* @param {!Object} json
|
|
* @param {string} xml
|
|
*/
|
|
function assertXmlTurnsIntoJson(json, xml) {
|
|
registry.testing.assertObjectEqualsPretty(
|
|
json, registry.xml.convertToJson(goog.dom.xml.loadXml(xml)));
|
|
}
|