diff options
author | Reverite <github@reverite.sh> | 2019-03-30 23:42:55 -0700 |
---|---|---|
committer | Reverite <github@reverite.sh> | 2019-03-30 23:42:55 -0700 |
commit | 4d77314005483e53e320a82c87805c6bcca1c463 (patch) | |
tree | 99f5b05bcbb1e8278517bf9a8f9ab114ab2dec45 /spec/services | |
parent | e356a902d23a0ed87c62717085a37d34550c8464 (diff) | |
parent | 925830d11bb5c132e282f82bdb2ca893d87c9c24 (diff) |
Merge branch 'glitch' into production
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/activitypub/process_account_service_spec.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb index d3318b2ed..5141e3f16 100644 --- a/spec/services/activitypub/process_account_service_spec.rb +++ b/spec/services/activitypub/process_account_service_spec.rb @@ -28,4 +28,49 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do expect(account.fields[1].value).to eq 'Unit test' end end + + context 'identity proofs' do + let(:payload) do + { + id: 'https://foo.test', + type: 'Actor', + inbox: 'https://foo.test/inbox', + attachment: [ + { type: 'IdentityProof', name: 'Alice', signatureAlgorithm: 'keybase', signatureValue: 'a' * 66 }, + ], + }.with_indifferent_access + end + + it 'parses out of attachment' do + allow(ProofProvider::Keybase::Worker).to receive(:perform_async) + + account = subject.call('alice', 'example.com', payload) + + expect(account.identity_proofs.count).to eq 1 + + proof = account.identity_proofs.first + + expect(proof.provider).to eq 'keybase' + expect(proof.provider_username).to eq 'Alice' + expect(proof.token).to eq 'a' * 66 + end + + it 'removes no longer present proofs' do + allow(ProofProvider::Keybase::Worker).to receive(:perform_async) + + account = Fabricate(:account, username: 'alice', domain: 'example.com') + old_proof = Fabricate(:account_identity_proof, account: account, provider: 'keybase', provider_username: 'Bob', token: 'b' * 66) + + subject.call('alice', 'example.com', payload) + + expect(account.identity_proofs.count).to eq 1 + expect(account.identity_proofs.find_by(id: old_proof.id)).to be_nil + end + + it 'queues a validity check on the proof' do + allow(ProofProvider::Keybase::Worker).to receive(:perform_async) + account = subject.call('alice', 'example.com', payload) + expect(ProofProvider::Keybase::Worker).to have_received(:perform_async) + end + end end |