From 26579600d0b3f2dfd274cfbc22ed4d4dd62aeea3 Mon Sep 17 00:00:00 2001 From: Nicholas Rempel Date: Fri, 3 Dec 2021 10:43:07 -0800 Subject: [PATCH] rgp:infData should allow multiple rgp:rgpStatus --- epp-client/src/common.rs | 2 +- epp-client/src/extensions/rgp/request.rs | 2 +- epp-client/src/tests/de.rs | 13 +++++- .../response/extensions/domain_info_rgp.xml | 45 +++++++++++++++++++ 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 epp-client/test/resources/response/extensions/domain_info_rgp.xml diff --git a/epp-client/src/common.rs b/epp-client/src/common.rs index 09cf440..099a653 100644 --- a/epp-client/src/common.rs +++ b/epp-client/src/common.rs @@ -98,7 +98,7 @@ impl Options { #[serde(rename = "extension")] pub struct Extension { /// Data under the <extension> tag - #[serde(alias = "upData", alias = "namestoreExt")] + #[serde(alias = "upData", alias = "namestoreExt", alias = "infData")] pub data: E, } diff --git a/epp-client/src/extensions/rgp/request.rs b/epp-client/src/extensions/rgp/request.rs index 7d10fac..5612cb4 100644 --- a/epp-client/src/extensions/rgp/request.rs +++ b/epp-client/src/extensions/rgp/request.rs @@ -125,5 +125,5 @@ pub struct RgpRequestResponse { xmlns: String, /// Data under the <rgpStatus> tag #[serde(rename = "rgpStatus")] - pub rgp_status: RgpStatus, + pub rgp_status: Vec, } diff --git a/epp-client/src/tests/de.rs b/epp-client/src/tests/de.rs index d97da61..ee575b3 100644 --- a/epp-client/src/tests/de.rs +++ b/epp-client/src/tests/de.rs @@ -643,10 +643,21 @@ mod response { assert_eq!(object.result.code, 1000); assert_eq!(object.result.message, SUCCESS_MSG.into()); - assert_eq!(ext.data.rgp_status.status, "pendingRestore".to_string()); + assert_eq!(ext.data.rgp_status[0].status, "pendingRestore".to_string()); assert_eq!(object.tr_ids.server_tr_id, SVTRID.into()); } + #[test] + fn rgp_restore_domain_info_response() { + let xml = get_xml("response/extensions/domain_info_rgp.xml").unwrap(); + let object = DomainInfo::::deserialize_response(xml.as_str()).unwrap(); + + let ext = object.extension.unwrap(); + + assert_eq!(ext.data.rgp_status[0].status, "addPeriod"); + assert_eq!(ext.data.rgp_status[1].status, "renewPeriod"); + } + #[test] fn namestore() { let xml = get_xml("response/extensions/namestore.xml").unwrap(); diff --git a/epp-client/test/resources/response/extensions/domain_info_rgp.xml b/epp-client/test/resources/response/extensions/domain_info_rgp.xml new file mode 100644 index 0000000..f76b164 --- /dev/null +++ b/epp-client/test/resources/response/extensions/domain_info_rgp.xml @@ -0,0 +1,45 @@ + + + + + Command completed successfully + + + + eppdev-1.com + 125899511_DOMAIN_COM-VRSN + + + eppdev-contact-2 + eppdev-contact-2 + eppdev-contact-2 + eppdev-contact-2 + + ns1.eppdev-1.com + ns2.eppdev-1.com + + ns1.eppdev-1.com + ns2.eppdev-1.com + eppdev + SYSTEM + 2021-07-23T15:31:20.0Z + SYSTEM + 2021-07-23T15:31:21.0Z + 2023-07-23T15:31:20.0Z + + epP4uthd#v + + + + + + endDate=2021-12-07T19:08:08Z + endDate=2021-12-07T23:07:49Z + + + + cltrid:1626454866 + RO-6879-1627224678242975 + + + \ No newline at end of file