Esempio n. 1
0
    def test_settleCommitIncoming(self):
        'test settleCommitIncoming'

        msg_in = messages.SettleCommit(token='foobar', isPayerSide=True)
        expectedRouteID = '1' + settings.hashAlgorithm('foobar')

        self.link.channels.append(DummyChannel())
        self.link.channels.append(DummyChannel())

        self.assertRaises(Exception, self.link.settleCommitIncoming, msg_in)

        self.assertEqual(self.link.channels[0].state, [expectedRouteID])
        self.assertEqual(self.link.channels[1].state, [expectedRouteID])

        self.link.channels[0].state = []
        self.link.channels[1].state = []

        self.link.channels[1].hasRouteReturn = True

        ret = self.link.settleCommitIncoming(msg_in)

        self.assertEqual(len(ret), 1)
        msg = ret[0]
        self.assertTrue(isinstance(msg, messages.OutboundMessage))
        self.assertEqual(msg.localID, 'local')
        msg = msg.message
        self.assertTrue(isinstance(msg, messages.ChannelMessage))
        self.assertEqual(msg.channelIndex, 1)
        self.assertEqual(msg.message, 'settleCommitIncoming')

        self.assertEqual(self.link.channels[0].state, [expectedRouteID])
        self.assertEqual(self.link.channels[1].state, [
            expectedRouteID, ('settleCommitIncoming', (expectedRouteID, ), {})
        ])
Esempio n. 2
0
	def test_settleCommitOutgoing(self):
		"Test settleCommitOutgoing"

		ret = self.payeeLink.settleCommitOutgoing(
			messages.SettleCommit(token=self.payeeLink.token))

		self.assertEqual(self.payeeLink.state, payeelink.PayeeLink.states.committed)

		self.assertEqual(len(ret), 0)
Esempio n. 3
0
    def test_settleCommitOutgoing(self):
        'Test settleCommitOutgoing'

        ret = self.meetingPoint.settleCommitOutgoing(
            messages.SettleCommit(ID='foo', token='bar', isPayerSide=True))

        self.assertEqual(len(ret), 1)

        msg = ret[0]
        self.assertTrue(isinstance(msg, messages.SettleCommit))
        self.assertEqual(msg.ID, 'MPID')
        self.assertEqual(msg.token, 'bar')
        self.assertEqual(msg.isPayerSide, False)
Esempio n. 4
0
    def test_settleCommitIncoming(self):
        "Test settleCommitIncoming"

        ret = self.payerLink.settleCommitIncoming(
            messages.SettleCommit(token="bar"))

        self.assertEqual(self.payerLink.state,
                         payerlink.PayerLink.states.committed)

        self.assertEqual(len(ret), 2)

        msg = ret[0]
        self.assertTrue(isinstance(msg, messages.FilterTimeouts))
        function = msg.function
        self.assertFalse(function(messages.PayerTimeout()))
        self.assertTrue(function(messages.NodeStateTimeout_Route()))
        msg = ret[1]
        self.assertTrue(isinstance(msg, messages.SetEvent))
        self.assertEqual(msg.event, messages.SetEvent.events.paymentFinished)
