From e2bd89452d5517c02a3bb8191d73573db5fd109a Mon Sep 17 00:00:00 2001 From: MaicolBen Date: Thu, 24 Oct 2024 19:43:31 -0300 Subject: [PATCH] Test against 7.2 and 8 --- .github/workflows/test.yml | 11 +++++ .../omniauth_callbacks_controller.rb | 20 ++++++-- devise_token_auth.gemspec | 2 +- gemfiles/rails_7_2.gemfile | 47 ++++++++++++++++++ gemfiles/rails_8_0.gemfile | 48 +++++++++++++++++++ .../omniauth_callbacks_controller_test.rb | 1 + test/dummy/config/environments/test.rb | 2 +- test/test_helper.rb | 2 +- 8 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 gemfiles/rails_7_2.gemfile create mode 100644 gemfiles/rails_8_0.gemfile diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 14ec6ec67..8dfb6d1b4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,6 +21,8 @@ jobs: - gemfiles/rails_5_2.gemfile - gemfiles/rails_6_0.gemfile - gemfiles/rails_7_0.gemfile + - gemfiles/rails_7_2.gemfile + - gemfiles/rails_8_0.gemfile db: - sqlite - mysql @@ -51,6 +53,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 +63,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 +77,10 @@ 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.1 gemfile: gemfiles/rails_4_2.gemfile - ruby: 3.1 diff --git a/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb b/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb index bc06c36d1..413ca9149 100644 --- a/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +++ b/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb @@ -9,6 +9,11 @@ class OmniauthCallbacksController < DeviseTokenAuth::ApplicationController skip_before_action :set_user_by_token, raise: false skip_after_action :update_auth_header + before_action do + puts "before_action omniauth_params" + puts params + end + # intermediary route for successful omniauth authentication. omniauth does # not support multiple models, so we must resort to this terrible hack. def redirect_callbacks @@ -55,7 +60,9 @@ def default_devise_mapping end def omniauth_success + puts "omniauth_success" get_resource_from_auth_hash + puts "get_resource_from_auth_hash" set_token_on_resource create_auth_params @@ -63,13 +70,13 @@ def omniauth_success # don't send confirmation email!!! @resource.skip_confirmation! end - + puts "before sign in" sign_in(:user, @resource, store: false, bypass: false) - - @resource.save! + puts "after sign in" + puts @resource.save! yield @resource if block_given? - + puts "after yield" if DeviseTokenAuth.cookie_enabled set_token_in_cookie(@resource, @token) end @@ -105,6 +112,7 @@ def omniauth_params @_omniauth_params ||= session.delete('dta.omniauth.params') @_omniauth_params elsif params['omniauth_window_type'] + @_omniauth_params = params.slice('omniauth_window_type', 'auth_origin_url', 'resource_class', 'origin') else @_omniauth_params = {} @@ -221,7 +229,11 @@ def render_data_or_redirect(message, data, user_data = {}) # See app/views/devise_token_auth/omniauth_external_window.html.erb to understand # why we can handle these both the same. The view is setup to handle both cases # at the same time. + puts "render_data_or_redirect #{omniauth_window_type}" + puts params if ['inAppBrowser', 'newWindow'].include?(omniauth_window_type) + puts message + puts user_data render_data(message, user_data.merge(data)) elsif auth_origin_url # default to same-window implementation, which forwards back to auth_origin_url diff --git a/devise_token_auth.gemspec b/devise_token_auth.gemspec index 15482381e..94aea0648 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', '< 10' s.add_development_dependency 'mongoid-locker', '~> 2.0' end 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..76c2c9635 100644 --- a/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +++ b/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb @@ -123,6 +123,7 @@ def get_parsed_data_json before do @fav_color = 'alizarin crimson' @unpermitted_param = 'M. Bison' + puts { auth_origin_url: @redirect_url, favorite_color: @fav_color, name: @unpermitted_param, omniauth_window_type: 'newWindow' } post '/auth/facebook', params: { auth_origin_url: @redirect_url, favorite_color: @fav_color, diff --git a/test/dummy/config/environments/test.rb b/test/dummy/config/environments/test.rb index 0a31ff05c..f7e4945d7 100644 --- a/test/dummy/config/environments/test.rb +++ b/test/dummy/config/environments/test.rb @@ -23,7 +23,7 @@ (config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }) : (config.static_cache_control = 'public, max-age=3600') - if Rails::VERSION::MAJOR > 6 && ENV['DEVISE_TOKEN_AUTH_ORM'] != 'mongoid' + if Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR == 0 && ENV['DEVISE_TOKEN_AUTH_ORM'] != 'mongoid' config.active_record.legacy_connection_handling = false end diff --git a/test/test_helper.rb b/test/test_helper.rb index ef019e2fa..1acf4028c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -38,7 +38,7 @@ def follow_all_redirects! 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 }