diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8041ae48e..6020a6167 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,6 +14,7 @@ jobs: - '3.0' - 3.1 - 3.2 + - 3.3 gemfile: - gemfiles/rails_4_2.gemfile - gemfiles/rails_5_0.gemfile @@ -21,6 +22,9 @@ jobs: - gemfiles/rails_5_2.gemfile - gemfiles/rails_6_0.gemfile - gemfiles/rails_7_0.gemfile + - gemfiles/rails_7_1.gemfile + - gemfiles/rails_7_2.gemfile + - gemfiles/rails_8_0.gemfile db: - sqlite - mysql @@ -51,6 +55,7 @@ jobs: - ruby: 3.2 gemfile: gemfiles/rails_7_0_mongoid_7.gemfile devise-token-auth-orm: mongoid + # TODO: add mongoid for rails 7.2 exclude: - ruby: 2.7 gemfile: gemfiles/rails_4_2.gemfile @@ -60,6 +65,10 @@ jobs: gemfile: gemfiles/rails_5_1.gemfile - ruby: 2.7 gemfile: gemfiles/rails_5_2.gemfile + - ruby: 2.7 + gemfile: gemfiles/rails_7_2.gemfile + - ruby: 2.7 + gemfile: gemfiles/rails_8_0.gemfile - ruby: '3.0' gemfile: gemfiles/rails_4_2.gemfile - ruby: '3.0' @@ -70,6 +79,12 @@ jobs: gemfile: gemfiles/rails_5_2.gemfile - ruby: '3.0' gemfile: gemfiles/rails_6_0.gemfile + - ruby: '3.0' + gemfile: gemfiles/rails_7_2.gemfile + - ruby: '3.0' + gemfile: gemfiles/rails_8_0.gemfile + - ruby: '3.0' + gemfile: gemfiles/rails_7_1.gemfile - ruby: 3.1 gemfile: gemfiles/rails_4_2.gemfile - ruby: 3.1 @@ -90,6 +105,17 @@ jobs: gemfile: gemfiles/rails_5_2.gemfile - ruby: 3.2 gemfile: gemfiles/rails_6_0.gemfile + - ruby: 3.3 + gemfile: gemfiles/rails_4_2.gemfile + - ruby: 3.3 + gemfile: gemfiles/rails_5_0.gemfile + - ruby: 3.3 + gemfile: gemfiles/rails_5_1.gemfile + - ruby: 3.3 + gemfile: gemfiles/rails_5_2.gemfile + - ruby: 3.3 + gemfile: gemfiles/rails_6_0.gemfile + services: mysql: diff --git a/Appraisals b/Appraisals index bd13707bf..53de7c175 100644 --- a/Appraisals +++ b/Appraisals @@ -35,7 +35,8 @@ end { name: '5-2', ruby: '2.6.2', rails: '5.2', mongoid: '7.0' }, { name: '6-0', ruby: '2.7.0', rails: '6.0', mongoid: '7.0' }, { name: '6-0', ruby: '3.1.2', rails: '6.0', mongoid: '7.0' }, - { name: '7-0', ruby: '3.1.2', rails: '7.0', mongoid: '7.0' } + { name: '7-0', ruby: '3.1.2', rails: '7.0', mongoid: '7.0' }, + { name: '7-1', ruby: '3.1.2', rails: '7.1', mongoid: '7.0' } ].each do |set| appraise "rails-#{set[:name]}-mongoid-#{set[:mongoid][0]}" do gem 'rails', "~> #{set[:rails]}" diff --git a/Gemfile b/Gemfile index 752d2da23..fefd2b42e 100644 --- a/Gemfile +++ b/Gemfile @@ -17,6 +17,7 @@ gem 'omniauth-rails_csrf_protection' # To use debugger # gem 'debugger' +gem 'concurrent-ruby', '1.3.4' group :development, :test do gem 'attr_encrypted' diff --git a/devise_token_auth.gemspec b/devise_token_auth.gemspec index 15482381e..7b9d964e9 100644 --- a/devise_token_auth.gemspec +++ b/devise_token_auth.gemspec @@ -30,6 +30,6 @@ Gem::Specification.new do |s| s.add_development_dependency 'sqlite3', '~> 1.4' s.add_development_dependency 'pg' s.add_development_dependency 'mysql2' - s.add_development_dependency 'mongoid', '>= 4', '< 8' + s.add_development_dependency 'mongoid', '>= 4', '< 9' s.add_development_dependency 'mongoid-locker', '~> 2.0' end diff --git a/gemfiles/rails_7_0.gemfile b/gemfiles/rails_7_0.gemfile index 3a06bd201..813db3488 100644 --- a/gemfiles/rails_7_0.gemfile +++ b/gemfiles/rails_7_0.gemfile @@ -4,7 +4,7 @@ source "https://rubygems.org" gem "omniauth", "~> 2.0" gem "omniauth-rails_csrf_protection" -gem "rails", "~> 7.0" +gem "rails", "~> 7.0.8" gem "sqlite3", "~> 1.4.1" gem "mysql2" gem "pg" diff --git a/gemfiles/rails_7_1.gemfile b/gemfiles/rails_7_1.gemfile new file mode 100644 index 000000000..3ab6904dc --- /dev/null +++ b/gemfiles/rails_7_1.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "omniauth", "~> 2.0" +gem "omniauth-rails_csrf_protection" +gem 'rails', '~> 7.1.5' +gem "sqlite3", "~> 1.4.1" +gem "mysql2" +gem "pg" + +group :development, :test do + gem "attr_encrypted" + gem "figaro", "~> 1.2" + gem "omniauth-facebook" + gem "omniauth-github" + gem "omniauth-google-oauth2" + gem 'omniauth-apple' + gem "rack-cors" + gem "thor", "~> 1.2" + gem "database_cleaner" + gem "factory_bot_rails" + gem "faker", "~> 2.16" + gem "fuzz_ball" + gem "guard" + gem "guard-minitest" + gem "minitest" + gem "minitest-focus" + gem "minitest-rails", "~> 7" + gem "minitest-reporters" + gem "mocha", ">= 1.5" + gem "pry" + gem "pry-byebug" + gem "pry-remote" + gem "rubocop", require: false +end + +group :test do + gem "rails-controller-testing" + gem "simplecov", require: false +end + +group :development do + gem "github_changelog_generator" +end + +gemspec path: "../" diff --git a/gemfiles/rails_7_2.gemfile b/gemfiles/rails_7_2.gemfile new file mode 100644 index 000000000..629802a5c --- /dev/null +++ b/gemfiles/rails_7_2.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "omniauth", "~> 2.0" +gem "omniauth-rails_csrf_protection" +gem 'rails', '~> 7.2.1.2' +gem "sqlite3", "~> 1.4.1" +gem "mysql2" +gem "pg" + +group :development, :test do + gem "attr_encrypted" + gem "figaro", "~> 1.2" + gem "omniauth-facebook" + gem "omniauth-github" + gem "omniauth-google-oauth2" + gem 'omniauth-apple' + gem "rack-cors" + gem "thor", "~> 1.2" + gem "database_cleaner" + gem "factory_bot_rails" + gem "faker", "~> 2.16" + gem "fuzz_ball" + gem "guard" + gem "guard-minitest" + gem "minitest" + gem "minitest-focus" + gem "minitest-rails", "~> 7" + gem "minitest-reporters" + gem "mocha", ">= 1.5" + gem "pry" + gem "pry-byebug" + gem "pry-remote" + gem "rubocop", require: false +end + +group :test do + gem "rails-controller-testing" + gem "simplecov", require: false +end + +group :development do + gem "github_changelog_generator" +end + +gemspec path: "../" diff --git a/gemfiles/rails_8_0.gemfile b/gemfiles/rails_8_0.gemfile new file mode 100644 index 000000000..16ff0c256 --- /dev/null +++ b/gemfiles/rails_8_0.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "omniauth", "~> 2.0" +gem "omniauth-rails_csrf_protection" +gem "rails", "~> 8.0.0.rc1" +gem "sqlite3", "~> 1.4.1" +gem "mysql2" +gem "pg" +gem "mongoid", git: "https://github.com/comandeo-mongo/mongoid/5818-rails-8" + +group :development, :test do + gem "attr_encrypted" + gem "figaro", "~> 1.2" + gem "omniauth-facebook" + gem "omniauth-github" + gem "omniauth-google-oauth2" + gem 'omniauth-apple' + gem "rack-cors" + gem "thor", "~> 1.2" + gem "database_cleaner" + gem "factory_bot_rails" + gem "faker", "~> 2.16" + gem "fuzz_ball" + gem "guard" + gem "guard-minitest" + gem "minitest" + gem "minitest-focus" + gem "minitest-rails", "~> 7" + gem "minitest-reporters" + gem "mocha", ">= 1.5" + gem "pry" + gem "pry-byebug" + gem "pry-remote" + gem "rubocop", require: false +end + +group :test do + gem "rails-controller-testing" + gem "simplecov", require: false +end + +group :development do + gem "github_changelog_generator" +end + +gemspec path: "../" diff --git a/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb b/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb index e104f017e..6be62a533 100644 --- a/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +++ b/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb @@ -340,8 +340,10 @@ def get_success(params = {}) test 'request using non-whitelisted redirect fail' do post '/auth/facebook', - params: { auth_origin_url: @bad_redirect_url, - omniauth_window_type: 'newWindow' } + params: { + auth_origin_url: @bad_redirect_url, + omniauth_window_type: 'newWindow' + } follow_all_redirects! diff --git a/test/dummy/config/initializers/omniauth.rb b/test/dummy/config/initializers/omniauth.rb index 199e57271..132d9a559 100644 --- a/test/dummy/config/initializers/omniauth.rb +++ b/test/dummy/config/initializers/omniauth.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +# OmniAuth.config.path_prefix = '/auth' +# OmniAuth.config.request_validation_phase = nil # This might be needed for Rails 7.1 + Rails.application.config.middleware.use OmniAuth::Builder do |b| provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], scope: 'email,profile' provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'] @@ -9,3 +12,6 @@ fields: [:first_name, :last_name], uid_field: :last_name end + +# Allow POST requests to OmniAuth +# OmniAuth.config.allowed_request_methods = [:post, :get] diff --git a/test/test_helper.rb b/test/test_helper.rb index ef019e2fa..7d066b0aa 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -32,13 +32,20 @@ class ActionDispatch::IntegrationTest def follow_all_redirects! follow_redirect! while response.status.to_s =~ /^3\d{2}/ + # while response.status.to_s =~ /^3\d{2}/ + # original_params = request.params.to_h + # follow_redirect! do |req| + # # Preserve all original parameters through redirects + # req.params.merge!(original_params) + # end + # end end end class ActiveSupport::TestCase include FactoryBot::Syntax::Methods - ActiveRecord::Migration.check_pending! if DEVISE_TOKEN_AUTH_ORM == :active_record + # ActiveRecord::Migration.check_pending! if DEVISE_TOKEN_AUTH_ORM == :active_record strategies = { active_record: :transaction, mongoid: :deletion }