Esempio n. 5
0
    def test_settleRollbackIncoming(self):
        'test settleRollbackIncoming'

        msg_in = messages.SettleRollback(transactionID='foobar',
                                         isPayerSide=True)

        self.link.channels.append(DummyChannel())
        self.link.channels.append(DummyChannel())

        self.assertRaises(Exception, self.link.settleRollbackIncoming, msg_in)

        self.assertEqual(self.link.channels[0].state, ['1foobar'])
        self.assertEqual(self.link.channels[1].state, ['1foobar'])

        self.link.channels[0].state = []
        self.link.channels[1].state = []

        self.link.channels[1].hasRouteReturn = True

        ret = self.link.settleRollbackIncoming(msg_in)

        self.assertEqual(len(ret), 2)
        msg = ret[0]
        self.assertTrue(isinstance(msg, messages.OutboundMessage))
        self.assertEqual(msg.localID, 'local')
        msg = msg.message
        self.assertTrue(isinstance(msg, messages.ChannelMessage))
        self.assertEqual(msg.channelIndex, 1)
        self.assertEqual(msg.message, 'settleRollbackIncoming')
        msg = ret[1]
        self.assertTrue(isinstance(msg, messages.FilterTimeouts))
        self.assertFalse(
            msg.function(
                messages.LinkTimeout_Commit(transactionID='foobar',
                                            isPayerSide=True,
                                            ID='local')))
        self.assertTrue(
            msg.function(
                messages.LinkTimeout_Commit(transactionID='other',
                                            isPayerSide=True,
                                            ID='local')))
        self.assertTrue(
            msg.function(
                messages.LinkTimeout_Commit(transactionID='foobar',
                                            isPayerSide=False,
                                            ID='local')))
        self.assertTrue(
            msg.function(
                messages.LinkTimeout_Commit(transactionID='foobar',
                                            isPayerSide=True,
                                            ID='other')))
        self.assertTrue(
            msg.function(
                messages.SettleCommit(transactionID='foobar',
                                      isPayerSide=True,
                                      ID='local')))

        self.assertEqual(self.link.channels[0].state, ['1foobar'])
        self.assertEqual(
            self.link.channels[1].state,
            ['1foobar', ('settleRollbackIncoming', ('1foobar', ), {})])
Esempio n. 6
0
    def test_settleCommitOutgoing(self):
        'test settleCommitOutgoing'

        msg_in = messages.SettleCommit(token='foobar', isPayerSide=True)
        expectedRouteID = '1' + settings.hashAlgorithm('foobar')

        self.link.channels.append(DummyChannel())
        self.link.channels.append(DummyChannel())

        ret = self.link.settleCommitOutgoing(msg_in)

        self.assertEqual(len(ret), 0)

        self.assertEqual(self.link.channels[0].state, [expectedRouteID])
        self.assertEqual(self.link.channels[1].state, [expectedRouteID])

        self.link.channels[0].state = []
        self.link.channels[1].state = []

        self.link.channels[1].hasRouteReturn = True

        ret = self.link.settleCommitOutgoing(msg_in)

        self.assertEqual(len(ret), 3)
        msg = ret[0]
        self.assertTrue(isinstance(msg, messages.OutboundMessage))
        self.assertEqual(msg.localID, 'local')
        msg = msg.message
        self.assertTrue(isinstance(msg, messages.ChannelMessage))
        self.assertEqual(msg.channelIndex, 1)
        self.assertEqual(msg.message, 'settleCommitOutgoing')
        msg = ret[1]
        self.assertTrue(isinstance(msg, messages.OutboundMessage))
        self.assertEqual(msg.localID, 'local')
        msg = msg.message
        self.assertFalse(msg is msg_in)
        self.assertTrue(isinstance(msg, messages.SettleCommit))
        self.assertEqual(msg.token, msg_in.token)
        self.assertEqual(msg.isPayerSide, msg_in.isPayerSide)
        msg = ret[2]
        self.assertTrue(isinstance(msg, messages.FilterTimeouts))
        self.assertFalse(
            msg.function(
                messages.LinkTimeout_Commit(
                    transactionID=settings.hashAlgorithm('foobar'),
                    isPayerSide=True,
                    ID='local')))
        self.assertTrue(
            msg.function(
                messages.LinkTimeout_Commit(transactionID='other',
                                            isPayerSide=True,
                                            ID='local')))
        self.assertTrue(
            msg.function(
                messages.LinkTimeout_Commit(
                    transactionID=settings.hashAlgorithm('foobar'),
                    isPayerSide=False,
                    ID='local')))
        self.assertTrue(
            msg.function(
                messages.LinkTimeout_Commit(
                    transactionID=settings.hashAlgorithm('foobar'),
                    isPayerSide=True,
                    ID='other')))
        self.assertTrue(
            msg.function(
                messages.SettleCommit(
                    transactionID=settings.hashAlgorithm('foobar'),
                    isPayerSide=True,
                    ID='local')))

        self.assertEqual(self.link.channels[0].state, [expectedRouteID])
        self.assertEqual(self.link.channels[1].state, [
            expectedRouteID,
            ('settleCommitOutgoing', (expectedRouteID, 'foobar'), {})
        ])