From cf6dcb6af74462b5119cb35492a50b78910b8a4f Mon Sep 17 00:00:00 2001
From: Mallory Adams
Date: Fri, 19 Aug 2022 14:09:44 -0400
Subject: [PATCH] Allow some email addresses to contain single quote characters
---
.../java/com/github/javafaker/Internet.java | 2 +-
src/main/java/com/github/javafaker/Name.java | 26 +++++++++++++++++++
.../java/com/github/javafaker/NameTest.java | 15 ++++++++++-
3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/github/javafaker/Internet.java b/src/main/java/com/github/javafaker/Internet.java
index 163a072e4..58d1a54b3 100644
--- a/src/main/java/com/github/javafaker/Internet.java
+++ b/src/main/java/com/github/javafaker/Internet.java
@@ -19,7 +19,7 @@ protected Internet(Faker faker) {
}
public String emailAddress() {
- return emailAddress(faker.name().username());
+ return emailAddress(faker.name().localPart());
}
public String emailAddress(String localPart) {
diff --git a/src/main/java/com/github/javafaker/Name.java b/src/main/java/com/github/javafaker/Name.java
index 0a5238f1d..dd3f25ee8 100644
--- a/src/main/java/com/github/javafaker/Name.java
+++ b/src/main/java/com/github/javafaker/Name.java
@@ -129,6 +129,32 @@ public String username() {
return StringUtils.deleteWhitespace(username);
}
+
+ /**
+ *
+ * A lowercase local part of an email address composed of the first_name and last_name joined with a '.'. Some
+ * examples are:
+ *
+ * - (template) {@link #firstName()}.{@link #lastName()}
+ * - jim.o'brian
+ * - jason.leigh
+ * - tracy.jordan
+ *
+ *
+ * @return a random two part local part of an email address.
+ * @see Name#firstName()
+ * @see Name#lastName()
+ */
+ public String localPart() {
+
+ String username = StringUtils.join(
+ firstName().toLowerCase(),
+ ".",
+ lastName().toLowerCase()
+ );
+
+ return StringUtils.deleteWhitespace(username);
+ }
/**
* Returns a blood group such as O−, O+, A-, A+, B-, B+, AB-, AB+
diff --git a/src/test/java/com/github/javafaker/NameTest.java b/src/test/java/com/github/javafaker/NameTest.java
index 6649fdd63..d9dd3f4f3 100644
--- a/src/test/java/com/github/javafaker/NameTest.java
+++ b/src/test/java/com/github/javafaker/NameTest.java
@@ -74,7 +74,20 @@ public void testUsernameWithSpaces() {
doReturn(name).when(faker).name();
assertThat(faker.name().username(), matchesRegularExpression("^(\\w+)\\.(\\w+)$"));
}
-
+
+ @Test
+ public void testLocalPart() {
+ assertThat(faker.name().localPart(), matchesRegularExpression("^([\\w']+)\\.([\\w']+)$"));
+ }
+
+ @Test
+ public void testLocalPartWithSpaces() {
+ final Name name = spy(new Name(faker));
+ doReturn("Compound Name").when(name).firstName();
+ doReturn(name).when(faker).name();
+ assertThat(faker.name().localPart(), matchesRegularExpression("^([\\w']+)\\.([\\w']+)$"));
+ }
+
@Test
public void testBloodGroup() {
assertThat(faker.name().bloodGroup(), matchesRegularExpression("(A|B|AB|O)[+-]"));