From ed676d39fabb284a8ad4beb02ec57a6b415eeefe Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Mon, 28 Oct 2019 18:11:43 -0300 Subject: [PATCH 1/9] Add HTTP status codes generator --- lib/faker/default/internet_http.rb | 29 ++++++++++++++++ .../faker/default/test_faker_internet_http.rb | 33 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 lib/faker/default/internet_http.rb create mode 100644 test/faker/default/test_faker_internet_http.rb diff --git a/lib/faker/default/internet_http.rb b/lib/faker/default/internet_http.rb new file mode 100644 index 0000000000..7e6371a259 --- /dev/null +++ b/lib/faker/default/internet_http.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Faker + class Internet + class HTTP < Base + STATUS_CODES = { + information: [100, 101, 102, 103], + successful: [200, 201, 202, 203, 204, 205, 206, 207, 208, 226], + redirect: [300, 301, 302, 303, 304, 305, 306, 307, 308], + client_error: [400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, + 429, 431, 451], + server_error: [500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511] + }.freeze + + class << self + def status_code + STATUS_CODES[STATUS_CODES.keys.sample].sample + end + + %i[information successful redirect client_error server_error].each do |status_code_group| + define_method("#{status_code_group}_status_code") do + STATUS_CODES[status_code_group].sample + end + end + end + end + end +end diff --git a/test/faker/default/test_faker_internet_http.rb b/test/faker/default/test_faker_internet_http.rb new file mode 100644 index 0000000000..0d906fee99 --- /dev/null +++ b/test/faker/default/test_faker_internet_http.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require_relative '../../test_helper' + +class TestFakerInternetHTTP < Test::Unit::TestCase + def setup + @tester = Faker::Internet::HTTP + end + + def test_status_code + assert @tester.status_code.to_s.match(/^[1-5]\d{2}$/) + end + + def test_information_status_code + assert @tester.information_status_code.to_s.match(/^1\d{2}$/) + end + + def test_successful_status_code + assert @tester.successful_status_code.to_s.match(/^2\d{2}$/) + end + + def test_redirect_status_code + assert @tester.redirect_status_code.to_s.match(/^3\d{2}$/) + end + + def test_client_error_status_code + assert @tester.client_error_status_code.to_s.match(/^4\d{2}$/) + end + + def test_server_error_status_code + assert @tester.server_error_status_code.to_s.match(/^5\d{2}$/) + end +end From a6e53500b8ebb78caa3363448270a48c56f494f4 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Fri, 1 Nov 2019 16:04:08 -0300 Subject: [PATCH 2/9] Join methods in a single one --- lib/faker/default/internet_http.rb | 14 +++++++------- test/faker/default/test_faker_internet_http.rb | 17 ++++++++++++----- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/faker/default/internet_http.rb b/lib/faker/default/internet_http.rb index 7e6371a259..fc88e076c6 100644 --- a/lib/faker/default/internet_http.rb +++ b/lib/faker/default/internet_http.rb @@ -13,15 +13,15 @@ class HTTP < Base server_error: [500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511] }.freeze + STATUS_CODES_GROUPS = STATUS_CODES.keys.freeze + class << self - def status_code - STATUS_CODES[STATUS_CODES.keys.sample].sample - end + def status_code(group: nil) + return STATUS_CODES[STATUS_CODES_GROUPS.sample].sample unless group + + raise ArgumentError, 'Invalid HTTP status code group' unless STATUS_CODES_GROUPS.include?(group) - %i[information successful redirect client_error server_error].each do |status_code_group| - define_method("#{status_code_group}_status_code") do - STATUS_CODES[status_code_group].sample - end + STATUS_CODES[group].sample if group end end end diff --git a/test/faker/default/test_faker_internet_http.rb b/test/faker/default/test_faker_internet_http.rb index 0d906fee99..04b6ab8025 100644 --- a/test/faker/default/test_faker_internet_http.rb +++ b/test/faker/default/test_faker_internet_http.rb @@ -12,22 +12,29 @@ def test_status_code end def test_information_status_code - assert @tester.information_status_code.to_s.match(/^1\d{2}$/) + assert @tester.status_code(group: :information).to_s.match(/^1\d{2}$/) end def test_successful_status_code - assert @tester.successful_status_code.to_s.match(/^2\d{2}$/) + assert @tester.status_code(group: :successful).to_s.match(/^2\d{2}$/) end def test_redirect_status_code - assert @tester.redirect_status_code.to_s.match(/^3\d{2}$/) + assert @tester.status_code(group: :redirect).to_s.match(/^3\d{2}$/) end def test_client_error_status_code - assert @tester.client_error_status_code.to_s.match(/^4\d{2}$/) + assert @tester.status_code(group: :client_error).to_s.match(/^4\d{2}$/) end def test_server_error_status_code - assert @tester.server_error_status_code.to_s.match(/^5\d{2}$/) + assert @tester.status_code(group: :server_error).to_s.match(/^5\d{2}$/) + end + + def test_invalid_http_status_code_group + exception = assert_raises ArgumentError do + @tester.status_code(group: :inexistent) + end + assert_equal('Invalid HTTP status code group', exception.message) end end From ece69c26914c3ca1713d35995aad01dd92acf83c Mon Sep 17 00:00:00 2001 From: Vitor Oliveira Date: Fri, 1 Nov 2019 21:08:30 -0700 Subject: [PATCH 3/9] Add http doc --- doc/internet/http.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 doc/internet/http.md diff --git a/doc/internet/http.md b/doc/internet/http.md new file mode 100644 index 0000000000..c65344c7b3 --- /dev/null +++ b/doc/internet/http.md @@ -0,0 +1,11 @@ +# Faker::Internet::HTTP + +Available since version 2.7.0. + +# Keyword arguments: group +Faker::Internet::HTTP.http_status_code #=> 418 +Faker::Internet::HTTP.http_status_code(group: :information) #=> 102 +Faker::Internet::HTTP.http_status_code(group: :successful) #=> 200 +Faker::Internet::HTTP.http_status_code(group: :redirect) #=> 306 +Faker::Internet::HTTP.http_status_code(group: :client_error) #=> 451 +Faker::Internet::HTTP.http_status_code(group: :server_error) #=> 502 From 18ea73190c69dd94b07abe059be2372158f5479c Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Sat, 2 Nov 2019 08:50:53 -0300 Subject: [PATCH 4/9] Fix method name in the docs --- doc/internet/http.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/internet/http.md b/doc/internet/http.md index c65344c7b3..b1f904c8b9 100644 --- a/doc/internet/http.md +++ b/doc/internet/http.md @@ -3,9 +3,9 @@ Available since version 2.7.0. # Keyword arguments: group -Faker::Internet::HTTP.http_status_code #=> 418 -Faker::Internet::HTTP.http_status_code(group: :information) #=> 102 -Faker::Internet::HTTP.http_status_code(group: :successful) #=> 200 -Faker::Internet::HTTP.http_status_code(group: :redirect) #=> 306 -Faker::Internet::HTTP.http_status_code(group: :client_error) #=> 451 -Faker::Internet::HTTP.http_status_code(group: :server_error) #=> 502 +Faker::Internet::HTTP.status_code #=> 418 +Faker::Internet::HTTP.status_code(group: :information) #=> 102 +Faker::Internet::HTTP.status_code(group: :successful) #=> 200 +Faker::Internet::HTTP.status_code(group: :redirect) #=> 306 +Faker::Internet::HTTP.status_code(group: :client_error) #=> 451 +Faker::Internet::HTTP.status_code(group: :server_error) #=> 502 From 7db7a0342be9fe0d64ed907bcb14fada6d59d09e Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Sat, 2 Nov 2019 09:05:03 -0300 Subject: [PATCH 5/9] Add YARD docs --- lib/faker/default/internet_http.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/faker/default/internet_http.rb b/lib/faker/default/internet_http.rb index fc88e076c6..d3e512985b 100644 --- a/lib/faker/default/internet_http.rb +++ b/lib/faker/default/internet_http.rb @@ -16,6 +16,26 @@ class HTTP < Base STATUS_CODES_GROUPS = STATUS_CODES.keys.freeze class << self + + ## + # Produces an HTTP status code + # + # @return [Integer] + # + # @example + # Faker::Internet::HTTP.status_code #=> 418 + # @example + # Faker::Internet::HTTP.status_code(group: :information) #=> 102 + # @example + # Faker::Internet::HTTP.status_code(group: :successful) #=> 200 + # @example + # Faker::Internet::HTTP.status_code(group: :redirect) #=> 306 + # @example + # Faker::Internet::HTTP.status_code(group: :client_error) #=> 451 + # @example + # Faker::Internet::HTTP.status_code(group: :server_error) #=> 502 + # + # @faker.version 2.7.0 def status_code(group: nil) return STATUS_CODES[STATUS_CODES_GROUPS.sample].sample unless group From a145c5b835030fc547a8005742414915664da453 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Sun, 14 Jun 2020 10:56:05 -0300 Subject: [PATCH 6/9] Change "@faker.version" to "next" --- lib/faker/default/internet_http.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/faker/default/internet_http.rb b/lib/faker/default/internet_http.rb index d3e512985b..f0d74b114e 100644 --- a/lib/faker/default/internet_http.rb +++ b/lib/faker/default/internet_http.rb @@ -35,7 +35,7 @@ class << self # @example # Faker::Internet::HTTP.status_code(group: :server_error) #=> 502 # - # @faker.version 2.7.0 + # @faker.version next def status_code(group: nil) return STATUS_CODES[STATUS_CODES_GROUPS.sample].sample unless group From 4089ba5265d5a3c1ec48fcbbd96857fab64c9ca2 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Sun, 14 Jun 2020 11:12:23 -0300 Subject: [PATCH 7/9] Fix rubocop offense --- lib/faker/default/internet_http.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/faker/default/internet_http.rb b/lib/faker/default/internet_http.rb index f0d74b114e..766576900f 100644 --- a/lib/faker/default/internet_http.rb +++ b/lib/faker/default/internet_http.rb @@ -16,7 +16,6 @@ class HTTP < Base STATUS_CODES_GROUPS = STATUS_CODES.keys.freeze class << self - ## # Produces an HTTP status code # From edfcea98ddddead582061420e0cc2dc431028bb1 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Sun, 14 Jun 2020 17:40:11 -0300 Subject: [PATCH 8/9] Update version to "next" in markdown file --- doc/internet/http.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/internet/http.md b/doc/internet/http.md index b1f904c8b9..79182d4d53 100644 --- a/doc/internet/http.md +++ b/doc/internet/http.md @@ -1,6 +1,6 @@ # Faker::Internet::HTTP -Available since version 2.7.0. +Available since version next. # Keyword arguments: group Faker::Internet::HTTP.status_code #=> 418 From fbd441dceae5a69dc1f276b3bf12b5f3b33650e8 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Sun, 14 Jun 2020 18:43:56 -0300 Subject: [PATCH 9/9] Remove redundant if statement Co-authored-by: Koichi ITO --- lib/faker/default/internet_http.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/faker/default/internet_http.rb b/lib/faker/default/internet_http.rb index 766576900f..d6ab8cf8f4 100644 --- a/lib/faker/default/internet_http.rb +++ b/lib/faker/default/internet_http.rb @@ -40,7 +40,7 @@ def status_code(group: nil) raise ArgumentError, 'Invalid HTTP status code group' unless STATUS_CODES_GROUPS.include?(group) - STATUS_CODES[group].sample if group + STATUS_CODES[group].sample end end end