# frozen_string_literal: true module OmniauthHelpers FIRST_NAME = "John" LAST_NAME = "Doe" FULL_NAME = "John Doe" USERNAME = "john" EMAIL = "johndoe@example.com" UID = "12345" def mock_facebook_auth(email: EMAIL, name: FULL_NAME) OmniAuth.config.mock_auth[:facebook] = OmniAuth::AuthHash.new( provider: "facebook", uid: UID, info: OmniAuth::AuthHash::InfoHash.new(email: email, name: name), ) Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook] end def mock_google_auth(email: EMAIL, name: FULL_NAME, verified: true) OmniAuth.config.mock_auth[:google_oauth2] = OmniAuth::AuthHash.new( provider: "google_oauth2", uid: UID, info: OmniAuth::AuthHash::InfoHash.new(email: email, name: name), extra: { raw_info: { email_verified: verified, }, }, ) Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google_oauth2] end def mock_github_auth(email: EMAIL, nickname: USERNAME, name: FULL_NAME, verified: true) OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new( provider: "github", uid: UID, info: OmniAuth::AuthHash::InfoHash.new(email: email, nickname: nickname, name: name), extra: { all_emails: [{ email: email, primary: true, verified: verified, visibility: "private" }], }, ) Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:github] end def mock_twitter_auth(nickname: USERNAME, name: FULL_NAME, verified: true) OmniAuth.config.mock_auth[:twitter] = OmniAuth::AuthHash.new( provider: "twitter", uid: UID, info: OmniAuth::AuthHash::InfoHash.new(nickname: nickname, name: name), ) Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter] end def mock_discord_auth(email: EMAIL, username: USERNAME, name: FULL_NAME) OmniAuth.config.mock_auth[:discord] = OmniAuth::AuthHash.new( provider: "discord", uid: UID, info: OmniAuth::AuthHash::InfoHash.new(email: email, name: name), ) Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:discord] end def mock_linkedin_auth(email: EMAIL, first_name: FIRST_NAME, last_name: LAST_NAME) OmniAuth.config.mock_auth[:linkedin_oidc] = OmniAuth::AuthHash.new( provider: "linkedin_oidc", uid: UID, info: OmniAuth::AuthHash::InfoHash.new( email: email, first_name: first_name, last_name: last_name, ), ) Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:linkedin_oidc] end def reset_omniauth_config(provider) OmniAuth.config.test_mode = false OmniAuth.config.mock_auth[provider] = nil Rails.application.env_config["omniauth.auth"] = nil end end