#!/usr/bin/env python
'''
Copyright (C) 2012, Digium, Inc.
Walter Doekes <walter+asterisk@wjd.nu>

This program is free software, distributed under the terms of
the GNU General Public License Version 2.
'''

import sys
import os
import logging

sys.path.append("lib/python")

from asterisk.test_case import TestCase
from asterisk.sipp import SIPpScenario
from twisted.internet import reactor

TEST_DIR = os.path.dirname(os.path.realpath(__file__))
logger = logging.getLogger(__name__)

class UseContactFrom200Test(TestCase):
    def __init__(self):
        super(UseContactFrom200Test, self).__init__()
        self.passed = False
        self.create_asterisk()

    def run(self):
        super(UseContactFrom200Test, self).run()
        self.create_ami_factory()

    def ami_connect(self, ami):
        super(UseContactFrom200Test, self).ami_connect(ami)
        logger.debug("Connected to AMI")

        self.start_listening()
        self.ast[0].cli_exec("channel originate "
                             "SIP/test@127.0.0.1:5062 "
                             "application Wait 1")

    def start_listening(self):
        def finish_listening(result):
            if result.passed:
                self.passed = True
            self.stop_reactor()

        self.scenario = SIPpScenario(TEST_DIR, {
            'scenario': 'proxy_fork_invite_no_rr.xml',
            '-p': '5062',
            '-timeout': '8s',
        })
        df = self.scenario.run(self)
        df.addCallback(finish_listening)




def main():
    test = UseContactFrom200Test()
    test.start_asterisk()
    reactor.run()
    test.stop_asterisk()
    if test.passed:
        return 0
    return 1


if __name__ == "__main__":
    sys.exit(main())


# vim:ts=8:sw=4:sts=4:expandtab:textwidth=79
