Skip to content
Snippets Groups Projects
Select Git revision
  • 0f38930b3c4cdceaab0c1cf3a5a8aa2287579e08
  • main default protected
  • release/1.1
  • encrypt_comments
  • mnemonic_dewif
  • authors_rules
  • 0.14
  • rtd
  • 1.2.1 protected
  • 1.2.0 protected
  • 1.1.1 protected
  • 1.1.0 protected
  • 1.0.0 protected
  • 1.0.0rc1 protected
  • 1.0.0rc0 protected
  • 1.0.0-rc protected
  • 0.62.0 protected
  • 0.61.0 protected
  • 0.60.1 protected
  • 0.58.1 protected
  • 0.60.0 protected
  • 0.58.0 protected
  • 0.57.0 protected
  • 0.56.0 protected
  • 0.55.1 protected
  • 0.55.0 protected
  • 0.54.3 protected
  • 0.54.2 protected
28 results

helpers.py

Blame
  • test_tx.py 8.98 KiB
    import unittest
    
    import jsonschema
    
    from duniterpy.api.bma.tx import history, sources, blocks, HISTORY_SCHEMA, SOURCES_SCHEMA
    from duniterpy.api.client import Client
    from duniterpy.api.endpoint import BMAEndpoint
    from tests.api.webserver import WebFunctionalSetupMixin, web
    
    
    class TestBmaTx(WebFunctionalSetupMixin, unittest.TestCase):
        def test_bma_tx_history(self):
            json_sample = {
                "currency": "meta_brouzouf",
                "pubkey": "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk",
                "history": {
                    "sent": [
                        {
                            "version": 1,
                            "issuers": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
                            ],
                            "inputs": [
                                "0:D:125:000A8362AE0C1B8045569CE07735DE4C18E81586:100"
                            ],
                            "outputs": [
                                "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:5",
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:95"
                            ],
                            "comment": "Essai",
                            "signatures": [
                                "8zzWSU+GNSNURnH1NKPT/TBoxngEc/0wcpPSbs7FqknGxud+94knvT+dpe99k6NwyB5RXvOVnKAr4p9/KEluCw=="
                            ],
                            "hash": "FC7BAC2D94AC9C16AFC5C0150C2C9E7FBB2E2A09",
                            "block_number": 173,
                            "time": 1421932545
                        }
                    ],
                    "received": [
                        {
                            "version": 1,
                            "issuers": [
                                "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU"
                            ],
                            "inputs": [
                                "0:D:125:000A8362AE0C1B8045569CE07735DE4C18E81586:100"
                            ],
                            "outputs": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:7",
                                "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU:93"
                            ],
                            "comment": "",
                            "signatures": [
                                "1Mn8q3K7N+R4GZEpAUm+XSyty1Uu+BuOy5t7BIRqgZcKqiaxfhAUfDBOcuk2i4TJy1oA5Rntby8hDN+cUCpvDg=="
                            ],
                            "hash": "5FB3CB80A982E2BDFBB3EA94673A74763F58CB2A",
                            "block_number": 207,
                            "time": 1421955525
                        },
                        {
                            "version": 1,
                            "issuers": [
                                "J78bPUvLjxmjaEkdjxWLeENQtcfXm7iobqB49uT1Bgp3"
                            ],
                            "inputs": [
                                "0:T:15128:6A50FF82410387B239489CE38B34E0FDDE1697FE:10000"
                            ],
                            "outputs": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:42",
                                "J78bPUvLjxmjaEkdjxWLeENQtcfXm7iobqB49uT1Bgp3:9958"
                            ],
                            "comment": "",
                            "signatures": [
                                "XhBcCPizPiWdKeXWg1DX/FTQst6DppEjsYEtoAZNA0P11reXtgc9IduiIxNWzNjt/KvTw8APkSI8/Uf31QQVDA=="
                            ],
                            "hash": "ADE7D1C4002D6BC10013C34CE22733A55173BAD4",
                            "block_number": 15778,
                            "time": 1432314584
                        }
                    ],
                    "sending": [
                        {
                            "version": 1,
                            "issuers": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
                            ],
                            "inputs": [
                                "0:D:8196:000022AD426FE727C707D847EC2168A64C577706:5872"
                            ],
                            "outputs": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:5871"
                                "2sq8bBDQGK74f1eD3mAPQVgHCmFdijZr9nbv16FwbokX:1",
                            ],
                            "comment": "some comment",
                            "signatures": [
                                "kLOAAy7/UldQk7zz4I7Jhv9ICuGYRx7upl8wH8RYL43MMF6+7MbPh3QRN1qNFGpAfa3XMWIQmbUWtjZKP6OfDA=="
                            ],
                            "hash": "BA41013F2CD38EDFFA9D38A275F8532DD906A2DE"
                        }
                    ],
                    "receiving": [
                        {
                            "version": 1,
                            "issuers": [
                                "2sq8bBDQGK74f1eD3mAPQVgHCmFdijZr9nbv16FwbokX"
                            ],
                            "inputs": [
                                "0:D:8196:000022AD426FE727C707D847EC2168A64C577706:4334"
                            ],
                            "outputs": [
                                "2sq8bBDQGK74f1eD3mAPQVgHCmFdijZr9nbv16FwbokX:1",
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:4333"
                            ],
                            "comment": "some comment",
                            "signatures": [
                                "DRiZinUEKrrLiJNogtydzwEbmETrvWiLNYXCiJsRekxTLyU5g4LjnwiLp/XlvmIekjJK5n/gullLWrHUBvFSAw=="
                            ],
                            "hash": "A0A511131CD0E837204A9441B3354918AC4CE671"
                        }
                    ],
                    "pending": [
                        {
                            "version": 1,
                            "issuers": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
                            ],
                            "inputs": [
                                "0:D:8196:000022AD426FE727C707D847EC2168A64C577706:5872"
                            ],
                            "outputs": [
                                "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk:5871"
                                "2sq8bBDQGK74f1eD3mAPQVgHCmFdijZr9nbv16FwbokX:1",
                            ],
                            "comment": "some comment",
                            "signatures": [
                                "kLOAAy7/UldQk7zz4I7Jhv9ICuGYRx7upl8wH8RYL43MMF6+7MbPh3QRN1qNFGpAfa3XMWIQmbUWtjZKP6OfDA=="
                            ],
                            "hash": "BA41013F2CD38EDFFA9D38A275F8532DD906A2DE"
                        }
                    ],
                }
            }
            jsonschema.validate(json_sample, HISTORY_SCHEMA)
    
        def test_bma_tx_history_bad(self):
            async def handler(request):
                await request.read()
                return web.Response(body=b'{}', content_type='application/json')
    
            async def go():
                _, port, url = await self.create_server('GET', '/tx/history/pubkey', handler)
                with self.assertRaises(jsonschema.exceptions.ValidationError):
                    client = Client(BMAEndpoint("127.0.0.1", "", "", port))
                    await client(history, 'pubkey')
                await client.close()
    
            self.loop.run_until_complete(go())
    
        def test_bma_tx_history_blocks_bad(self):
            async def handler(request):
                await request.read()
                return web.Response(body=b'{}', content_type='application/json')
    
            async def go():
                _, port, url = await self.create_server('GET', '/tx/history/pubkey/blocks/0/100', handler)
                with self.assertRaises(jsonschema.exceptions.ValidationError):
                    client = Client(BMAEndpoint("127.0.0.1", "", "", port))
                    await client(blocks, 'pubkey', 0, 100)
                await client.close()
    
            self.loop.run_until_complete(go())
    
        def test_bma_tx_sources(self):
            json_sample = {
                "currency": "meta_brouzouf",
                "pubkey": "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU",
                "sources": [
                    {
                        "pubkey": "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU",
                        "type": "T",
                        "noffset": 34444,
                        "identifier": "6ACECB199D1B054B2633D0E42C066939B7F8EF1D",
                        "amount": 1000000,
                        "base": 1
                    },
                    {
                        "pubkey": "8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU",
                        "type": "D",
                        "noffset": 34989,
                        "identifier": "0007CCC9755067008C28E791E6F2B0D4CBE9B894",
                        "amount": 1730543585843,
                        "base": 2
                    }
                ]
            }
            jsonschema.validate(json_sample, SOURCES_SCHEMA)
    
        def test_bma_tx_sources_bad(self):
            async def handler(request):
                await request.read()
                return web.Response(body=b'{}', content_type='application/json')
    
            async def go():
                _, port, url = await self.create_server('GET', '/tx/sources/pubkey', handler)
                with self.assertRaises(jsonschema.exceptions.ValidationError):
                    client = Client(BMAEndpoint("127.0.0.1", "", "", port))
                    await client(sources, 'pubkey')
                await client.close()
    
            self.loop.run_until_complete(go())