48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module DependencyProxyHelpers
 | |
|   include StubRequests
 | |
| 
 | |
|   def stub_registry_auth(image, token, status = 200, body = nil)
 | |
|     auth_body = { 'token' => token }.to_json
 | |
|     auth_link = registry.auth_url(image)
 | |
| 
 | |
|     stub_full_request(auth_link)
 | |
|       .to_return(status: status, body: body || auth_body)
 | |
|   end
 | |
| 
 | |
|   def stub_manifest_download(image, tag, status: 200, body: nil, headers: {})
 | |
|     manifest_url = registry.manifest_url(image, tag)
 | |
| 
 | |
|     stub_full_request(manifest_url)
 | |
|       .to_return(status: status, body: body || manifest, headers: headers)
 | |
|   end
 | |
| 
 | |
|   def stub_manifest_head(image, tag, status: 200, body: nil, digest: '123456')
 | |
|     manifest_url = registry.manifest_url(image, tag)
 | |
| 
 | |
|     stub_full_request(manifest_url, method: :head)
 | |
|       .to_return(status: status, body: body, headers: { 'docker-content-digest' => digest } )
 | |
|   end
 | |
| 
 | |
|   def stub_blob_download(image, blob_sha, status = 200, body = '123456')
 | |
|     download_link = registry.blob_url(image, blob_sha)
 | |
| 
 | |
|     stub_full_request(download_link)
 | |
|       .to_return(status: status, body: body)
 | |
|   end
 | |
| 
 | |
|   def build_jwt(user = nil, expire_time: nil)
 | |
|     JSONWebToken::HMACToken.new(::Auth::DependencyProxyAuthenticationService.secret).tap do |jwt|
 | |
|       jwt['user_id'] = user.id if user
 | |
|       jwt.expire_time = expire_time || jwt.issued_at + 1.minute
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def registry
 | |
|     @registry ||= DependencyProxy::Registry
 | |
|   end
 | |
| end
 |