mirror of
https://github.com/google/nomulus
synced 2026-08-16 04:06:09 +00:00
Rename Spec11Pipeline's Subdomain -> DomainNameInfo (#1318)
* Rename Spec11Pipeline's Subdomain -> DomainNameInfo "Subdomain" never made any sense as a class name because these are all second-level domain names, along with a little bit of metadata such as some registrar info. "DomainNameInfo" is a better fit.
This commit is contained in:
@@ -80,7 +80,7 @@ class SafeBrowsingTransformsTest {
|
||||
private static final String REGISTRAR_ID = "registrarID";
|
||||
private static final String REGISTRAR_EMAIL = "email@registrar.net";
|
||||
|
||||
private static ImmutableMap<Subdomain, ThreatMatch> THREAT_MATCH_MAP;
|
||||
private static ImmutableMap<DomainNameInfo, ThreatMatch> THREAT_MATCH_MAP;
|
||||
|
||||
private final CloseableHttpClient mockHttpClient =
|
||||
mock(CloseableHttpClient.class, withSettings().serializable());
|
||||
@@ -95,24 +95,25 @@ class SafeBrowsingTransformsTest {
|
||||
final TestPipelineExtension pipeline =
|
||||
TestPipelineExtension.create().enableAbandonedNodeEnforcement(true);
|
||||
|
||||
private static Subdomain createSubdomain(String url) {
|
||||
return Subdomain.create(url, REPO_ID, REGISTRAR_ID, REGISTRAR_EMAIL);
|
||||
private static DomainNameInfo createDomainNameInfo(String url) {
|
||||
return DomainNameInfo.create(url, REPO_ID, REGISTRAR_ID, REGISTRAR_EMAIL);
|
||||
}
|
||||
|
||||
private KV<Subdomain, ThreatMatch> getKv(String url) {
|
||||
Subdomain subdomain = createSubdomain(url);
|
||||
return KV.of(subdomain, THREAT_MATCH_MAP.get(subdomain));
|
||||
private KV<DomainNameInfo, ThreatMatch> getKv(String url) {
|
||||
DomainNameInfo domainNameInfo = createDomainNameInfo(url);
|
||||
return KV.of(domainNameInfo, THREAT_MATCH_MAP.get(domainNameInfo));
|
||||
}
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
ImmutableMap.Builder<Subdomain, ThreatMatch> builder = new ImmutableMap.Builder<>();
|
||||
ImmutableMap.Builder<DomainNameInfo, ThreatMatch> builder = new ImmutableMap.Builder<>();
|
||||
THREAT_MAP
|
||||
.entrySet()
|
||||
.forEach(
|
||||
kv ->
|
||||
builder.put(
|
||||
createSubdomain(kv.getKey()), ThreatMatch.create(kv.getValue(), kv.getKey())));
|
||||
createDomainNameInfo(kv.getKey()),
|
||||
ThreatMatch.create(kv.getValue(), kv.getKey())));
|
||||
THREAT_MATCH_MAP = builder.build();
|
||||
}
|
||||
|
||||
@@ -123,16 +124,16 @@ class SafeBrowsingTransformsTest {
|
||||
|
||||
@Test
|
||||
void testSuccess_someBadDomains() throws Exception {
|
||||
ImmutableList<Subdomain> subdomains =
|
||||
ImmutableList<DomainNameInfo> domainNameInfos =
|
||||
ImmutableList.of(
|
||||
createSubdomain("111.com"),
|
||||
createSubdomain("hooli.com"),
|
||||
createSubdomain("party-night.net"),
|
||||
createSubdomain("anti-anti-anti-virus.dev"),
|
||||
createSubdomain("no-email.com"));
|
||||
PCollection<KV<Subdomain, ThreatMatch>> threats =
|
||||
createDomainNameInfo("111.com"),
|
||||
createDomainNameInfo("hooli.com"),
|
||||
createDomainNameInfo("party-night.net"),
|
||||
createDomainNameInfo("anti-anti-anti-virus.dev"),
|
||||
createDomainNameInfo("no-email.com"));
|
||||
PCollection<KV<DomainNameInfo, ThreatMatch>> threats =
|
||||
pipeline
|
||||
.apply(Create.of(subdomains).withCoder(SerializableCoder.of(Subdomain.class)))
|
||||
.apply(Create.of(domainNameInfos).withCoder(SerializableCoder.of(DomainNameInfo.class)))
|
||||
.apply(ParDo.of(safeBrowsingFn));
|
||||
|
||||
PAssert.that(threats)
|
||||
@@ -146,14 +147,14 @@ class SafeBrowsingTransformsTest {
|
||||
|
||||
@Test
|
||||
void testSuccess_noBadDomains() throws Exception {
|
||||
ImmutableList<Subdomain> subdomains =
|
||||
ImmutableList<DomainNameInfo> domainNameInfos =
|
||||
ImmutableList.of(
|
||||
createSubdomain("hello_kitty.dev"),
|
||||
createSubdomain("555.com"),
|
||||
createSubdomain("goodboy.net"));
|
||||
PCollection<KV<Subdomain, ThreatMatch>> threats =
|
||||
createDomainNameInfo("hello_kitty.dev"),
|
||||
createDomainNameInfo("555.com"),
|
||||
createDomainNameInfo("goodboy.net"));
|
||||
PCollection<KV<DomainNameInfo, ThreatMatch>> threats =
|
||||
pipeline
|
||||
.apply(Create.of(subdomains).withCoder(SerializableCoder.of(Subdomain.class)))
|
||||
.apply(Create.of(domainNameInfos).withCoder(SerializableCoder.of(DomainNameInfo.class)))
|
||||
.apply(ParDo.of(safeBrowsingFn));
|
||||
|
||||
PAssert.that(threats).empty();
|
||||
|
||||
@@ -94,13 +94,16 @@ class Spec11PipelineTest {
|
||||
private final CloseableHttpClient mockHttpClient =
|
||||
mock(CloseableHttpClient.class, withSettings().serializable());
|
||||
|
||||
private static final ImmutableList<Subdomain> SUBDOMAINS =
|
||||
private static final ImmutableList<DomainNameInfo> DOMAIN_NAME_INFOS =
|
||||
ImmutableList.of(
|
||||
Subdomain.create("111.com", "123456789-COM", "hello-registrar", "email@hello.net"),
|
||||
Subdomain.create("party-night.net", "2244AABBC-NET", "kitty-registrar", "contact@kit.ty"),
|
||||
Subdomain.create("bitcoin.bank", "1C3D5E7F9-BANK", "hello-registrar", "email@hello.net"),
|
||||
Subdomain.create("no-email.com", "2A4BA9BBC-COM", "kitty-registrar", "contact@kit.ty"),
|
||||
Subdomain.create(
|
||||
DomainNameInfo.create("111.com", "123456789-COM", "hello-registrar", "email@hello.net"),
|
||||
DomainNameInfo.create(
|
||||
"party-night.net", "2244AABBC-NET", "kitty-registrar", "contact@kit.ty"),
|
||||
DomainNameInfo.create(
|
||||
"bitcoin.bank", "1C3D5E7F9-BANK", "hello-registrar", "email@hello.net"),
|
||||
DomainNameInfo.create(
|
||||
"no-email.com", "2A4BA9BBC-COM", "kitty-registrar", "contact@kit.ty"),
|
||||
DomainNameInfo.create(
|
||||
"anti-anti-anti-virus.dev", "555666888-DEV", "cool-registrar", "cool@aid.net"));
|
||||
|
||||
private static final ImmutableList<ThreatMatch> THREAT_MATCHES =
|
||||
@@ -129,7 +132,7 @@ class Spec11PipelineTest {
|
||||
PipelineOptionsFactory.create().as(Spec11PipelineOptions.class);
|
||||
|
||||
private File reportingBucketUrl;
|
||||
private PCollection<KV<Subdomain, ThreatMatch>> threatMatches;
|
||||
private PCollection<KV<DomainNameInfo, ThreatMatch>> threatMatches;
|
||||
|
||||
ImmutableSet<Spec11ThreatMatch> sqlThreatMatches;
|
||||
|
||||
@@ -143,11 +146,11 @@ class Spec11PipelineTest {
|
||||
threatMatches =
|
||||
pipeline.apply(
|
||||
Create.of(
|
||||
Streams.zip(SUBDOMAINS.stream(), THREAT_MATCHES.stream(), KV::of)
|
||||
Streams.zip(DOMAIN_NAME_INFOS.stream(), THREAT_MATCHES.stream(), KV::of)
|
||||
.collect(toImmutableList()))
|
||||
.withCoder(
|
||||
KvCoder.of(
|
||||
SerializableCoder.of(Subdomain.class),
|
||||
SerializableCoder.of(DomainNameInfo.class),
|
||||
SerializableCoder.of(ThreatMatch.class))));
|
||||
|
||||
sqlThreatMatches =
|
||||
@@ -223,8 +226,8 @@ class Spec11PipelineTest {
|
||||
@Test
|
||||
void testSuccess_readFromCloudSql() throws Exception {
|
||||
setupCloudSql();
|
||||
PCollection<Subdomain> subdomains = Spec11Pipeline.readFromCloudSql(pipeline);
|
||||
PAssert.that(subdomains).containsInAnyOrder(SUBDOMAINS);
|
||||
PCollection<DomainNameInfo> domainNameInfos = Spec11Pipeline.readFromCloudSql(pipeline);
|
||||
PAssert.that(domainNameInfos).containsInAnyOrder(DOMAIN_NAME_INFOS);
|
||||
pipeline.run().waitUntilFinish();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Map from registrar email / name to detected subdomain threats:
|
||||
Map from registrar email / name to detected domain name threats:
|
||||
{"threatMatches":[{"threatType":"UNWANTED_SOFTWARE","fullyQualifiedDomainName":"anti-anti-anti-virus.dev"}],"registrarClientId":"cool-registrar","registrarEmailAddress":"cool@aid.net"}
|
||||
{"threatMatches":[{"threatType":"MALWARE","fullyQualifiedDomainName":"111.com"},{"threatType":"POTENTIALLY_HARMFUL_APPLICATION","fullyQualifiedDomainName":"bitcoin.bank"}],"registrarClientId":"hello-registrar","registrarEmailAddress":"email@hello.net"}
|
||||
{"threatMatches":[{"threatType":"THREAT_TYPE_UNSPECIFIED","fullyQualifiedDomainName":"no-eamil.com"},{"threatType":"SOCIAL_ENGINEERING","fullyQualifiedDomainName":"party-night.net"}],"registrarClientId":"kitty-registrar","registrarEmailAddress":"contact@kit.ty"}
|
||||
Reference in New Issue
Block a user