Cover WebfingerResource more (#3560)
This commit is contained in:
		
							parent
							
								
									943775fd90
								
							
						
					
					
						commit
						defe4f9bc3
					
				
					 1 changed files with 37 additions and 4 deletions
				
			
		|  | @ -2,14 +2,16 @@ require 'rails_helper' | |||
| 
 | ||||
| describe WebfingerResource do | ||||
|   around do |example| | ||||
|     before = Rails.configuration.x.local_domain | ||||
|     before_local = Rails.configuration.x.local_domain | ||||
|     before_web = Rails.configuration.x.web_domain | ||||
|     example.run | ||||
|     Rails.configuration.x.local_domain = before | ||||
|     Rails.configuration.x.local_domain = before_local | ||||
|     Rails.configuration.x.webdomain = before_web | ||||
|   end | ||||
| 
 | ||||
|   describe '#username' do | ||||
|     describe 'with a URL value' do | ||||
|       it 'raises with an unrecognized route' do | ||||
|       it 'raises with a route whose controller is not AccountsController' do | ||||
|         resource = 'https://example.com/users/alice/other' | ||||
| 
 | ||||
|         expect { | ||||
|  | @ -17,6 +19,21 @@ describe WebfingerResource do | |||
|         }.to raise_error(ActiveRecord::RecordNotFound) | ||||
|       end | ||||
| 
 | ||||
|       it 'raises with a route whose action is not show' do | ||||
|         resource = 'https://example.com/users/alice' | ||||
| 
 | ||||
|         recognized = Rails.application.routes.recognize_path(resource) | ||||
|         allow(recognized).to receive(:[]).with(:controller).and_return('accounts') | ||||
|         allow(recognized).to receive(:[]).with(:username).and_return('alice') | ||||
|         expect(recognized).to receive(:[]).with(:action).and_return('create') | ||||
| 
 | ||||
|         expect(Rails.application.routes).to receive(:recognize_path).with(resource).and_return(recognized).at_least(:once) | ||||
| 
 | ||||
|         expect { | ||||
|           WebfingerResource.new(resource).username | ||||
|         }.to raise_error(ActiveRecord::RecordNotFound) | ||||
|       end | ||||
| 
 | ||||
|       it 'raises with a string that doesnt start with URL' do | ||||
|         resource = 'website for http://example.com/users/alice/other' | ||||
| 
 | ||||
|  | @ -63,6 +80,14 @@ describe WebfingerResource do | |||
|         result = WebfingerResource.new(resource).username | ||||
|         expect(result).to eq 'alice' | ||||
|       end | ||||
| 
 | ||||
|       it 'finds username for a web domain' do | ||||
|         Rails.configuration.x.web_domain = 'example.com' | ||||
|         resource = 'alice@example.com' | ||||
| 
 | ||||
|         result = WebfingerResource.new(resource).username | ||||
|         expect(result).to eq 'alice' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     describe 'with an acct value' do | ||||
|  | @ -82,13 +107,21 @@ describe WebfingerResource do | |||
|         }.to raise_error(ActiveRecord::RecordNotFound) | ||||
|       end | ||||
| 
 | ||||
|       it 'finds the username for a local account' do | ||||
|       it 'finds the username for a local account if the domain is the local one' do | ||||
|         Rails.configuration.x.local_domain = 'example.com' | ||||
|         resource = 'acct:alice@example.com' | ||||
| 
 | ||||
|         result = WebfingerResource.new(resource).username | ||||
|         expect(result).to eq 'alice' | ||||
|       end | ||||
| 
 | ||||
|       it 'finds the username for a local account if the domain is the Web one' do | ||||
|         Rails.configuration.x.web_domain = 'example.com' | ||||
|         resource = 'acct:alice@example.com' | ||||
| 
 | ||||
|         result = WebfingerResource.new(resource).username | ||||
|         expect(result).to eq 'alice' | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue