google-nomulus/javatests/google/registry/flows/poll/PollRequestFlowTest.java
mcilwain da08baab92 Re-add assertions that EppExceptions marshal correctly
These checks were removed in [] and re-adding them is the last
step of the migration to using expectThrows/assertThrows globally.

Note that this is roughly half of them. More to come in a follow-up CL.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=179216707
2017-12-27 11:01:09 -05:00

229 lines
9.4 KiB
Java

// Copyright 2017 The Nomulus 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.
package google.registry.flows.poll;
import static google.registry.testing.DatastoreHelper.createHistoryEntryForEppResource;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.persistActiveContact;
import static google.registry.testing.DatastoreHelper.persistActiveHost;
import static google.registry.testing.DatastoreHelper.persistResource;
import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions;
import static google.registry.testing.JUnitBackports.expectThrows;
import com.google.common.collect.ImmutableList;
import google.registry.flows.EppException;
import google.registry.flows.FlowTestCase;
import google.registry.flows.poll.PollRequestFlow.UnexpectedMessageIdException;
import google.registry.model.contact.ContactResource;
import google.registry.model.domain.DomainResource;
import google.registry.model.eppcommon.Trid;
import google.registry.model.host.HostResource;
import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse;
import google.registry.model.poll.PollMessage;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.transfer.TransferResponse.ContactTransferResponse;
import google.registry.model.transfer.TransferResponse.DomainTransferResponse;
import google.registry.model.transfer.TransferStatus;
import org.joda.time.DateTime;
import org.junit.Before;
import org.junit.Test;
/** Unit tests for {@link PollRequestFlow}. */
public class PollRequestFlowTest extends FlowTestCase<PollRequestFlow> {
private DomainResource domain;
private ContactResource contact;
private HostResource host;
@Before
public void setUp() {
setEppInput("poll.xml");
setClientIdForFlow("NewRegistrar");
clock.setTo(DateTime.parse("2011-01-02T01:01:01Z"));
createTld("example");
contact = persistActiveContact("jd1234");
domain = persistResource(newDomainResource("test.example", contact));
host = persistActiveHost("ns1.test.example");
}
@Test
public void testSuccess_domainTransferApproved() throws Exception {
persistResource(
new PollMessage.OneTime.Builder()
.setClientId(getClientIdForFlow())
.setEventTime(clock.nowUtc().minusDays(1))
.setMsg("Transfer approved.")
.setResponseData(ImmutableList.of(new DomainTransferResponse.Builder()
.setFullyQualifiedDomainName("test.example")
.setTransferStatus(TransferStatus.SERVER_APPROVED)
.setGainingClientId(getClientIdForFlow())
.setTransferRequestTime(clock.nowUtc().minusDays(5))
.setLosingClientId("TheRegistrar")
.setPendingTransferExpirationTime(clock.nowUtc().minusDays(1))
.setExtendedRegistrationExpirationTime(clock.nowUtc().plusYears(1))
.build()))
.setParent(createHistoryEntryForEppResource(domain))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_domain_transfer.xml"));
}
@Test
public void testSuccess_contactTransferPending() throws Exception {
clock.setTo(DateTime.parse("2000-06-13T22:00:00.0Z"));
setClientIdForFlow("TheRegistrar");
persistResource(
new PollMessage.OneTime.Builder()
.setId(3L)
.setClientId(getClientIdForFlow())
.setEventTime(clock.nowUtc().minusDays(5))
.setMsg("Transfer requested.")
.setResponseData(ImmutableList.of(new ContactTransferResponse.Builder()
.setContactId("sh8013")
.setTransferStatus(TransferStatus.PENDING)
.setGainingClientId(getClientIdForFlow())
.setTransferRequestTime(clock.nowUtc().minusDays(5))
.setLosingClientId("NewRegistrar")
.setPendingTransferExpirationTime(clock.nowUtc())
.build()))
.setParent(createHistoryEntryForEppResource(contact))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_contact_transfer.xml"));
}
@Test
public void testSuccess_domainPendingActionComplete() throws Exception {
persistResource(
new PollMessage.OneTime.Builder()
.setClientId(getClientIdForFlow())
.setEventTime(clock.nowUtc().minusDays(1))
.setMsg("Domain deleted.")
.setResponseData(ImmutableList.of(DomainPendingActionNotificationResponse.create(
"test.example", true, Trid.create("ABC-12345", "other-trid"), clock.nowUtc())))
.setParent(createHistoryEntryForEppResource(domain))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_domain_pending_notification.xml"));
}
@Test
public void testSuccess_domainAutorenewMessage() throws Exception {
persistResource(
new PollMessage.Autorenew.Builder()
.setClientId(getClientIdForFlow())
.setEventTime(clock.nowUtc().minusDays(1))
.setMsg("Domain was auto-renewed.")
.setTargetId("test.example")
.setParent(createHistoryEntryForEppResource(domain))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_autorenew.xml"));
}
@Test
public void testSuccess_empty() throws Exception {
runFlowAssertResponse(loadFile("poll_response_empty.xml"));
}
@Test
public void testSuccess_wrongRegistrar() throws Exception {
persistResource(
new PollMessage.OneTime.Builder()
.setClientId("different client id")
.setEventTime(clock.nowUtc().minusDays(1))
.setMsg("Poll message")
.setParent(createHistoryEntryForEppResource(domain))
.build());
runFlowAssertResponse(loadFile("poll_response_empty.xml"));
}
@Test
public void testSuccess_futurePollMessage() throws Exception {
persistResource(
new PollMessage.OneTime.Builder()
.setClientId(getClientIdForFlow())
.setEventTime(clock.nowUtc().plusDays(1))
.setMsg("Poll message")
.setParent(createHistoryEntryForEppResource(domain))
.build());
runFlowAssertResponse(loadFile("poll_response_empty.xml"));
}
@Test
public void testSuccess_futureAutorenew() throws Exception {
persistResource(
new PollMessage.Autorenew.Builder()
.setClientId(getClientIdForFlow())
.setEventTime(clock.nowUtc().plusDays(1))
.setMsg("Domain was auto-renewed.")
.setTargetId("target.example")
.setParent(createHistoryEntryForEppResource(domain))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_empty.xml"));
}
@Test
public void testSuccess_contactDelete() throws Exception {
// Contact delete poll messages do not have any response data, so ensure that no
// response data block is produced in the poll message.
HistoryEntry historyEntry = persistResource(new HistoryEntry.Builder()
.setClientId("NewRegistrar")
.setModificationTime(clock.nowUtc().minusDays(1))
.setType(HistoryEntry.Type.CONTACT_DELETE)
.setParent(contact)
.build());
persistResource(
new PollMessage.OneTime.Builder()
.setClientId("NewRegistrar")
.setMsg("Deleted contact jd1234")
.setParent(historyEntry)
.setEventTime(clock.nowUtc().minusDays(1))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_contact_delete.xml"));
}
@Test
public void testSuccess_hostDelete() throws Exception {
// Host delete poll messages do not have any response data, so ensure that no
// response data block is produced in the poll message.
HistoryEntry historyEntry = persistResource(new HistoryEntry.Builder()
.setClientId("NewRegistrar")
.setModificationTime(clock.nowUtc().minusDays(1))
.setType(HistoryEntry.Type.HOST_DELETE)
.setParent(host)
.build());
persistResource(
new PollMessage.OneTime.Builder()
.setClientId("NewRegistrar")
.setMsg("Deleted host ns1.test.example")
.setParent(historyEntry)
.setEventTime(clock.nowUtc().minusDays(1))
.build());
assertTransactionalFlow(false);
runFlowAssertResponse(loadFile("poll_response_host_delete.xml"));
}
@Test
public void testFailure_messageIdProvided() throws Exception {
setEppInput("poll_with_id.xml");
assertTransactionalFlow(false);
EppException thrown = expectThrows(UnexpectedMessageIdException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
}