@@ -7,6 +7,7 @@ class UserInfoApiClient
77 class << self
88 def fetch_by_ids ( user_ids )
99 return [ ] if user_ids . blank?
10+ return stubbed_users ( user_ids ) if bypass_oauth?
1011
1112 response = conn . get do |r |
1213 r . url '/users'
@@ -19,6 +20,7 @@ def fetch_by_ids(user_ids)
1920
2021 def find_user_by_email ( email )
2122 return nil if email . blank?
23+ return stubbed_user_by_email ( email ) if bypass_oauth?
2224
2325 response = conn . get do |r |
2426 r . url "/users/#{ CGI . escape ( email ) } "
@@ -34,6 +36,10 @@ def find_user_by_email(email)
3436
3537 private
3638
39+ def bypass_oauth?
40+ ENV . fetch ( 'BYPASS_OAUTH' , nil ) == 'true'
41+ end
42+
3743 def transform_user ( user )
3844 user . transform_keys { |k | k . to_s . underscore . to_sym }
3945 end
@@ -53,5 +59,17 @@ def conn
5359 f . response :json # decode response bodies as JSON
5460 end
5561 end
62+
63+ # Development/test stubbing methods - only active when BYPASS_OAUTH=true
64+ # Delegates to UserInfoApiMock to avoid code duplication
65+ def stubbed_users ( user_ids )
66+ require_relative '../spec/support/user_info_api_mock' unless defined? ( UserInfoApiMock )
67+ UserInfoApiMock . default_stubbed_users ( user_ids )
68+ end
69+
70+ def stubbed_user_by_email ( email )
71+ require_relative '../spec/support/user_info_api_mock' unless defined? ( UserInfoApiMock )
72+ UserInfoApiMock . default_stubbed_user_by_email ( email )
73+ end
5674 end
5775end
0 commit comments