36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module ExternalAuthorizationServiceHelpers
 | |
|   def enable_external_authorization_service_check
 | |
|     stub_application_setting(external_authorization_service_enabled: true)
 | |
| 
 | |
|     stub_application_setting(external_authorization_service_url: 'https://authorize.me')
 | |
|     stub_application_setting(external_authorization_service_default_label: 'default_label')
 | |
|     stub_request(:post, "https://authorize.me").to_return(status: 200)
 | |
|   end
 | |
| 
 | |
|   def external_service_set_access(allowed, user, project)
 | |
|     enable_external_authorization_service_check
 | |
|     classification_label = ::Gitlab::CurrentSettings.current_application_settings
 | |
|                              .external_authorization_service_default_label
 | |
| 
 | |
|     # Reload the project so cached licensed features are reloaded
 | |
|     if project
 | |
|       classification_label = Project.find(project.id).external_authorization_classification_label
 | |
|     end
 | |
| 
 | |
|     allow(::Gitlab::ExternalAuthorization)
 | |
|       .to receive(:access_allowed?)
 | |
|             .with(user, classification_label, any_args)
 | |
|             .and_return(allowed)
 | |
|   end
 | |
| 
 | |
|   def external_service_allow_access(user, project = nil)
 | |
|     external_service_set_access(true, user, project)
 | |
|   end
 | |
| 
 | |
|   def external_service_deny_access(user, project = nil)
 | |
|     external_service_set_access(false, user, project)
 | |
|   end
 | |
| end
 |