allow invalid sigs claims to show outside a channel

This commit is contained in:
Victor Shyba 2018-11-27 15:17:18 -03:00
parent 953327c150
commit ea6869a63e
2 changed files with 7 additions and 6 deletions

View file

@ -138,11 +138,10 @@ class Resolver:
elif 'error' not in result: elif 'error' not in result:
return {'error': 'claim not found', 'success': False, 'uri': str(parsed_uri)} return {'error': 'claim not found', 'success': False, 'uri': str(parsed_uri)}
# invalid signatures can only return in the form of name#claim_id # invalid signatures can only return outside a channel
if result.get('claim', {}).get('has_signature', False): if result.get('claim', {}).get('has_signature', False):
if not result['claim']['signature_is_valid']: if parsed_uri.path and not result['claim']['signature_is_valid']:
if parsed_uri.path or parsed_uri.is_channel or not parsed_uri.claim_id or not parsed_uri.name: return {'error': 'claim not found', 'success': False, 'uri': str(parsed_uri)}
return {'error': 'claim not found', 'success': False, 'uri': str(parsed_uri)}
return result return result
async def get_certificate_and_validate_result(self, claim_result): async def get_certificate_and_validate_result(self, claim_result):

View file

@ -623,14 +623,16 @@ class ClaimManagement(CommandTestCase):
await self.confirm_tx(channel['tx']['txid']) await self.confirm_tx(channel['tx']['txid'])
# Original channel doesnt exists anymore, so the signature is invalid. For invalid signatures, resolution is # Original channel doesnt exists anymore, so the signature is invalid. For invalid signatures, resolution is
# only possible when using the name + claim id # only possible outside a channel
response = await self.out(self.daemon.jsonrpc_resolve(uri='lbry://@abc/on-channel-claim')) response = await self.out(self.daemon.jsonrpc_resolve(uri='lbry://@abc/on-channel-claim'))
self.assertNotIn('claim', response['lbry://@abc/on-channel-claim']) self.assertNotIn('claim', response['lbry://@abc/on-channel-claim'])
response = await self.out(self.daemon.jsonrpc_resolve(uri='lbry://on-channel-claim')) response = await self.out(self.daemon.jsonrpc_resolve(uri='lbry://on-channel-claim'))
self.assertNotIn('claim', response['lbry://on-channel-claim']) self.assertIn('claim', response['lbry://on-channel-claim'])
self.assertFalse(response['lbry://on-channel-claim']['claim']['signature_is_valid'])
direct_uri = 'lbry://on-channel-claim#' + claim['claim_id'] direct_uri = 'lbry://on-channel-claim#' + claim['claim_id']
response = await self.out(self.daemon.jsonrpc_resolve(uri=direct_uri)) response = await self.out(self.daemon.jsonrpc_resolve(uri=direct_uri))
self.assertIn('claim', response[direct_uri]) self.assertIn('claim', response[direct_uri])
self.assertFalse(response[direct_uri]['claim']['signature_is_valid'])
async def test_regular_supports_and_tip_supports(self): async def test_regular_supports_and_tip_supports(self):
# account2 will be used to send tips and supports to account1 # account2 will be used to send tips and supports to account1