1
0
mirror of https://github.com/askn/faker.git synced 2023-08-10 21:13:01 +03:00
faker/spec/internet_spec.cr
Caroline Glassberg-Powell 284782b26a GH-2 Add ability to seed
All the random functions are now passed through Faker.rng, a random
number generator that is created by default, but can also be set with
`Faker.seed`.

The tests use all the examples in the README to ensure that everything
has been seeded properly.

The only module not updated is Finance, but that's because the file
itself did not seem to compile, and there weren't any examples of using
it in the README.
2017-07-09 12:44:14 +01:00

201 lines
6.7 KiB
Crystal

require "./spec_helper"
describe Faker::Internet do
it "email" do
Faker::Internet.email.match(/.+@.+\.\w+/).should_not eq nil
end
it "free_email" do
Faker::Internet.free_email.match(/.+@(gmail|hotmail|yahoo)\.com/).should_not eq nil
end
it "safe_email" do
Faker::Internet.safe_email.match(/.+@example.(com|net|org)/).should_not eq nil
end
it "user_name" do
Faker::Internet.user_name.match(/[a-z]+((_|\.)[a-z]+)?/).should_not eq nil
end
it "user_name_with_string_arg" do
Faker::Internet.user_name("bo peep").match(/(bo(_|\.)peep|peep(_|\.)bo)/).should_not eq nil
end
it "user_name_with_integer_arg" do
(1..32).to_a.each do |min_length|
(Faker::Internet.user_name(min_length).size >= min_length).should be_true
end
end
it "user_name_with_closed_range_arg" do
(1..32).to_a.each do |min_length|
(min_length..32).each do |max_length|
l = Faker::Internet.user_name((min_length..max_length)).size
(l >= min_length).should be_true
(l <= max_length).should be_true
end
end
end
it "user_name_with_open_range_arg" do
(1..32).to_a.each do |min_length|
(min_length + 1..33).each do |max_length|
l = Faker::Internet.user_name((min_length...max_length)).size
(l >= min_length).should be_true
(l <= max_length - 1).should be_true
end
end
end
it "user_name_with_range_and_separators" do
(1..32).to_a.each do |min_length|
(min_length + 1..33).each do |max_length|
u = Faker::Internet.user_name((min_length...max_length), %w(=))
(min_length <= u.size <= max_length - 1).should be_true
u.match(/\A[a-z]+((=)?[a-z]*)*\z/).should_not eq nil
end
end
end
it "password" do
Faker::Internet.password.match(/\w{3}/).should_not eq nil
end
it "password_with_integer_arg" do
(1..32).to_a.each do |min_length|
it { (Faker::Internet.password(min_length).size >= min_length).should be_true }
end
end
it "password_max_with_integer_arg" do
(1..32).to_a.each do |min_length|
max_length = min_length + 4
it { (Faker::Internet.password(min_length, max_length).size <= max_length).should be_true }
end
end
it "password_with_mixed_case" do
Faker::Internet.password.match(/[A-Z]+/).should_not eq nil
end
it "password_without_mixed_case" do
Faker::Internet.password(8, 12, false).match(/[^A-Z]+/).should_not eq nil
end
it "password_with_special_chars" do
Faker::Internet.password(8, 12, true, true).match(/[!@#\$%\^&\*]+/).should_not eq nil
end
it "password_without_special_chars" do
Faker::Internet.password(8, 12, true).match(/[^!@#\$%\^&\*]+/).should_not eq nil
end
it "domain_name" do
Faker::Internet.domain_name.match(/\w+\.\w+/).should_not eq nil
end
it "domain_word" do
Faker::Internet.domain_word.match(/^\w+$/).should_not eq nil
end
it "domain_suffix" do
Faker::Internet.domain_suffix.match(/^\w+(\.\w+)?/).should_not eq nil
end
it "ip_v4_address" do
Faker::Internet.ip_v4_address.count('.').should eq 3
100.times do
(Faker::Internet.ip_v4_address.split(".").map { |octet| octet.to_i }.max <= 255).should be_true
end
end
it "public_ip_v4_address" do
ten_dot = /^10\./
one_two_seven = /^127\./
one_six_nine = /^169\.254/
one_nine_two = /^192\.168\./
one_seven_two = /^172\.(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)\./
1000.times do
# address = Faker::Internet.public_ip_v4_address
# it_not_match ten_dot, address
# it_not_match one_two_seven, address
# it_not_match one_six_nine, address
# it_not_match one_nine_two, address
# it_not_match one_seven_two, address
end
end
it "mac_address" do
Faker::Internet.mac_address.count(":").should eq 5
Faker::Internet.mac_address("").count(":").should eq 5
100.times do
(Faker::Internet.mac_address.split(":").map { |d| d.to_i(16) }.max <= 255).should be_true
end
(Faker::Internet.mac_address("fa:fa:fa").starts_with?("fa:fa:fa")).should be_true
(Faker::Internet.mac_address("01:02").starts_with?("01:02")).should be_true
end
it "ip_v6_address" do
Faker::Internet.ip_v6_address.count(":").should eq 7
100.times do
# it { Faker::Internet.ip_v6_address.split(".").map { |h| "0x#{h}".to_i }.max <= 65535 }
end
end
it "slug" do
Faker::Internet.slug.match(/^[a-z]+(_|\.|\-)[a-z]+$/).should_not eq nil
end
it "slug_with_content_arg" do
Faker::Internet.slug("Foo bAr baZ").match(/^foo(_|\.|\-)bar(_|\.|\-)baz$/).should_not eq nil
end
it "slug_with_glue_arg" do
Faker::Internet.slug(nil, "+").match(/^[a-z]+\+[a-z]+$/).should_not eq nil
end
it "url" do
Faker::Internet.url("domain.com", "/username").match(/^http:\/\/domain\.com\/username$/).should_not eq nil
end
it "device_token" do
# Faker::Internet.device_token.size.should eq 64
end
it "should return deterministic results when seeded" do
Faker.seed 123456
Faker::Internet.email.should eq "internet_faker@kirlinblock.biz"
Faker::Internet.email("Nancy").should eq "nancy@cremin.io"
Faker::Internet.free_email.should eq "faker.internet@gmail.com"
Faker::Internet.free_email("Nancy").should eq "nancy@hotmail.com"
Faker::Internet.safe_email.should eq "faker_internet@example.net"
Faker::Internet.safe_email("Nancy").should eq "nancy@example.net"
Faker::Internet.user_name.should eq "faker.internet"
Faker::Internet.user_name("Nancy").should eq "nancy"
Faker::Internet.user_name("Nancy Johnson", [".", "_", "-"] of ::String).should eq "johnson.nancy"
Faker::Internet.password.should eq "Tb34Ap05U"
Faker::Internet.password(8).should eq "BhI59sBo9"
Faker::Internet.password(10, 20).should eq "9r3b4iL8HeY"
Faker::Internet.password(10, 20, true).should eq "91JpPrF867Z"
Faker::Internet.password(10, 20, true, true).should eq "Pl5q3eOqZsK"
Faker::Internet.domain_name.should eq "ullrichklocko.biz"
Faker::Internet.domain_word.should eq "lockman"
Faker::Internet.domain_suffix.should eq "net"
Faker::Internet.ip_v4_address.should eq "6.70.63.244"
Faker::Internet.ip_v6_address.should eq "8a31:c21c:fb41:eea8:9df:aeab:9f78:5a49"
Faker::Internet.mac_address.should eq "00:4b:14:3d:24:55"
Faker::Internet.mac_address("55:44:33").should eq "55:44:33:36:0e:5d"
Faker::Internet.url.should eq "http://koelpin.biz/internet_faker"
Faker::Internet.url("example.com").should eq "http://example.com/faker_internet"
Faker::Internet.url("example.com", "/foobar.html").should eq "http://example.com/foobar.html"
Faker::Internet.slug.should eq "voluptatem.dicta"
Faker::Internet.slug("foo bar").should eq "foo.bar"
Faker::Internet.slug("foo bar", "-").should eq "foo-bar"
end
end