mirror of
https://github.com/google/nomulus.git
synced 2025-05-14 00:17:20 +02:00
Allow partial update of billing account map
When doing update_registrar, it is now possible to only specify the currencies and the account ids that need updating. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=159262119
This commit is contained in:
parent
7d2f53a6fe
commit
d1ef4b9c37
3 changed files with 27 additions and 4 deletions
|
@ -698,8 +698,8 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable
|
||||||
ImmutableMap.Builder<CurrencyUnit, BillingAccountEntry> billingAccountMapBuilder =
|
ImmutableMap.Builder<CurrencyUnit, BillingAccountEntry> billingAccountMapBuilder =
|
||||||
new ImmutableMap.Builder<>();
|
new ImmutableMap.Builder<>();
|
||||||
for (Map.Entry<CurrencyUnit, String> entry : billingAccountMap.entrySet()) {
|
for (Map.Entry<CurrencyUnit, String> entry : billingAccountMap.entrySet()) {
|
||||||
CurrencyUnit key = entry.getKey();
|
billingAccountMapBuilder.put(
|
||||||
billingAccountMapBuilder.put(key, new BillingAccountEntry(key, entry.getValue()));
|
entry.getKey(), new BillingAccountEntry(entry.getKey(), entry.getValue()));
|
||||||
}
|
}
|
||||||
getInstance().billingAccountMap = billingAccountMapBuilder.build();
|
getInstance().billingAccountMap = billingAccountMapBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -182,7 +183,8 @@ abstract class CreateOrUpdateRegistrarCommand extends MutatingCommand {
|
||||||
description =
|
description =
|
||||||
"Registrar Billing Account key-value pairs (formatted as key=value[,key=value...]), "
|
"Registrar Billing Account key-value pairs (formatted as key=value[,key=value...]), "
|
||||||
+ "where key is a currency unit (USD, JPY, etc) and value is the registrar's billing "
|
+ "where key is a currency unit (USD, JPY, etc) and value is the registrar's billing "
|
||||||
+ "account id for that currency.",
|
+ "account id for that currency. During update, only the pairs that need updating need "
|
||||||
|
+ "to be provided.",
|
||||||
converter = CurrencyUnitToStringMap.class,
|
converter = CurrencyUnitToStringMap.class,
|
||||||
validateWith = CurrencyUnitToStringMap.class
|
validateWith = CurrencyUnitToStringMap.class
|
||||||
)
|
)
|
||||||
|
@ -354,7 +356,12 @@ abstract class CreateOrUpdateRegistrarCommand extends MutatingCommand {
|
||||||
builder.setBillingIdentifier(billingId.orNull());
|
builder.setBillingIdentifier(billingId.orNull());
|
||||||
}
|
}
|
||||||
if (billingAccountMap != null) {
|
if (billingAccountMap != null) {
|
||||||
builder.setBillingAccountMap(billingAccountMap);
|
LinkedHashMap<CurrencyUnit, String> newBillingAccountMap = new LinkedHashMap<>();
|
||||||
|
if (oldRegistrar != null && oldRegistrar.getBillingAccountMap() != null) {
|
||||||
|
newBillingAccountMap.putAll(oldRegistrar.getBillingAccountMap());
|
||||||
|
}
|
||||||
|
newBillingAccountMap.putAll(billingAccountMap);
|
||||||
|
builder.setBillingAccountMap(newBillingAccountMap);
|
||||||
}
|
}
|
||||||
if (billingMethod != null) {
|
if (billingMethod != null) {
|
||||||
if (oldRegistrar != null && !billingMethod.equals(oldRegistrar.getBillingMethod())) {
|
if (oldRegistrar != null && !billingMethod.equals(oldRegistrar.getBillingMethod())) {
|
||||||
|
|
|
@ -26,6 +26,7 @@ import static org.joda.time.DateTimeZone.UTC;
|
||||||
|
|
||||||
import com.beust.jcommander.ParameterException;
|
import com.beust.jcommander.ParameterException;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import google.registry.model.billing.RegistrarBillingEntry;
|
import google.registry.model.billing.RegistrarBillingEntry;
|
||||||
import google.registry.model.registrar.Registrar;
|
import google.registry.model.registrar.Registrar;
|
||||||
|
@ -225,6 +226,7 @@ public class UpdateRegistrarCommandTest extends CommandTestCase<UpdateRegistrarC
|
||||||
"NewRegistrar");
|
"NewRegistrar");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSuccess_billingAccountMap_onlyAppliesToRealRegistrar() throws Exception {
|
public void testSuccess_billingAccountMap_onlyAppliesToRealRegistrar() throws Exception {
|
||||||
createTlds("foo");
|
createTlds("foo");
|
||||||
assertThat(loadByClientId("NewRegistrar").getBillingAccountMap()).isEmpty();
|
assertThat(loadByClientId("NewRegistrar").getBillingAccountMap()).isEmpty();
|
||||||
|
@ -237,6 +239,20 @@ public class UpdateRegistrarCommandTest extends CommandTestCase<UpdateRegistrarC
|
||||||
.containsExactly(CurrencyUnit.JPY, "789xyz");
|
.containsExactly(CurrencyUnit.JPY, "789xyz");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSuccess_billingAccountMap_partialUpdate() throws Exception {
|
||||||
|
createTlds("foo");
|
||||||
|
persistResource(
|
||||||
|
loadByClientId("NewRegistrar")
|
||||||
|
.asBuilder()
|
||||||
|
.setBillingAccountMap(
|
||||||
|
ImmutableMap.of(CurrencyUnit.USD, "abc123", CurrencyUnit.JPY, "789xyz"))
|
||||||
|
.build());
|
||||||
|
runCommand("--billing_account_map=JPY=123xyz", "--allowed_tlds=foo", "--force", "NewRegistrar");
|
||||||
|
assertThat(loadByClientId("NewRegistrar").getBillingAccountMap())
|
||||||
|
.containsExactly(CurrencyUnit.JPY, "123xyz", CurrencyUnit.USD, "abc123");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSuccess_changeBillingMethodToBraintreeWhenBalanceIsZero() throws Exception {
|
public void testSuccess_changeBillingMethodToBraintreeWhenBalanceIsZero() throws Exception {
|
||||||
createTlds("xn--q9jyb4c");
|
createTlds("xn--q9jyb4c");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue