mirror of
https://github.com/google/nomulus.git
synced 2025-07-25 20:18:34 +02:00
Fix nomulus GetEppResourceCommand (#1865)
* Fix nomulus GetEppResourceCommand Fixes a bug in read_timestamp validation. Fixes string representation of Collection fields in Epp Resources.
This commit is contained in:
parent
63d3453848
commit
46a7956f77
3 changed files with 63 additions and 4 deletions
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
package google.registry.model;
|
package google.registry.model;
|
||||||
|
|
||||||
|
import static com.google.common.collect.Iterables.transform;
|
||||||
import static com.google.common.collect.Maps.transformValues;
|
import static com.google.common.collect.Maps.transformValues;
|
||||||
import static java.lang.annotation.ElementType.FIELD;
|
import static java.lang.annotation.ElementType.FIELD;
|
||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
@ -178,7 +179,7 @@ public abstract class ImmutableObject implements Cloneable {
|
||||||
return transformValues((Map<?, ?>) value, ImmutableObject::hydrate);
|
return transformValues((Map<?, ?>) value, ImmutableObject::hydrate);
|
||||||
}
|
}
|
||||||
if (value instanceof Collection) {
|
if (value instanceof Collection) {
|
||||||
return ((Collection<?>) value).stream().map(ImmutableObject::hydrate);
|
return transform((Collection<?>) value, ImmutableObject::hydrate);
|
||||||
}
|
}
|
||||||
if (value instanceof ImmutableObject) {
|
if (value instanceof ImmutableObject) {
|
||||||
return ((ImmutableObject) value).toHydratedString();
|
return ((ImmutableObject) value).toHydratedString();
|
||||||
|
|
|
@ -60,11 +60,11 @@ abstract class GetEppResourceCommand implements CommandWithRemoteApi {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
DateTime now = clock.nowUtc();
|
||||||
if (readTimestamp == null) {
|
if (readTimestamp == null) {
|
||||||
readTimestamp = clock.nowUtc();
|
readTimestamp = now;
|
||||||
}
|
}
|
||||||
checkArgument(
|
checkArgument(!readTimestamp.isBefore(now), "--read_timestamp may not be in the past");
|
||||||
!readTimestamp.isBefore(clock.nowUtc()), "--read_timestamp may not be in the past");
|
|
||||||
runAndPrint();
|
runAndPrint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
// Copyright 2022 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.tools;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertThrows;
|
||||||
|
|
||||||
|
import com.google.common.truth.Truth;
|
||||||
|
import google.registry.testing.FakeClock;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
import org.joda.time.DateTimeZone;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
/** Unit tests for {@link GetEppResourceCommand}. */
|
||||||
|
public class GetEppResourceCommandTest {
|
||||||
|
|
||||||
|
private static final DateTime TEST_TIME = DateTime.now(DateTimeZone.UTC);
|
||||||
|
|
||||||
|
private final FakeClock clock = new FakeClock(TEST_TIME);
|
||||||
|
private GetEppResourceCommand commandUnderTest;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setup() {
|
||||||
|
commandUnderTest = Mockito.spy(GetEppResourceCommand.class);
|
||||||
|
commandUnderTest.clock = clock;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void readTimestampAfterNow_noException() {
|
||||||
|
commandUnderTest.readTimestamp = clock.nowUtc().plusMillis(1);
|
||||||
|
commandUnderTest.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void readTimestampBeforeNow_throwsException() {
|
||||||
|
commandUnderTest.readTimestamp = clock.nowUtc().minusMillis(1);
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> commandUnderTest.run());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void readTimestampNotProvided_setToNow_noException() {
|
||||||
|
commandUnderTest.run();
|
||||||
|
Truth.assertThat(commandUnderTest.readTimestamp).isEqualTo(clock.nowUtc());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue