Our whois format was flagged as wrong in the .meet PDT. Although
we had followed the AWIP samples from ICANN, the definitive list
of field names is from Specification 4 of our contract, available at
https://newgtlds.icann.org/sites/default/files/agreements/agreement-approved-09jan14-en.htm
and indeed our fields are incorrect. (The remaining formatting issues
are ambiguous but the PDT testers' interpretation is probably correct.)
Since the footer format is now somewhat more complicated, I also denormalized
the disclaimer field into all of the testdata files. (I spent some time
debugging an extra newline between the content and the disclaimer, and
it would have been far clearer to solve if the files had been this way.)
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=120338930
Also adds tests for currency consistency for other costs, and cleans
up some of the testing for negative currencies (since I was there).
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=120231198
This is part 2 of a longer series. Part 3 will add lots more tests, will add a cron entry, and will include an analysis script to run on BigQuery to detect the presence of two consecutive errors.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=120040267
This CL fixes bugs introduced when the premium list commands were moved to
be server-side commands.
Fixes:
- omitting the --name parameter actually works now; before it was failing
in the local build() call since it uses the name as the @Id and tries to
create a key for PremiumListRevision, but key IDs cannot be null.
- premium list data larger than about 2K works now (see [] before
it was stuffing the list data all into a POST query parameter, and URLs of
more than 2K in length were all getting 404s. Fix was changing it to put
the inputData param in the POST body.
- misc test cleanup
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119912494
Backfill [] to follow, and the Recurring billing events will eventually be replicated as OneTime via a regular job.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119883652
Also throwing in a proof-of-concept MR that I'd like to run in production, and then scrap once the meaty MR is finished (e.g. exploding Recurring billing events into OneTimes).
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119881471
I'm writing a follow-up CL that will send integrity checking data to
BigQuery, and that is made a lot easier by centralizing the BigQuery
connection logic.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119375766
This is the tool we'll run after dumping everything in sandbox except
for Registrars, Registries, and RegistrarContacts, in order to
re-create the commit logs on said entities.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119369873
This fixes a previous issue where metrics generated on the
tools/backend modules weren't being successfully exported to BigQuery.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119047757
There's no point in having this extra package exclusively for
[]s, especially because we already weren't being consistent and
had multiple []s in the tools/server package.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=118807843
In order to set the customerId field on a payment, the customer entry
must exist in Braintree's database. This CL causes it to be created or
updated before processing the payment.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=118530040
Removed "run_as_a_service" parameter from backup.create command in DatastoreBackupService.
This parameter can't be used externally, and is apparently no longer needed.
* DnsUpdateWriter publishes changes to NS, DS, A, AAAA records
for domains/hosts as appropriate using RFC 2136 DNS UPDATE protocol
* Static configuration separate from RegistryConfig
* Include dnsjava library as new third party dependency
to generate DNS protocol messages
* Expose /_dr/task/writeDns in RegistryTestServer
* Currently not included in BackendComponent
The payment page has also been updated to refuse to show itself if
the registrar is not set to credit card billing terms.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117983313
1. Turn ConsoleUiServlet into an action
2. Remove AbstractUiServlet, which fixes its threading bug
3. Use type-safe soy template parameters when rendering console
A follow-up change will add a new template parameter that renders the
payment page link on the navigation bar.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117969638
Reloading the entities under test every time is more resilient to
coding errors than trying to ensure that a local variable is kept up
to date. It also reduces total LoC in the test file.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117842135
The APNIC conformance checker points out that, according to RFC 7483,
RDAP remarks should be included only as part of object classes such as
domains, nameservers and entities, not in help responses and so on.
Note that something is amiss here -- If RFC 7483 is read strictly, the
remarks boilerplate for domain, nameserver and entity search results
should appear not at the top level, as we currently do, but as part of
each constituent object. However, the conformance checker does not
seem to complain about that. So I have added this to the RDAP questions
list, and am leaving the boilerplate at the top level for now.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117557594
RFC 7483 defines a way to attach events (such as registration, renewal, etc.) to domains, nameservers and entities. The ICANN Profile calls out particular events: registration, expiration, last changed and last update. This CL implements all the ICANN-defined events except last update (defined to be the last update time of the database), which doesn't make so much sense in our system.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117546838
This improves one of our gTech processes so they no longer have to remember to create Google Groups for a registrar after creating that registrar.
The ConfirmingCommand.verify() method is renamed to be more general purpose, so that it can do anything that follows naturally after a successful execution, such as creating Google Groups groups.
Minor refactoring is done around RegistryToolEnvironment handling for tests to make it more bullet-proof and general case.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117494277
Here's an alternate approach that I think simplifies the existing
code quite a bit. Now instead of doing:
RegistryToolEnvironment.loadFromArgs(args);
RegistryToolEnvironment.get().setup();
You just do one chained call:
RegistryToolEnvironment.parseFromArgs(args).setup();
or call setup() on a known environment constant:
RegistryToolEnvironment.ALPHA.setup();
This avoids having loadFromArgs() implicitly set the active env
(but *not* do setup) and then having setup() *not* set the active
env, both of which were confusing. Now parseFromArgs() is only
responsible for parsing from args, and setup() both sets the env
as the active one and does the environment variable setup (which
also ensures that the RegistryToolEnvironment.instance field
doesn't get out of sync with the RegistryEnvironment value).
In addition, this CL adds a runCommandInEnvironment() method to
CommandTestCase and ensures that the UNITTEST environment is always
set before constructing the default command instance.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117492978
The previous code would not execute after failure tests that ended
with thrown exceptions, potentially causing issues with post-run
verification inside of tests.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117484219
This frankenclass was starting to get a little cluttered, especially once I add the ChildEntityInput/Reader.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117266882
This is cleanup relating to a naming decision that we made awhile ago
but never got around to.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117244827
This CL does a very similar cleanup to Cancellation as the diffbase
does to GracePeriod - see [] It simplifes logic where we
used to overload methods to accept eitherw OneTime or Recurring billing
events refs, despite storing them in separate fields in the entity
(since BillingEvent is not a polymorphic superclass, just a Java-only
one, you can't store them as refs to BillingEvent).
That overloading was ultimately only there as a convenience/hack from
when we added Recurring events and didn't want to go back and change
everything. It obfuscates what's really going on, requires extra
casting/loss of type-safety, and relies on indirect signals (e.g. the
Billing event reason being AUTO_RENEW) to guess what the right billing
event type is. That latter aspect will likely no longer work in a
monthly billing world, and was brittle anyways (as came up in the
context of removing the AUTO_RENEW reason - see []
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117165174
This CL cleans up some old crufy logic in GracePeriod that overloaded
methods to accept either OneTime or Recurring billing events refs,
despite storing them in separate fields in the entity (since
BillingEvent is not a polymorphic superclass, just a Java-only one,
you can't store them as refs to BillingEvent).
That overloading was ultimately only there as a convenience/hack from
when we added Recurring events and didn't want to go back and change
everything. It obfuscates what's really going on, requires extra
casting/loss of type-safety, and relies on indirect signals (e.g. the
grace period type being AUTO_RENEW) to guess what the right billing
event type is. That latter aspect will likely no longer work in a
monthly billing world, and was brittle in any case.
A coming CL will rip the same logic out of Cancellation.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=117164286
The client ID is passed as the "customer ID" to Braintree. In order for
this to work, someone needs to go into the Braintree website beforehand,
click on "New Customer" link, and create the customer record with a
matching ID.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=116769955
The ExportDomainListsAction [] has a cron entry that runs it twice per day. It exports one flat text file per real (non-test) TLD to the "{project-id}-domain-lists" bucket in Google Cloud Storage, overwriting the existing ones in place. Each file is a newline-delimited list of active (non-deleted) domains in that TLD.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=116767987
The admin console needs public visibility for additional targets.
//java/com/google/domain/registry/tools/params
- Needed for the Whois test server
//java/com/google/domain/registry/whois
- Needed for reusing WhoisHttpServer in the whois appengine module
//javatests/com/google/domain/registry/server
- Needed for the Whois test server
The ICANN RDAP Profile (dated 3 December 2015) requires certain boilerplate entries at the top level of the JSON object. Specifically:
1.4.4. The terms of service of the RDAP service MUST be specified in the
notices object in the topmost JSON object of the response. The notices
object MUST contain a links object [RFC7483]. The links object MUST
contain an URL of the contracted party providing the RDAP service.
1.4.10. An RDAP response MUST contain a remarks member with a description
containing the string “This response conforms to the RDAP Operational
Profile for gTLD Registries and Registrars version 1.0”.
1.5.18. A domain name RDAP response MUST contain a remarks member with
a title “EPP Status Codes”, a description containing the string “For
more information on domain status codes, please visit
https://icann.org/epp” and a links member with the
https://icann.org/epp URL.
1.5.20. A domain name RDAP response MUST contain a remarks member with
a title “Whois Inaccuracy Complaint Form”, a description containing
the string “URL of the ICANN Whois Inaccuracy Complaint Form:
https://www.icann.org/wicf” and a links member with the
https://www.icann.org/wicf URL.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=116389950
This is so Donuts can create entirely separate Bazel repositories that
link against the Domain Registry codebase.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=116182448
goog.dom.htmlToDocumentFragment is going to be removed in [] It is removed because its usage can cause XSS.
More information: []
Tested:
TAP --sample for global presubmit queue
[]
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=116081948