Add domain_lock nomulus command

This command is used by registry operators to apply registry locks to
domain names.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=176549874
This commit is contained in:
mcilwain 2017-11-21 13:05:32 -08:00 committed by jianglai
parent 8cd3979385
commit f041b1bac0
18 changed files with 453 additions and 35 deletions

View file

@ -14,12 +14,14 @@
package google.registry.tools;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.xml.XmlTestUtils.assertXmlEquals;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableMap;
@ -27,6 +29,7 @@ import com.google.common.net.MediaType;
import google.registry.tools.ServerSideCommand.Connection;
import google.registry.tools.server.ToolsTestData;
import java.net.URLDecoder;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.mockito.ArgumentCaptor;
@ -67,29 +70,34 @@ public class EppToolVerifier {
return new EppToolVerifier(connection, clientId, superuser, true);
}
void verifySent(String... xmlToMatch) throws Exception {
void verifySent(String... expectedXmlFiles) throws Exception {
verifySentContents(
Arrays.stream(expectedXmlFiles).map(ToolsTestData::loadUtf8).collect(toImmutableList()));
}
void verifySentContents(List<String> expectedXmlContents) throws Exception {
ArgumentCaptor<byte[]> params = ArgumentCaptor.forClass(byte[].class);
verify(connection, times(xmlToMatch.length)).send(
verify(connection, times(expectedXmlContents.size())).send(
eq("/_dr/epptool"),
eq(ImmutableMap.<String, Object>of()),
eq(MediaType.FORM_DATA),
params.capture());
List<byte[]> capturedParams = params.getAllValues();
assertThat(capturedParams).hasSize(xmlToMatch.length);
for (int i = 0; i < xmlToMatch.length; i++) {
String xml = xmlToMatch[i];
assertThat(capturedParams).hasSize(expectedXmlContents.size());
for (int i = 0; i < expectedXmlContents.size(); i++) {
byte[] capturedParam = capturedParams.get(i);
Map<String, String> map =
Splitter.on('&')
.withKeyValueSeparator('=')
.split(new String(capturedParam, UTF_8));
Splitter.on('&').withKeyValueSeparator('=').split(new String(capturedParam, UTF_8));
assertThat(map).hasSize(4);
assertXmlEquals(
ToolsTestData.loadUtf8(xml),
URLDecoder.decode(map.get("xml"), UTF_8.toString()));
expectedXmlContents.get(i), URLDecoder.decode(map.get("xml"), UTF_8.toString()));
assertThat(map).containsEntry("dryRun", Boolean.toString(dryRun));
assertThat(map).containsEntry("clientId", clientId);
assertThat(map).containsEntry("superuser", Boolean.toString(superuser));
}
}
void verifyNothingSent() {
verifyZeroInteractions(connection);
}
}