Add ActivityPub actor representing the entire server (#11321)
* Add support for an instance actor * Skip username validation for local Application accounts * Add migration script to create instance actor * Make Codeclimate happy * Switch to id -99 for instance actor * Remove unused `icon` and `image` attributes from instance actor * Use if/elsif/else instead of return + ternary operator * Add instance actor to fresh installs * Use instance actor as instance representative Use instance actor for forwarding reports, relay operations, and spam auto-reporting. * Seed database in test environment * Fix single-user mode * Fix tests * Fix specs to accomodate for an extra `Account` * Auto-reject follows on instance actor Following an instance actor might make sense, but we are not handling that right now, so auto-reject. * Fix webfinger lookup and serialization for instance actor * Rename instance actor * Make it clear in the HTML view that the instance actor should not be blocked * Raise cache time for instance actor as there's no dynamic content * Re-use /about/more with a flash message for instance actor profile
This commit is contained in:
		
							parent
							
								
									15c7478c55
								
							
						
					
					
						commit
						730c4053d6
					
				
					 23 changed files with 141 additions and 52 deletions
				
			
		|  | @ -450,7 +450,7 @@ RSpec.describe Account, type: :model do | |||
|   describe '.domains' do | ||||
|     it 'returns domains' do | ||||
|       Fabricate(:account, domain: 'domain') | ||||
|       expect(Account.domains).to match_array(['domain']) | ||||
|       expect(Account.remote.domains).to match_array(['domain']) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | @ -665,7 +665,7 @@ RSpec.describe Account, type: :model do | |||
|           { username: 'b', domain: 'b' }, | ||||
|         ].map(&method(:Fabricate).curry(2).call(:account)) | ||||
| 
 | ||||
|         expect(Account.alphabetic).to eq matches | ||||
|         expect(Account.where('id > 0').alphabetic).to eq matches | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  | @ -732,7 +732,7 @@ RSpec.describe Account, type: :model do | |||
|         2.times { Fabricate(:account, domain: 'example.com') } | ||||
|         Fabricate(:account, domain: 'example2.com') | ||||
| 
 | ||||
|         results = Account.by_domain_accounts | ||||
|         results = Account.where('id > 0').by_domain_accounts | ||||
|         expect(results.length).to eq 2 | ||||
|         expect(results.first.domain).to eq 'example.com' | ||||
|         expect(results.first.accounts_count).to eq 2 | ||||
|  | @ -745,7 +745,7 @@ RSpec.describe Account, type: :model do | |||
|       it 'returns an array of accounts who do not have a domain' do | ||||
|         account_1 = Fabricate(:account, domain: nil) | ||||
|         account_2 = Fabricate(:account, domain: 'example.com') | ||||
|         expect(Account.local).to match_array([account_1]) | ||||
|         expect(Account.where('id > 0').local).to match_array([account_1]) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  | @ -756,14 +756,14 @@ RSpec.describe Account, type: :model do | |||
|           matches[index] = Fabricate(:account, domain: matches[index]) | ||||
|         end | ||||
| 
 | ||||
|         expect(Account.partitioned).to match_array(matches) | ||||
|         expect(Account.where('id > 0').partitioned).to match_array(matches) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     describe 'recent' do | ||||
|       it 'returns a relation of accounts sorted by recent creation' do | ||||
|         matches = 2.times.map { Fabricate(:account) } | ||||
|         expect(Account.recent).to match_array(matches) | ||||
|         expect(Account.where('id > 0').recent).to match_array(matches) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue