コード例 #1
0
    def test_create_coupon(self):
        date = datetime.datetime(2015, 4, 1)
        self._set_clock(2015, 4, 1, 1)
        org = self.store.lookup("organization:name", "Second Bank")
        bond = self.store.lookup("bond:cusip", "912828R77")
        coupon = Family._create_coupon(self.store, bond, org, date)
        self.assertIsNotNone(coupon)
        transaction = BondTransaction(coupon)
        transaction.sign_object(self.key)
        transaction.check_valid(self.store)
        transaction.apply(self.store)

        org_usd_holding = self.store["34d813716009ca1786222a44347ccff"
                                     "258a4ab6029d936664fde0d13f23992b5"]
        self.assertEquals(org_usd_holding["amount"], 25000.0)

        date = datetime.datetime(2015, 7, 1)
        self._set_clock(2015, 7, 1, 2)
        coupon = Family._create_coupon(self.store, bond, org, date)
        self.assertIsNotNone(coupon)
        transaction = BondTransaction(coupon)
        transaction.sign_object(self.key)
        transaction.check_valid(self.store)
        transaction.apply(self.store)

        org_usd_holding = self.store["34d813716009ca1786222a44347ccff"
                                     "258a4ab6029d936664fde0d13f23992b5"]
        self.assertEquals(org_usd_holding["amount"], 50000.0)
コード例 #2
0
    def test_libor_update_invalid_value_one_month(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 'invalid rate',
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='G+eKJzXQBJCEgIj3ZZ46mfp73WqECskUBh4JPjFIMy9D2EAW0'
                          '2ry7VN1NA6r4ZPf2dGtRY50yHSLrRwf/3Yn0gs=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #3
0
    def test_libor_update_invalid_value_one_year(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        libor_key = TestCreateLIBORUpdate.libor_key
        libor_public_key = signing.generate_pubkey(libor_key)
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 'invalid rate'
                },
                libor_public_key=libor_public_key)
        update.sign_update_object(libor_key)

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #4
0
    def test_create_receipt_update_bad_bond(self):
        org = self.store.lookup("organization:name", "Second Bank")
        transaction = BondTransaction({
            'Updates': [{
                'UpdateType': 'CreateReceipt',
                'PaymentType': 'Redemption',
                'BondID': "BondId",
                'PayeeID': org['object-id']
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            self.fail("No such bond")
        except InvalidTransactionError:
            pass

        transaction = BondTransaction({
            'Updates': [{
                'UpdateType': 'CreateReceipt',
                'PaymentType': 'Redemption',
                'BondID': org['object-id'],
                'PayeeID': org['object-id']
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            self.fail("Not a Bond")
        except InvalidTransactionError:
            pass
コード例 #5
0
    def test_create_receipt_update_bad_organization(self):
        bond = self.store.lookup("bond:isin", "US912828R770")
        transaction = BondTransaction({
            'Updates': [{
                'UpdateType': 'CreateReceipt',
                'PaymentType': 'Redemption',
                'BondID': bond['object-id'],
                'PayeeID': "PayeeID"
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            self.fail("No organization")
        except InvalidTransactionError:
            pass

        bond = self.store.lookup("bond:isin", "US912828R770")
        transaction = BondTransaction({
            'Updates': [{
                'UpdateType': 'CreateReceipt',
                'PaymentType': 'Redemption',
                'BondID': bond['object-id'],
                'PayeeID': bond['object-id']
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            self.fail("Not an organization")
        except InvalidTransactionError:
            pass
コード例 #6
0
    def test_libor_update_not_signed(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': '0.1',
                    'OneWeek': '0.1',
                    'OneMonth': '0.1',
                    'TwoMonth': '0.1',
                    'ThreeMonth': '0.1',
                    'SixMonth': '0.1',
                    'OneYear': '0.1'
                },
                signature=None)

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #7
0
    def test_libor_update_invalid_value_one_week(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 'invalid rate',
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='HBYQ8UxaSl6tTv2Ab3Hctki7kl+G8qBthr+4vVXRvJhMrppcEA3'
                          'CMtm3OitDoYsqmB6MC0WiFqqgSzOEiqJmPUg=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #8
0
 def test_create_holding_asset_other(self):
     org = self.store.lookup("organization:name", "Test Bank")
     transaction = BondTransaction({
         "UpdateType":
         "CreateHolding",
         'Updates': [{
             "UpdateType":
             "CreateHolding",
             "owner_id":
             org["object-id"],
             "asset_type":
             "Cookies",
             "asset_id":
             "Coco Chip",
             "amount":
             10000,
             "object_id":
             "34d813716009ca1786222a44347ccff258a4ab6029" +
             "d936664fde0d13f23992b6"
         }]
     })
     transaction.sign_object(self.key)
     try:
         transaction.check_valid(self.store)
         self.fail("Unknown asset-type")
     except InvalidTransactionError:
         pass
コード例 #9
0
    def test_libor_update_missing_date(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date=None,
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature="G78QicusrNO9l8Yxt/qJGX0TxkVh0ftSiW9dYkQPL5qYctd"
                          "pb4Cq3GR15gT6DeHj0ujFcf4CK+Pu0Sqe77Zi92Y=")

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #10
0
    def test_create_settlement_ref_count(self):
        org = self.store.lookup("organization:name", "First Bank")["ref-count"]
        org2 = self.store.lookup("organization:name",
                                 "Second Bank")["ref-count"]
        transaction = BondTransaction({
            "UpdateType":
            "CreateSettlement",
            'Updates': [{
                "UpdateType":
                "CreateSettlement",
                "order_id":
                "123453716009ca1786222a44347ccff258a4ab6029" +
                "d936664fde0d13f23992b7"
            }]
        })

        transaction.sign_object(self.key)
        transaction.check_valid(self.store)
        try:
            transaction.check_valid(self.store)
            transaction.apply(self.store)
        except InvalidTransactionError:
            self.fail("This should be valid")

        new_org = self.store.lookup("organization:name",
                                    "First Bank")["ref-count"]
        new_org2 = self.store.lookup("organization:name",
                                     "Second Bank")["ref-count"]

        self.assertEquals(org + 1, new_org)
        self.assertEquals(org2 + 1, new_org)
コード例 #11
0
 def test_create_holding_owner_id(self):
     transaction = BondTransaction({
         "UpdateType":
         "CreateHolding",
         'Updates': [{
             "UpdateType":
             "CreateHolding",
             "owner_id":
             "BadOrganization",
             "asset_type":
             "Currency",
             "asset_id":
             "USD",
             "amount":
             10000,
             "object_id":
             "34d813716009ca1786222a44347ccff258a4ab6029" +
             "d936664fde0d13f23992b6"
         }]
     })
     transaction.sign_object(self.key)
     try:
         transaction.check_valid(self.store)
         self.fail("Bad Organization")
     except InvalidTransactionError:
         pass
コード例 #12
0
    def test_libor_update_invalid_value_one_year(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 'invalid rate'
                },
                signature='HDRqSWSJN8wCPMGITZLx0pW/ccqsMDYnnG9mbRUL3x1O8bz'
                          'tfGmgkD9n+6OQgb/glO52zuJdFIFV5ehCdr4L0Ug=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #13
0
    def test_libor_update_invalid_value_three_month(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 'invalid rate',
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='HO+xNW91CfhWVrvBKyk2P0rak82TPG8ZSsBucI3QhSXT7SegQd'
                          'y/Sq0dTZC+31rGQgMVdylbXLSO++aIb9OP0y8=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #14
0
    def test_libor_update_invalid_value_six_month(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 'invalid rate',
                    'OneYear': 0.1
                },
                signature='HHlwEyzhFYP53vg2tE44snVyAD4UUIzElBiaiNUPZLKrkGmO'
                          '5TLHHmRJ8RvTAkxL5elIicRiNwOKc7JI0Zjkn5o=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #15
0
    def test_libor_update_invalid_value_two_month(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 'invalid rate',
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='HCi5tDerqxHZ8han4SmTqMsbKN1JscETRCqYDU3gNQSofp'
                          't8fm25i5xyo7EwBXDlxpcOyU5em8DVQOGsdyx8jXk=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #16
0
    def test_generate_coupons_coupon(self):
        self._set_clock(2015, 4, 1, 1)
        signingkey = signed_object.generate_signing_key()
        ident = signed_object.generate_identifier(signingkey)
        node = Node(identifier=ident,
                    signingkey=signingkey,
                    address=("localhost", 10021))
        node.is_peer = True
        path = tempfile.mkdtemp()
        gossip = Gossip(node)
        journal = Journal(node,
                          gossip,
                          gossip.dispatcher,
                          consensus=DevModeConsensus(),
                          data_directory=path)
        journal.global_store.TransactionStores['/BondTransaction'] = \
            self.store
        # creates a redemption
        updates = Family._generate_coupons(journal)

        self.assertNotEquals(updates, [])

        transaction = BondTransaction(updates[0])
        transaction.sign_object(self.key)
        transaction.check_valid(self.store)
        transaction.apply(self.store)

        org_usd_holding = self.store["34d813716009ca1786222a44347ccff"
                                     "258a4ab6029d936664fde0d13f23992b5"]
        self.assertEquals(org_usd_holding["amount"], 25000.0)
コード例 #17
0
    def test_create_holding_refcounts(self):
        org = self.store.lookup("organization:name", "Test Bank")
        bond = self.store.lookup("bond:cusip", "912828R77")
        org_refcount_before = org["ref-count"]
        bond_refcount_before = bond["ref-count"]

        transaction = BondTransaction({
            "UpdateType":
            "CreateHolding",
            'Updates': [{
                "UpdateType": "CreateHolding",
                "owner_id": org["object-id"],
                "asset_type": "Bond",
                "asset_id": bond["object-id"],
                "amount": 10000
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            transaction.apply(self.store)
        except InvalidTransactionError:
            self.fail("This should be valid")

        org = self.store.lookup("organization:name", "Test Bank")
        bond = self.store.lookup("bond:cusip", "912828R77")

        self.assertEquals(org_refcount_before + 1, org["ref-count"])
        self.assertEquals(bond_refcount_before + 1, bond["ref-count"])
コード例 #18
0
    def test_coupon_exists(self):
        org = self.store.lookup("organization:name", "Second Bank")
        bond = self.store.lookup("bond:cusip", "912828R77")
        date = datetime.datetime(2015, 4, 1)
        self._set_clock(2015, 4, 1, 1)
        self.assertFalse(Family._coupon_exists(self.store, bond, org, date))

        transaction = BondTransaction({
            'Updates': [{
                'UpdateType': 'CreateReceipt',
                'PaymentType': 'Coupon',
                'BondID': bond['object-id'],
                'PayeeID': org['object-id'],
                'CouponDate': "04/01/2015"
            }]
        })
        transaction.sign_object(self.key)
        transaction.check_valid(self.store)
        try:
            transaction.check_valid(self.store)
            transaction.apply(self.store)
        except InvalidTransactionError:
            self.fail("This should be valid")

        org = self.store.lookup("organization:name", "Second Bank")
        bond = self.store.lookup("bond:cusip", "912828R77")
        self.assertTrue(Family._coupon_exists(self.store, bond, org, date))
コード例 #19
0
    def test_libor_update_invalid_value_overnight(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 'invalid rate',
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='HLwpLLCM0TdAOdyj/zpR4LUNp7QQosVTBBTqEq71zZkjKZ3a5y'
                          'SqRqFAC8Wgv9VQHyRbScLXJxFOG7xH83SxLYc=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #20
0
    def test_libor_update_duplicate_date(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='G38pbExUmKqKzdC07QJS1OJSglnpLKGr+PMu4muigey37CdT2P'
                          '7d0PBQxmaWNjtsADdPxQAS5FhtHOQbtD41fkU=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
        except InvalidTransactionError:
            self.fail('This transaction should be valid')

        transaction.apply(store)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #21
0
    def test_libor_update_signature_does_not_match(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2016-05-24',
                rates={
                    'Overnight': '0.1',
                    'OneWeek': '0.1',
                    'OneMonth': '0.1',
                    'TwoMonth': '0.1',
                    'ThreeMonth': '0.1',
                    'SixMonth': '0.1',
                    'OneYear': '0.1',
                },
                signature='hjoq7knkzlxo4qubsjslfarl1ej/qso0ar4zsucd5xguniuvqjv'
                          'zj5lrqhayi5tqvniqxai0lkt31zqsztgojxw=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #22
0
    def test_libor_update_date_in_the_future(self):
        key = signed_object.generate_signing_key()
        store = ObjectStore()
        update = \
            CreateLIBORUpdate(
                update_type='CreateLIBOR',
                date='2100-01-01',
                rates={
                    'Overnight': 0.1,
                    'OneWeek': 0.1,
                    'OneMonth': 0.1,
                    'TwoMonth': 0.1,
                    'ThreeMonth': 0.1,
                    'SixMonth': 0.1,
                    'OneYear': 0.1
                },
                signature='G/gl8XhptfXUGih7X4g4s8EeXNXpX+qz7yEHd6ah1xXyrica2p'
                          'pdePFikWb9wbR5rOnvKC8FDAIg8CadhAaizt0=')

        transaction = BondTransaction()
        transaction._updates = [update]
        transaction.sign_object(key)

        try:
            transaction.check_valid(store)
            self.fail('This transaction should be invalid')
        except InvalidTransactionError:
            pass
コード例 #23
0
    def test_create_holding_valid(self):
        org = self.store.lookup("organization:name", "Test Bank")
        transaction = BondTransaction({
            "UpdateType":
            "CreateHolding",
            'Updates': [{
                "UpdateType":
                "CreateHolding",
                "owner_id":
                org["object-id"],
                "asset_type":
                "Currency",
                "asset_id":
                "USD",
                "amount":
                10000,
                "object_id":
                "34d813716009ca1786222a44347ccff258a4ab6029" +
                "d936664fde0d13f23992b6"
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            transaction.apply(self.store)
        except InvalidTransactionError:
            self.fail("This should be valid")

        bond = self.store.lookup("bond:cusip", "912828R77")
        transaction = BondTransaction({
            "UpdateType":
            "CreateHolding",
            'Updates': [{
                "UpdateType":
                "CreateHolding",
                "owner_id":
                org["object-id"],
                "asset_type":
                "Bond",
                "asset_id":
                bond["object-id"],
                "amount":
                10000,
                "object_id":
                "34d813716009ca1786222a44347ccff258a4ab6029" +
                "d936664fde0d13f23992b7"
            }]
        })
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            transaction.apply(self.store)
        except InvalidTransactionError:
            self.fail("This should be valid")
コード例 #24
0
    def test_create_settlement_status(self):
        org2 = self.store.lookup("organization:name", "Second Bank")
        transaction = BondTransaction({
            "UpdateType":
            "CreateOrder",
            'Updates': [{
                "UpdateType":
                "CreateOrder",
                "Action":
                "Buy",
                "OrderType":
                "Limit",
                "FirmId":
                org2["object-id"],
                "Isin":
                "US912828R770",
                "Quantity":
                100000,
                "LimitPrice":
                "98-05.875",
                "LimitYield":
                0.015,
                "object_id":
                "765432116009ca1786222a44347ccff258a4ab6029" +
                "d936664fde0d13f23992b7"
            }]
        })
        # quote-id
        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            transaction.apply(self.store)
        except InvalidTransactionError:
            self.fail("This should be valid")

        transaction = BondTransaction({
            "UpdateType":
            "CreateSettlement",
            'Updates': [{
                "UpdateType":
                "CreateSettlement",
                "order_id":
                "765432116009ca1786222a44347ccff258a4ab6029" +
                "d936664fde0d13f23992b7"
            }]
        })

        transaction.sign_object(self.key)
        try:
            transaction.check_valid(self.store)
            self.fail("Order is not matched")
        except:
            pass
コード例 #25
0
 def _set_clock(self, year, month, day, num):
     date = time.mktime(datetime.date(year, month, day).timetuple())
     transaction = BondTransaction({
         'Updates': [{
             'UpdateType': 'Clock',
             'Blocknum': num,
             'PreviousBlockId': 0,
             'Timestamp': date
         }]
     })
     transaction.sign_object(self.key)
     transaction.check_valid(self.store)
     transaction.apply(self.store)
コード例 #26
0
 def test_delete_quote(self):
     transaction = BondTransaction({
         "UpdateType": "DeleteQuote",
         'Updates': [{
             "UpdateType": "DeleteQuote",
             "ObjectId": "3932250c4877136ee99bf76e5ffbb50b7f"
             "bd46d6788340d29422abcdabcdabcd"
         }]
     })
     try:
         transaction.sign_object(self.key)
         transaction.check_valid(self.store)
         transaction.apply(self.store)
     except InvalidTransactionError:
         self.fail("This should be valid")
コード例 #27
0
 def test_create_settlement_order_id(self):
     transaction = BondTransaction({
         "UpdateType":
         "CreateSettlement",
         'Updates': [{
             "UpdateType": "CreateSettlement",
             "order_id": "bad Id"
         }]
     })
     transaction.sign_object(self.key)
     try:
         transaction.check_valid(self.store)
         self.fail("No Order found")
     except InvalidTransactionError:
         pass
コード例 #28
0
 def test_create_receipt_update_bad_type(self):
     org = self.store.lookup("organization:name", "Second Bank")
     bond = self.store.lookup("bond:isin", "US912828R770")
     transaction = BondTransaction({
         'Updates': [{
             'UpdateType': 'CreateReceipt',
             'PaymentType': 'PayOut',
             'BondID': bond['object-id'],
             'PayeeID': org['object-id']
         }]
     })
     transaction.sign_object(self.key)
     try:
         transaction.check_valid(self.store)
         self.fail("PaymentType is not Coupon or Redemption")
     except InvalidTransactionError:
         pass
コード例 #29
0
 def test_create_receipt_update_early_redemption(self):
     self._set_clock(2015, 4, 1, 1)
     org = self.store.lookup("organization:name", "Second Bank")
     bond = self.store.lookup("bond:isin", "US912828R770")
     transaction = BondTransaction({
         'Updates': [{
             'UpdateType': 'CreateReceipt',
             'PaymentType': 'Redemption',
             'BondID': bond['object-id'],
             'PayeeID': org['object-id']
         }]
     })
     transaction.sign_object(self.key)
     try:
         transaction.check_valid(self.store)
         self.fail("Early Redemption")
     except InvalidTransactionError:
         pass