def save(self, *args, **kwargs): if len(self.bytes_signature) == 0 or len(self.hex_signature) == 0: self.bytes_signature = event_signature_to_log_topic( self.text_signature) self.hex_signature = force_text( remove_0x_prefix(encode_hex(self.bytes_signature))) return super(EventSignature, self).save()
def save(self, *args, **kwargs): if self.bytes_signature_id is None: bytes4_signature = make_4byte_signature(self.text_signature) hex_signature = force_text(remove_0x_prefix(encode_hex(bytes4_signature))) self.bytes_signature, _ = BytesSignature.objects.get_or_create( bytes4_signature=bytes4_signature, defaults={'hex_signature': hex_signature}, ) return super(Signature, self).save()
def test_serialization(factories): signature = factories.EventSignatureFactory() serializer = EventSignatureSerializer(signature) data = serializer.data assert data['id'] == signature.id assert data['text_signature'] == signature.text_signature assert data['bytes_signature'] == force_text(signature.bytes_signature) assert data['hex_signature'] == signature.get_hex_display()
def save(self, *args, **kwargs): if self.bytes_signature_id is None: bytes4_signature = make_4byte_signature(self.text_signature) hex_signature = force_text(remove_0x_prefix(encode_hex(bytes4_signature))) self.bytes_signature, _ = BytesSignature.objects.get_or_create( bytes4_signature=bytes4_signature, defaults={'hex_signature': hex_signature}, ) return super(Signature, self).save()
def test_event_signature_api_create(api_client): response = api_client.post(EVENT_API_URL, {'text_signature': 'account(address)'}) assert response.status_code == status.HTTP_201_CREATED data = response.data assert data['text_signature'] == 'account(address)' assert data['bytes_signature'] == force_text( event_signature_to_log_topic(data['text_signature'])) assert data[ 'hex_signature'] == '0x73b9aa91e3748e9df0e79073dca453a3ec1c019407cb9290c3173ad56df0f573'
def test_create_complex_signature(api_client): text_signature = 'getOrdersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])' # noqa: E501 response = api_client.post(EVENT_API_URL, {'text_signature': text_signature}) assert response.status_code == status.HTTP_201_CREATED data = response.data assert data['text_signature'] == text_signature assert data['bytes_signature'] == force_text( event_signature_to_log_topic( normalize_event_signature(data['text_signature']))) assert data[ 'hex_signature'] == '0x7e9d74dc5e5d1a841950b2603b1fc48e0a1c1391bbb4ed24915c26cf1ff33ccb'
def test_retrieve_signature(api_client, factories): signature = factories.EventSignatureFactory() detail_url = EVENT_API_URL + str(signature.id) + '/' response = api_client.get(detail_url) assert response.status_code == status.HTTP_200_OK data = response.data assert data['id'] == signature.id assert data['text_signature'] == signature.text_signature assert data['bytes_signature'] == force_text(signature.bytes_signature) assert data['hex_signature'] == signature.get_hex_display()
def test_retrieve_signature(api_client, factories): signature = factories.SignatureFactory() detail_url = reverse('api:signature-detail', kwargs={'pk': signature.pk}) response = api_client.get(detail_url) assert response.status_code == status.HTTP_200_OK data = response.data assert data['id'] == signature.id assert data['text_signature'] == signature.text_signature assert data['bytes_signature'] == force_text(signature.bytes_signature.bytes4_signature) assert data['hex_signature'] == signature.bytes_signature.get_hex_display()
def import_from_solidity_file(cls, file_obj): code = force_text(file_obj.read()) return cls.import_from_solidity_code(code)
def get_bytes_display(self): return force_text(self.bytes4_signature)
def get_hex_display(self): return force_text(add_0x_prefix(self.hex_signature))
def save(self, *args, **kwargs): if not self.hex_signature: self.hex_signature = force_text(remove_0x_prefix(encode_hex(self.bytes4_signature))) super(BytesSignature, self).save(*args, **kwargs)
def import_from_solidity_file(cls, file_obj): code = force_text(file_obj.read()) return cls.import_from_solidity_code(code)
def get_bytes_display(self): return force_text(self.bytes4_signature)
def get_hex_display(self): return force_text(add_0x_prefix(self.hex_signature))
def save(self, *args, **kwargs): if not self.hex_signature: self.hex_signature = force_text( remove_0x_prefix(encode_hex(self.bytes4_signature))) super(BytesSignature, self).save(*args, **kwargs)