Skip to content

Commit

Permalink
Ajout de tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tnicolas1 committed Feb 11, 2025
1 parent 8c2cc27 commit feb9fbc
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 16 deletions.
32 changes: 17 additions & 15 deletions app/controllers/users/omniauth_callbacks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,18 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController

rescue_from IdentityMappers::Errors::Error, ActiveRecord::RecordInvalid, with: :authentication_failure

def developer
oidcize_dev_hash(auth_hash)

oidc
end

def academic_developer
oidcize_dev_hash(auth_hash)

academic
end

def masa
oidc
end
Expand All @@ -20,7 +32,7 @@ def fim
def oidc
parse_identity

@user.save!
@user = User.from_oidc(auth_hash).tap(&:save!)

add_auth_breadcrumb(data: { user_id: @user.id }, message: "Successfully parsed user")

Expand All @@ -35,22 +47,14 @@ def oidc
choose_redirect_page!
end

def developer
oidcize_dev_hash(auth_hash)

oidc
end

def academic_developer
oidcize_dev_hash(auth_hash)

academic
end

def academic
parse_identity

@academic_login = true
@academic_user = Academic::User.from_oidc(auth_hash).tap(&:save!)

add_auth_breadcrumb(data: { user_id: @academic_user.id }, message: "Successfully parsed academic user")

# TODO: Check limited access to this part ?

sign_in(:academic_user, @academic_user)
Expand Down Expand Up @@ -119,8 +123,6 @@ def parse_identity
data = auth_hash
raw = data.extra.raw_info

@user = User.from_oidc(data)

@mapper = case data.provider.to_sym
when :fim
IdentityMappers::Fim.new(raw)
Expand Down
1 change: 0 additions & 1 deletion config/initializers/omniauth_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ def request_phase
form.to_response
end

# NOTE: Compose les champs de `auth_hash` utilisé dans `omniauth_callbacks_controller`
info do
options.fields.each_with_object({}) do |field, hash|
if field.is_a? Hash
Expand Down
14 changes: 14 additions & 0 deletions features/personnel_academique.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# language: fr

Fonctionnalité: Gestion du personnel académique
Contexte:
Sachant que je suis un personnel académique de l'établissement "DINUM"
Et que je me connecte en tant que personnel académique

Scénario: Le personnel académique a accès à la page d'accueil
Alors la page contient "Bonjour"

Scénario: Le personnel académique est redirigé vers la page de connexion académique en cas d'erreur de connexion
Sachant que je me déconnecte
Et que je me rend sur la page d'accueil du personnel académique
Alors la page contient "Vous devez vous connecter ou vous enregistrer pour continuer."
5 changes: 5 additions & 0 deletions features/step_definitions/academic_steps.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# frozen_string_literal: true

Quand("je me rend sur la page d'accueil du personnel académique") do
visit "/academic/home"
end
17 changes: 17 additions & 0 deletions features/step_definitions/login_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,16 @@ def make_cas_hash(name:, email:, raw_info:)
click_link_or_button "Se connecter"
end

Sachantque("je suis un personnel académique de l'établissement {string}") do |uai|
OmniAuth.config.mock_auth[:academic] = make_fim_hash(
name: Faker::Name.name,
email: Faker::Internet.email,
raw_info: {
FrEduRne: FactoryBot.build(:fredurne, uai: uai)
}
)
end

Sachantque("je suis un personnel MENJ de l'établissement {string}") do |uai|
OmniAuth.config.mock_auth[:fim] = make_fim_hash(
name: Faker::Name.name,
Expand Down Expand Up @@ -172,6 +182,13 @@ def make_cas_hash(name:, email:, raw_info:)
)
end

Sachantque("je me connecte en tant que personnel académique") do
steps %(
Et que je me rend sur la page d'accueil du personnel académique
Et que je clique sur "Se connecter (MENJ)"
)
end

Sachantque("je me connecte en tant que personnel MENJ") do
steps %(
Quand je me rends sur la page d'accueil
Expand Down
11 changes: 11 additions & 0 deletions spec/models/academic/user_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

require "rails_helper"

RSpec.describe Academic::User do
describe "validations" do
%w[uid name email provider].each do |attr|
it { is_expected.to validate_presence_of(attr) }
end
end
end

0 comments on commit feb9fbc

Please sign in to comment.