mirror of
https://github.com/google/nomulus.git
synced 2025-08-01 15:34:48 +02:00
Change packageToken extension to bulkToken extension (#2091)
* Change packageToken extension to bulkToken extension * Small fixes
This commit is contained in:
parent
48ddbbe4ee
commit
78e1718c52
15 changed files with 89 additions and 90 deletions
|
@ -41,10 +41,10 @@ import google.registry.model.domain.Domain;
|
|||
import google.registry.model.domain.DomainCommand.Info;
|
||||
import google.registry.model.domain.DomainCommand.Info.HostsRequest;
|
||||
import google.registry.model.domain.DomainInfoData;
|
||||
import google.registry.model.domain.bulktoken.BulkTokenExtension;
|
||||
import google.registry.model.domain.bulktoken.BulkTokenResponseExtension;
|
||||
import google.registry.model.domain.fee06.FeeInfoCommandExtensionV06;
|
||||
import google.registry.model.domain.fee06.FeeInfoResponseExtensionV06;
|
||||
import google.registry.model.domain.packagetoken.PackageTokenExtension;
|
||||
import google.registry.model.domain.packagetoken.PackageTokenResponseExtension;
|
||||
import google.registry.model.domain.rgp.GracePeriodStatus;
|
||||
import google.registry.model.domain.rgp.RgpInfoExtension;
|
||||
import google.registry.model.eppcommon.AuthInfo;
|
||||
|
@ -95,7 +95,7 @@ public final class DomainInfoFlow implements Flow {
|
|||
|
||||
@Override
|
||||
public EppResponse run() throws EppException {
|
||||
extensionManager.register(FeeInfoCommandExtensionV06.class, PackageTokenExtension.class);
|
||||
extensionManager.register(FeeInfoCommandExtensionV06.class, BulkTokenExtension.class);
|
||||
flowCustomLogic.beforeValidation();
|
||||
validateRegistrarIsLoggedIn(registrarId);
|
||||
extensionManager.validate();
|
||||
|
@ -155,13 +155,13 @@ public final class DomainInfoFlow implements Flow {
|
|||
if (!gracePeriodStatuses.isEmpty()) {
|
||||
extensions.add(RgpInfoExtension.create(gracePeriodStatuses));
|
||||
}
|
||||
Optional<PackageTokenExtension> packageInfo =
|
||||
eppInput.getSingleExtension(PackageTokenExtension.class);
|
||||
Optional<BulkTokenExtension> packageInfo =
|
||||
eppInput.getSingleExtension(BulkTokenExtension.class);
|
||||
if (packageInfo.isPresent()) {
|
||||
// Package info was requested.
|
||||
if (isSuperuser || registrarId.equals(domain.getCurrentSponsorRegistrarId())) {
|
||||
// Only show package info to owning registrar or superusers
|
||||
extensions.add(PackageTokenResponseExtension.create(domain.getCurrentPackageToken()));
|
||||
extensions.add(BulkTokenResponseExtension.create(domain.getCurrentPackageToken()));
|
||||
}
|
||||
}
|
||||
Optional<FeeInfoCommandExtensionV06> feeInfo =
|
||||
|
|
|
@ -12,12 +12,12 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.model.domain.packagetoken;
|
||||
package google.registry.model.domain.bulktoken;
|
||||
|
||||
import google.registry.model.ImmutableObject;
|
||||
import google.registry.model.eppinput.EppInput.CommandExtension;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/** A package token extension that may be present on EPP domain commands. */
|
||||
/** A bulk token extension that may be present on EPP domain commands. */
|
||||
@XmlRootElement(name = "info")
|
||||
public class PackageTokenExtension extends ImmutableObject implements CommandExtension {}
|
||||
public class BulkTokenExtension extends ImmutableObject implements CommandExtension {}
|
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.model.domain.packagetoken;
|
||||
package google.registry.model.domain.bulktoken;
|
||||
|
||||
import google.registry.model.ImmutableObject;
|
||||
import google.registry.model.domain.token.AllocationToken;
|
||||
|
@ -24,18 +24,18 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
/**
|
||||
* An XML data object that represents a package token extension that may be present on the response
|
||||
* to EPP domain info commands.
|
||||
* An XML data object that represents a bulk token extension that may be present on the response to
|
||||
* EPP domain info commands.
|
||||
*/
|
||||
@XmlRootElement(name = "packageData")
|
||||
public class PackageTokenResponseExtension extends ImmutableObject implements ResponseExtension {
|
||||
@XmlRootElement(name = "bulkData")
|
||||
public class BulkTokenResponseExtension extends ImmutableObject implements ResponseExtension {
|
||||
|
||||
/** Token string of the PACKAGE token the name belongs to. */
|
||||
@XmlJavaTypeAdapter(TrimWhitespaceAdapter.class)
|
||||
String token;
|
||||
|
||||
public static PackageTokenResponseExtension create(Optional<VKey<AllocationToken>> tokenKey) {
|
||||
PackageTokenResponseExtension instance = new PackageTokenResponseExtension();
|
||||
public static BulkTokenResponseExtension create(Optional<VKey<AllocationToken>> tokenKey) {
|
||||
BulkTokenResponseExtension instance = new BulkTokenResponseExtension();
|
||||
instance.token = "";
|
||||
if (tokenKey.isPresent()) {
|
||||
instance.token = tokenKey.get().getKey().toString();
|
|
@ -13,12 +13,11 @@
|
|||
// limitations under the License.
|
||||
|
||||
@XmlSchema(
|
||||
namespace = "urn:google:params:xml:ns:packageToken-1.0",
|
||||
xmlns =
|
||||
@XmlNs(prefix = "packageToken", namespaceURI = "urn:google:params:xml:ns:packageToken-1.0"),
|
||||
namespace = "urn:google:params:xml:ns:bulkToken-1.0",
|
||||
xmlns = @XmlNs(prefix = "bulkToken", namespaceURI = "urn:google:params:xml:ns:bulkToken-1.0"),
|
||||
elementFormDefault = XmlNsForm.QUALIFIED)
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
package google.registry.model.domain.packagetoken;
|
||||
package google.registry.model.domain.bulktoken;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
@ -51,7 +51,7 @@ public class EppXmlTransformer {
|
|||
"allocate.xsd",
|
||||
"superuser.xsd",
|
||||
"allocationToken-1.0.xsd",
|
||||
"packageToken.xsd");
|
||||
"bulkToken.xsd");
|
||||
|
||||
private static final XmlTransformer INPUT_TRANSFORMER =
|
||||
new XmlTransformer(SCHEMAS, EppInput.class);
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableSet;
|
|||
import google.registry.model.ImmutableObject;
|
||||
import google.registry.model.contact.ContactCommand;
|
||||
import google.registry.model.domain.DomainCommand;
|
||||
import google.registry.model.domain.bulktoken.BulkTokenExtension;
|
||||
import google.registry.model.domain.fee06.FeeCheckCommandExtensionV06;
|
||||
import google.registry.model.domain.fee06.FeeCreateCommandExtensionV06;
|
||||
import google.registry.model.domain.fee06.FeeInfoCommandExtensionV06;
|
||||
|
@ -45,7 +46,6 @@ import google.registry.model.domain.launch.LaunchDeleteExtension;
|
|||
import google.registry.model.domain.launch.LaunchInfoExtension;
|
||||
import google.registry.model.domain.launch.LaunchUpdateExtension;
|
||||
import google.registry.model.domain.metadata.MetadataExtension;
|
||||
import google.registry.model.domain.packagetoken.PackageTokenExtension;
|
||||
import google.registry.model.domain.rgp.RgpUpdateExtension;
|
||||
import google.registry.model.domain.secdns.SecDnsCreateExtension;
|
||||
import google.registry.model.domain.secdns.SecDnsUpdateExtension;
|
||||
|
@ -362,8 +362,8 @@ public class EppInput extends ImmutableObject {
|
|||
|
||||
// Other extensions
|
||||
@XmlElementRef(type = AllocationTokenExtension.class),
|
||||
@XmlElementRef(type = BulkTokenExtension.class),
|
||||
@XmlElementRef(type = MetadataExtension.class),
|
||||
@XmlElementRef(type = PackageTokenExtension.class),
|
||||
@XmlElementRef(type = RgpUpdateExtension.class),
|
||||
@XmlElementRef(type = SecDnsCreateExtension.class),
|
||||
@XmlElementRef(type = SecDnsUpdateExtension.class)
|
||||
|
|
|
@ -23,6 +23,7 @@ import google.registry.model.ImmutableObject;
|
|||
import google.registry.model.contact.ContactInfoData;
|
||||
import google.registry.model.domain.DomainInfoData;
|
||||
import google.registry.model.domain.DomainRenewData;
|
||||
import google.registry.model.domain.bulktoken.BulkTokenResponseExtension;
|
||||
import google.registry.model.domain.fee06.FeeCheckResponseExtensionV06;
|
||||
import google.registry.model.domain.fee06.FeeCreateResponseExtensionV06;
|
||||
import google.registry.model.domain.fee06.FeeDeleteResponseExtensionV06;
|
||||
|
@ -43,7 +44,6 @@ import google.registry.model.domain.fee12.FeeRenewResponseExtensionV12;
|
|||
import google.registry.model.domain.fee12.FeeTransferResponseExtensionV12;
|
||||
import google.registry.model.domain.fee12.FeeUpdateResponseExtensionV12;
|
||||
import google.registry.model.domain.launch.LaunchCheckResponseExtension;
|
||||
import google.registry.model.domain.packagetoken.PackageTokenResponseExtension;
|
||||
import google.registry.model.domain.rgp.RgpInfoExtension;
|
||||
import google.registry.model.domain.secdns.SecDnsInfoExtension;
|
||||
import google.registry.model.eppcommon.Trid;
|
||||
|
@ -122,6 +122,7 @@ public class EppResponse extends ImmutableObject implements ResponseOrGreeting {
|
|||
|
||||
/** Zero or more response extensions. */
|
||||
@XmlElementRefs({
|
||||
@XmlElementRef(type = BulkTokenResponseExtension.class),
|
||||
@XmlElementRef(type = FeeCheckResponseExtensionV06.class),
|
||||
@XmlElementRef(type = FeeInfoResponseExtensionV06.class),
|
||||
@XmlElementRef(type = FeeCreateResponseExtensionV06.class),
|
||||
|
@ -142,7 +143,6 @@ public class EppResponse extends ImmutableObject implements ResponseOrGreeting {
|
|||
@XmlElementRef(type = FeeTransferResponseExtensionV12.class),
|
||||
@XmlElementRef(type = FeeUpdateResponseExtensionV12.class),
|
||||
@XmlElementRef(type = LaunchCheckResponseExtension.class),
|
||||
@XmlElementRef(type = PackageTokenResponseExtension.class),
|
||||
@XmlElementRef(type = RgpInfoExtension.class),
|
||||
@XmlElementRef(type = SecDnsInfoExtension.class)
|
||||
})
|
||||
|
|
38
core/src/main/java/google/registry/xml/xsd/bulkToken.xsd
Normal file
38
core/src/main/java/google/registry/xml/xsd/bulkToken.xsd
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:google:params:xml:ns:bulkToken-1.0"
|
||||
xmlns:bulkToken="urn:google:params:xml:ns:bulkToken-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
Bulk Token Extension.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Element used in info command request to get a bulk pricing token for a domain. -->
|
||||
<element name="info"
|
||||
type="bulkToken:infoType"/>
|
||||
|
||||
<complexType name="infoType"/>
|
||||
|
||||
<!-- Element returned in an info command response with a bulk token for a domain with bulk pricing. -->
|
||||
<element name="bulkData"
|
||||
type="bulkToken:bulkDataType"/>
|
||||
|
||||
<complexType name="bulkDataType">
|
||||
<sequence>
|
||||
<element name="token" type="bulkToken:tokenType" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="tokenType">
|
||||
<restriction base="string">
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
|
||||
<!-- End of schema.-->
|
||||
</schema>
|
|
@ -1,38 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:google:params:xml:ns:packageToken-1.0"
|
||||
xmlns:packageToken="urn:google:params:xml:ns:packageToken-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
Package Token Extension.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Element used in info command request to get a package token for a domain. -->
|
||||
<element name="info"
|
||||
type="packageToken:infoType"/>
|
||||
|
||||
<complexType name="infoType"/>
|
||||
|
||||
<!-- Element returned in an info command response with a package token for a package domain. -->
|
||||
<element name="packageData"
|
||||
type="packageToken:packageDataType"/>
|
||||
|
||||
<complexType name="packageDataType">
|
||||
<sequence>
|
||||
<element name="token" type="packageToken:tokenType" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="tokenType">
|
||||
<restriction base="string">
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
|
||||
<!-- End of schema.-->
|
||||
</schema>
|
|
@ -1085,7 +1085,7 @@ class DomainInfoFlowTest extends ResourceFlowTestCase<DomainInfoFlow, Domain> {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testPackageInfoExtension_returnsPackageInfo() throws Exception {
|
||||
void testBulkInfoExtension_returnsBulkInfo() throws Exception {
|
||||
persistTestEntities(false);
|
||||
AllocationToken token =
|
||||
persistResource(
|
||||
|
@ -1100,12 +1100,12 @@ class DomainInfoFlowTest extends ResourceFlowTestCase<DomainInfoFlow, Domain> {
|
|||
.build());
|
||||
domain = domain.asBuilder().setCurrentPackageToken(token.createVKey()).build();
|
||||
persistResource(domain);
|
||||
setEppInput("domain_info_package.xml");
|
||||
doSuccessfulTest("domain_info_response_package.xml", false);
|
||||
setEppInput("domain_info_bulk.xml");
|
||||
doSuccessfulTest("domain_info_response_bulk.xml", false);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPackageInfoExtension_returnsPackageInfoForSuperUser() throws Exception {
|
||||
void testBulkInfoExtension_returnsBulkInfoForSuperUser() throws Exception {
|
||||
persistTestEntities(false);
|
||||
AllocationToken token =
|
||||
persistResource(
|
||||
|
@ -1121,23 +1121,23 @@ class DomainInfoFlowTest extends ResourceFlowTestCase<DomainInfoFlow, Domain> {
|
|||
domain = domain.asBuilder().setCurrentPackageToken(token.createVKey()).build();
|
||||
persistResource(domain);
|
||||
sessionMetadata.setRegistrarId("TheRegistrar");
|
||||
setEppInput("domain_info_package.xml");
|
||||
setEppInput("domain_info_bulk.xml");
|
||||
EppOutput output = runFlowAsSuperuser();
|
||||
String expectedOutput =
|
||||
loadFile(
|
||||
"domain_info_response_superuser_package.xml",
|
||||
"domain_info_response_superuser_bulk.xml",
|
||||
updateSubstitutions(ImmutableMap.of(), "ROID", "2FF-TLD"));
|
||||
assertXmlEquals(expectedOutput, new String(marshal(output, ValidationMode.LENIENT), UTF_8));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPackageInfoExtension_nameNotInPackage() throws Exception {
|
||||
setEppInput("domain_info_package.xml");
|
||||
doSuccessfulTest("domain_info_response_empty_package.xml");
|
||||
void testBulkInfoExtension_nameNotInBulkPackage() throws Exception {
|
||||
setEppInput("domain_info_bulk.xml");
|
||||
doSuccessfulTest("domain_info_response_empty_bulk_package.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPackageInfoExtension_notCurrentSponsorRegistrar() throws Exception {
|
||||
void testBulkInfoExtension_notCurrentSponsorRegistrar() throws Exception {
|
||||
persistTestEntities(false);
|
||||
AllocationToken token =
|
||||
persistResource(
|
||||
|
@ -1153,7 +1153,7 @@ class DomainInfoFlowTest extends ResourceFlowTestCase<DomainInfoFlow, Domain> {
|
|||
domain = domain.asBuilder().setCurrentPackageToken(token.createVKey()).build();
|
||||
persistResource(domain);
|
||||
sessionMetadata.setRegistrarId("TheRegistrar");
|
||||
setEppInput("domain_info_package.xml");
|
||||
setEppInput("domain_info_bulk.xml");
|
||||
doSuccessfulTest("domain_info_response_unauthorized.xml", false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<epp xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.6" xmlns:packageToken="urn:google:params:xml:ns:packageToken-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:fee11="urn:ietf:params:xml:ns:fee-0.11" xmlns:fee12="urn:ietf:params:xml:ns:fee-0.12" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:host="urn:ietf:params:xml:ns:host-1.0">
|
||||
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:fee12="urn:ietf:params:xml:ns:fee-0.12">
|
||||
<response>
|
||||
<result code="1000">
|
||||
<msg>Command completed successfully</msg>
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
</domain:info>
|
||||
</info>
|
||||
<extension>
|
||||
<packageToken:info
|
||||
xmlns:packageToken=
|
||||
"urn:google:params:xml:ns:packageToken-1.0" />
|
||||
<bulkToken:info
|
||||
xmlns:bulkToken=
|
||||
"urn:google:params:xml:ns:bulkToken-1.0" />
|
||||
</extension>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
|
@ -32,10 +32,10 @@
|
|||
</domain:infData>
|
||||
</resData>
|
||||
<extension>
|
||||
<packageToken:packageData xmlns:packageToken=
|
||||
"urn:google:params:xml:ns:packageToken-1.0">
|
||||
<packageToken:token></packageToken:token>
|
||||
</packageToken:packageData>
|
||||
<bulkToken:bulkData xmlns:bulkToken=
|
||||
"urn:google:params:xml:ns:bulkToken-1.0">
|
||||
<bulkToken:token>abc123</bulkToken:token>
|
||||
</bulkToken:bulkData>
|
||||
</extension>
|
||||
<trID>
|
||||
<clTRID>ABC-12345</clTRID>
|
|
@ -32,10 +32,10 @@
|
|||
</domain:infData>
|
||||
</resData>
|
||||
<extension>
|
||||
<packageToken:packageData xmlns:packageToken=
|
||||
"urn:google:params:xml:ns:packageToken-1.0">
|
||||
<packageToken:token>abc123</packageToken:token>
|
||||
</packageToken:packageData>
|
||||
<bulkToken:bulkData xmlns:bulkToken=
|
||||
"urn:google:params:xml:ns:bulkToken-1.0">
|
||||
<bulkToken:token></bulkToken:token>
|
||||
</bulkToken:bulkData>
|
||||
</extension>
|
||||
<trID>
|
||||
<clTRID>ABC-12345</clTRID>
|
|
@ -22,10 +22,10 @@
|
|||
</domain:infData>
|
||||
</resData>
|
||||
<extension>
|
||||
<packageToken:packageData xmlns:packageToken=
|
||||
"urn:google:params:xml:ns:packageToken-1.0">
|
||||
<packageToken:token>abc123</packageToken:token>
|
||||
</packageToken:packageData>
|
||||
<bulkToken:bulkData xmlns:bulkToken=
|
||||
"urn:google:params:xml:ns:bulkToken-1.0">
|
||||
<bulkToken:token>abc123</bulkToken:token>
|
||||
</bulkToken:bulkData>
|
||||
</extension>
|
||||
<trID>
|
||||
<clTRID>ABC-12345</clTRID>
|
Loading…
Add table
Add a link
Reference in a new issue