Skip to content

Commit 9457877

Browse files
rweisledermariuszs
authored andcommitted
fix: ensure same passwords for same random seeds
Replace RandomStringUtils.randomAlphanumeric() with baseProducer.bothify() for deterministic password generation based on the random seed. Fixes #130 Based on PR #131 by @rweisleder.
1 parent 3d0dd93 commit 9457877

11 files changed

Lines changed: 58 additions & 57 deletions

File tree

src/main/java/com/devskiller/jfairy/producer/person/DefaultPersonProvider.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import java.time.temporal.ChronoUnit;
66
import java.util.List;
77

8-
import org.apache.commons.lang3.RandomStringUtils;
9-
108
import com.devskiller.jfairy.data.DataMaster;
119
import com.devskiller.jfairy.producer.BaseProducer;
1210
import com.devskiller.jfairy.producer.DateProducer;
@@ -226,8 +224,11 @@ public void generatePassword() {
226224
if (password != null) {
227225
return;
228226
}
229-
// FIXME: Replace this with baseProducer
230-
password = RandomStringUtils.randomAlphanumeric(8);
227+
StringBuilder passwordPattern = new StringBuilder();
228+
for (int i = baseProducer.randomBetween(6, 14); i > 0; i--) {
229+
passwordPattern.append(baseProducer.randomElement("?", "#"));
230+
}
231+
password = baseProducer.bothify(passwordPattern.toString());
231232
}
232233

233234
@Override

src/test/groovy/com/devskiller/jfairy/FairyDeSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class FairyDeSpec extends Specification {
2323
when:
2424
Person person = fairy.person();
2525
then:
26-
person.address.city == 'Schlitz'
26+
person.address.city == 'Eschenburg'
2727
}
2828

2929
}

src/test/groovy/com/devskiller/jfairy/FairyFrSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class FairyFrSpec extends Specification {
2020
when:
2121
Person person = fairy.person();
2222
then:
23-
person.address.city == 'Vannes'
23+
person.address.city == 'Rosny-sous-Bois'
2424
}
2525

2626
}

src/test/groovy/com/devskiller/jfairy/FairyKaSpec.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,20 @@ class FairyKaSpec extends Specification {
2121
when:
2222
Person person = fairy.person()
2323
then:
24-
person.address.street == 'აგლაძის ქუჩა' // Agladze Street
24+
person.address.street == 'კოსტავას'
2525
}
2626

2727
def "Should create Georgian city"() {
2828
when:
2929
Person person = fairy.person()
3030
then:
31-
person.address.city == 'ზესტაფონი' // Sagarejo
31+
person.address.city == 'გორი'
3232
}
3333

3434
def "Should create Georgian ID card"() {
3535
when:
3636
Person person = fairy.person()
3737
then:
38-
person.nationalIdentityCardNumber == 'Nლ4757825'
38+
person.nationalIdentityCardNumber == 'Nხ4686471'
3939
}
4040
}

src/test/groovy/com/devskiller/jfairy/FairyZhSpec.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ class FairyZhSpec extends Specification {
4343
when:
4444
Person person = fairy.person()
4545
then:
46-
person.address.addressLine1 == '杭州市内环路45号'
46+
person.address.addressLine1 == '广州市滨江路153号'
4747
}
4848

4949
def "Should create Chinese city"() {
5050
when:
5151
Person person = fairy.person()
5252
then:
53-
person.address.city == '杭州'
53+
person.address.city == '广州'
5454
}
5555

