mirror of
https://github.com/google/nomulus.git
synced 2025-05-04 14:07:51 +02:00
This removes the "create Domain/Host/Contact" forms that were supposed to be used instead of regular EPPs for CC-TLD that wanted to support it. We're removing it because we don't use it and want to reduce unneeded code for the registry 3.0 migration. Also, this is a security risk, as it allowed to do "billable actions" (creating a new domain for example) with the only authentication being access to the registrar's G Suite account. This bypassed the certificate, IP whitelist, and EPP password, which is bad. PUBLIC: Remove the web console EPP endpoint This removes the "create Domain/Host/Contact" forms that were supposed to be used instead of regular EPPs for CC-TLD that wanted to support it. We're removing it because we don't use it and want to reduce unneeded code for the registry 3.0 migration. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=236244195
208 lines
8.3 KiB
Java
208 lines
8.3 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.webdriver;
|
|
|
|
import static com.google.common.truth.Truth.assertThat;
|
|
import static google.registry.server.Fixture.BASIC;
|
|
import static google.registry.server.Route.route;
|
|
import static google.registry.testing.DatastoreHelper.loadRegistrar;
|
|
|
|
import com.google.common.collect.ImmutableList;
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.googlecode.objectify.ObjectifyFilter;
|
|
import google.registry.model.ofy.OfyFilter;
|
|
import google.registry.model.registrar.Registrar;
|
|
import google.registry.model.registrar.RegistrarAddress;
|
|
import google.registry.model.registrar.RegistrarContact;
|
|
import google.registry.module.frontend.FrontendServlet;
|
|
import google.registry.server.RegistryTestServer;
|
|
import google.registry.testing.AppEngineRule;
|
|
import org.junit.Rule;
|
|
import org.junit.Test;
|
|
import org.junit.rules.Timeout;
|
|
import org.junit.runner.RunWith;
|
|
import org.junit.runners.JUnit4;
|
|
import org.openqa.selenium.By;
|
|
|
|
/** WebDriver tests for Registrar Console UI. */
|
|
@RunWith(JUnit4.class)
|
|
public class RegistrarConsoleWebTest {
|
|
|
|
@Rule
|
|
public final AppEngineRule appEngine = AppEngineRule.builder()
|
|
.withDatastore()
|
|
.withLocalModules()
|
|
.withTaskQueue()
|
|
.build();
|
|
|
|
@Rule
|
|
public final TestServerRule server =
|
|
new TestServerRule.Builder()
|
|
.setRunfiles(RegistryTestServer.RUNFILES)
|
|
.setRoutes(
|
|
route("/registrar", FrontendServlet.class),
|
|
route("/registrar-settings", FrontendServlet.class))
|
|
.setFilters(ObjectifyFilter.class, OfyFilter.class)
|
|
.setFixtures(BASIC)
|
|
.setEmail("Marla.Singer@google.com")
|
|
.build();
|
|
|
|
@Rule public final WebDriverRule driver = new WebDriverRule();
|
|
|
|
|
|
@Rule public final Timeout deathClock = new Timeout(60000);
|
|
|
|
/** Checks the identified element has the given text content. */
|
|
void assertEltText(String eltId, String eltValue) {
|
|
assertThat(driver.findElement(By.id(eltId)).getText()).isEqualTo(eltValue);
|
|
}
|
|
|
|
/** Checks that an element is visible. */
|
|
void assertEltVisible(String eltId) throws Throwable {
|
|
assertThat(driver.waitForElement(By.id(eltId)).isDisplayed()).isTrue();
|
|
}
|
|
|
|
/** Checks that an element is invisible. */
|
|
void assertEltInvisible(String eltId) throws Throwable {
|
|
assertThat(driver.waitForElement(By.id(eltId)).isDisplayed()).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void testEditButtonsVisibility_owner() throws Throwable {
|
|
driver.get(server.getUrl("/registrar#whois-settings"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#security-settings"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#contact-settings"));
|
|
assertEltInvisible("reg-app-btns-edit");
|
|
assertEltVisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#resources"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
}
|
|
|
|
@Test
|
|
public void testEditButtonsVisibility_adminAndOwner() throws Throwable {
|
|
server.setIsAdmin(true);
|
|
driver.get(server.getUrl("/registrar#whois-settings"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#security-settings"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#contact-settings"));
|
|
assertEltInvisible("reg-app-btns-edit");
|
|
assertEltVisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#admin-settings"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar#resources"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
}
|
|
|
|
@Test
|
|
public void testEditButtonsVisibility_adminOnly() throws Throwable {
|
|
server.setIsAdmin(true);
|
|
// To make sure we're only ADMIN (and not also "OWNER"), we switch to the NewRegistrar we
|
|
// aren't in the contacts of
|
|
driver.get(server.getUrl("/registrar?clientId=NewRegistrar#whois-settings"));
|
|
assertEltInvisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar?clientId=NewRegistrar#security-settings"));
|
|
assertEltInvisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar?clientId=NewRegistrar#contact-settings"));
|
|
assertEltInvisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar?clientId=NewRegistrar#admin-settings"));
|
|
assertEltVisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
|
|
driver.get(server.getUrl("/registrar?clientId=NewRegistrar#resources"));
|
|
assertEltInvisible("reg-app-btns-edit");
|
|
assertEltInvisible("reg-app-btn-add");
|
|
}
|
|
|
|
@Test
|
|
public void testWhoisSettingsEdit() throws Throwable {
|
|
driver.get(server.getUrl("/registrar#whois-settings"));
|
|
driver.waitForElement(By.id("reg-app-btn-edit")).click();
|
|
driver.setFormFieldsById(new ImmutableMap.Builder<String, String>()
|
|
.put("emailAddress", "test1@example.com")
|
|
.put("clientIdentifier", "ignored")
|
|
.put("whoisServer", "foo.bar.baz")
|
|
.put("url", "blah.blar")
|
|
.put("phoneNumber", "+1.2125650000")
|
|
.put("faxNumber", "+1.2125650001")
|
|
.put("localizedAddress.street[0]", "Bőulevard őf")
|
|
.put("localizedAddress.street[1]", "Brőken Dreams")
|
|
.put("localizedAddress.street[2]", "")
|
|
.put("localizedAddress.city", "New York")
|
|
.put("localizedAddress.state", "NY")
|
|
.put("localizedAddress.zip", "10011")
|
|
.put("localizedAddress.countryCode", "US")
|
|
.build());
|
|
driver.findElement(By.id("reg-app-btn-save")).click();
|
|
Thread.sleep(1000);
|
|
Registrar registrar = server.runInAppEngineEnvironment(() -> loadRegistrar("TheRegistrar"));
|
|
assertThat(registrar.getEmailAddress()).isEqualTo("test1@example.com");
|
|
assertThat(registrar.getClientId()).isEqualTo("TheRegistrar");
|
|
assertThat(registrar.getWhoisServer()).isEqualTo("foo.bar.baz");
|
|
assertThat(registrar.getUrl()).isEqualTo("blah.blar");
|
|
assertThat(registrar.getPhoneNumber()).isEqualTo("+1.2125650000");
|
|
assertThat(registrar.getFaxNumber()).isEqualTo("+1.2125650001");
|
|
RegistrarAddress address = registrar.getLocalizedAddress();
|
|
assertThat(address.getStreet()).containsExactly("Bőulevard őf", "Brőken Dreams");
|
|
assertThat(address.getCity()).isEqualTo("New York");
|
|
assertThat(address.getState()).isEqualTo("NY");
|
|
assertThat(address.getZip()).isEqualTo("10011");
|
|
assertThat(address.getCountryCode()).isEqualTo("US");
|
|
}
|
|
|
|
@Test
|
|
public void testContactSettingsView() throws Throwable {
|
|
driver.get(server.getUrl("/registrar#contact-settings"));
|
|
driver.waitForElement(By.id("reg-app-btn-add"));
|
|
ImmutableList<RegistrarContact> contacts =
|
|
server.runInAppEngineEnvironment(
|
|
() -> loadRegistrar("TheRegistrar").getContacts().asList());
|
|
assertEltText("contacts[0].name", contacts.get(0).getName());
|
|
assertEltText("contacts[0].emailAddress", contacts.get(0).getEmailAddress());
|
|
assertEltText("contacts[0].phoneNumber", contacts.get(0).getPhoneNumber());
|
|
}
|
|
|
|
@Test
|
|
public void testSecuritySettingsView() throws Throwable {
|
|
driver.get(server.getUrl("/registrar#security-settings"));
|
|
driver.waitForElement(By.id("reg-app-btn-edit"));
|
|
Registrar registrar = server.runInAppEngineEnvironment(() -> loadRegistrar("TheRegistrar"));
|
|
assertThat(driver.findElement(By.id("phonePasscode"))
|
|
.getAttribute("value"))
|
|
.isEqualTo(registrar.getPhonePasscode());
|
|
}
|
|
}
|