5656
/********************

src/test/groovy/com/devskiller/jfairy/producer/person/locale/de/DeAddressSpec.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ class DeAddressSpec extends Specification {
1818

1919
def "should generate random street"() {
2020
expect:
21-
address.street == 'Sautterweg'
21+
address.street == 'Sonnenburger Weg'
2222
}
2323

2424
def "should generate random streetNumber"() {
2525
expect:
26-
address.streetNumber == '21'
26+
address.streetNumber == '99'
2727
}
2828

2929
def "should generate random apartmentNumber"() {
3030
expect:
31-
address.apartmentNumber == '50'
31+
address.apartmentNumber == ''
3232
}
3333

3434
def "should generate random postalCode"() {
3535
expect:
36-
address.postalCode == '71138'
36+
address.postalCode == '98126'
3737
}
3838

3939
def "should generate random city"() {
4040
expect:
41-
address.city == 'Maxhütte Haidhof'
41+
address.city == 'Wetschen'
4242
}
4343

4444
def "should return addressLine1 in de locale format"() {
4545
expect:
46-
address.addressLine1 == 'Sautterweg 21, 50'
46+
address.addressLine1 == 'Sonnenburger Weg 99'
4747
}
4848

4949
def "should return addressLine2 in de locale format"() {
5050
expect:
51-
address.addressLine2 == '71138 Maxhütte Haidhof'
51+
address.addressLine2 == '98126 Wetschen'
5252
}
5353

5454
def "should return address in de locale format"() {
5555
expect:
56-
address.toString() == "Sautterweg 21, 50${System.lineSeparator()}71138 Maxhütte Haidhof"
56+
address.toString() == "Sonnenburger Weg 99${System.lineSeparator()}98126 Wetschen"
5757
}
5858

5959
}

src/test/groovy/com/devskiller/jfairy/producer/person/locale/en/EnAddressSpec.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ class EnAddressSpec extends Specification {
1818

1919
def "should generate random street"() {
2020
expect:
21-
address.street == "Washington Walk"
21+
address.street == "Herzi Street"
2222
}
2323

2424
def "should generate random streetNumber"() {
2525
expect:
26-
address.streetNumber == "42"
26+
address.streetNumber == "63"
2727
}
2828

2929
def "should generate random apartmentNumber"() {
3030
expect:
31-
address.apartmentNumber == "86"
31+
address.apartmentNumber == ""
3232
}
3333

3434
def "should generate random postalCode"() {
3535
expect:
36-
address.postalCode == "86645"
36+
address.postalCode == "42856"
3737
}
3838

3939
def "should generate random city"() {
4040
expect:
41-
address.city == "San Francisco"
41+
address.city == "Miami"
4242
}
4343

4444
def "should return addressLine1 in en locale format"() {
4545
expect:
46-
address.addressLine1 == "42 Washington Walk APT 86"
46+
address.addressLine1 == "63 Herzi Street"
4747
}
4848

4949
def "should return addressLine2 in en locale format"() {
5050
expect:
51-
address.addressLine2 == "San Francisco 86645"
51+
address.addressLine2 == "Miami 42856"
5252
}
5353

5454
def "should return address in en locale format"() {
5555
expect:
56-
address.toString() == "42 Washington Walk APT 86" + System.lineSeparator() + "San Francisco 86645"
56+
address.toString() == "63 Herzi Street" + System.lineSeparator() + "Miami 42856"
5757
}
5858

5959
}

src/test/groovy/com/devskiller/jfairy/producer/person/locale/es/EsAddressSpec.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ class EsAddressSpec extends Specification {
1818

1919
def "should generate random street"() {
2020
expect:
21-
address.street == "Gran Vía"
21+
address.street == "Colón"
2222
}
2323

2424
def "should generate random streetNumber"() {
2525
expect:
26-
address.streetNumber == "32"
26+
address.streetNumber == "101"
2727
}
2828

2929
def "should generate random apartmentNumber"() {
3030
expect:
31-
address.apartmentNumber == "64"
31+
address.apartmentNumber == ""
3232
}
3333

3434
def "should generate random postalCode"() {
3535
expect:
36-
address.postalCode == "79.638"
36+
address.postalCode == "79.240"
3737
}
3838

3939
def "should generate random city"() {
4040
expect:
41-
address.city == "Ciudad Real"
41+
address.city == "Algeciras"
4242
}
4343

4444
def "should return addressLine1 in es locale format"() {
4545
expect:
46-
address.addressLine1 == "Gran Vía, 32 64"
46+
address.addressLine1 == "Colón, 101"
4747
}
4848

4949
def "should return addressLine2 in es locale format"() {
5050
expect:
51-
address.addressLine2 == "79.638 Ciudad Real"
51+
address.addressLine2 == "79.240 Algeciras"
5252
}
5353

5454
def "should return address in es locale format"() {
5555
expect:
56-
address.toString() == "Gran Vía, 32 64" + System.lineSeparator() + "79.638 Ciudad Real"
56+
address.toString() == "Colón, 101" + System.lineSeparator() + "79.240 Algeciras"
5757
}
5858

5959
}

src/test/groovy/com/devskiller/jfairy/producer/person/locale/ka/KaAddressSpec.groovy

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ class KaAddressSpec extends Specification {
2121

2222
def "should generate random street"() {
2323
expect:
24-
address.street == "ნინოშვილის ქუჩა"
24+
address.street == "დავით აღმაშენებლის გამზირი"
2525
}
2626

2727
def "should generate random streetNumber"() {
2828
expect:
29-
address.streetNumber == "179"
29+
address.streetNumber == "110"
3030
}
3131

3232
def "should generate random apartmentNumber"() {
@@ -36,26 +36,26 @@ class KaAddressSpec extends Specification {
3636

3737
def "should generate random postalCode"() {
3838
expect:
39-
address.postalCode == "6981"
39+
address.postalCode == "6003"
4040
}
4141

4242
def "should generate random city"() {
4343
expect:
44-
address.city == "წყალტუბო"
44+
address.city == "გარდაბანი"
4545
}
4646

4747
def "should return addressLine1 in GE locale format"() {
4848
expect:
49-
address.addressLine1 == "6981, წყალტუბო" // ZIP, city
49+
address.addressLine1 == "6003, გარდაბანი" // ZIP, city
5050
}
5151

5252
def "should return addressLine2 in GE locale format"() {
5353
expect:
54-
address.addressLine2 == "ნინოშვილის ქუჩა №179" // street & number & appartment
54+
address.addressLine2 == "დავით აღმაშენებლის გამზირი №110" // street & number & appartment
5555
}
5656

5757
def "should return address in GE locale format"() {
5858
expect:
59-
address.toString() == "6981, წყალტუბო${lineSeparator()}ნინოშვილის ქუჩა №179"
59+
address.toString() == "6003, გარდაბანი${lineSeparator()}დავით აღმაშენებლის გამზირი №110"
6060
}
6161
}

src/test/groovy/com/devskiller/jfairy/producer/person/locale/pl/PlAddressSpec.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ class PlAddressSpec extends Specification {
1818

1919
def "should generate random street"() {
2020
expect:
21-
address.street == "Długorzeczna"
21+
address.street == "Prosta"
2222
}
2323

2424
def "should generate random streetNumber"() {
2525
expect:
26-
address.streetNumber == "62"
26+
address.streetNumber == "71"
2727
}
2828

2929
def "should generate random apartmentNumber"() {
3030
expect:
31-
address.apartmentNumber == "89"
31+
address.apartmentNumber == ""
3232
}
3333

3434
def "should generate random postalCode"() {
3535
expect:
36-
address.postalCode == "39-682"
36+
address.postalCode == "26-077"
3737
}
3838

3939
def "should generate random city"() {
4040
expect:
41-
address.city == "Zławieś Wielka"
41+
address.city == "Pniewy"
4242
}
4343

4444
def "should return addressLine1 in pl locale format"() {
4545
expect:
46-
address.addressLine1 == "Długorzeczna 62, 89"
46+
address.addressLine1 == "Prosta 71"
4747
}
4848

4949
def "should return addressLine2 in pl locale format"() {
5050
expect:
51-
address.addressLine2 == "39-682 Zławieś Wielka"
51+
address.addressLine2 == "26-077 Pniewy"
5252
}
5353

5454
def "should return address in pl locale format"() {
5555
expect:
56-
address.toString() == "Długorzeczna 62, 89" + System.lineSeparator() + "39-682 Zławieś Wielka"
56+
address.toString() == "Prosta 71" + System.lineSeparator() + "26-077 Pniewy"
5757
}
5858

5959
}

0 commit comments

Comments
 (0)