def test_that_callerid_forphones_never_raises(self):
        mock_agi = Mock(FastAGI)
        mock_agi.env = {
            'agi_calleridname': '5555551234',
            'agi_callerid': '5555551234',
        }

        callerid_forphones(mock_agi, Mock(), Mock())
    def test_callerid_forphones_no_lookup(self, mock_reverse_lookup):
        mock_agi = Mock(FastAGI)
        mock_agi.env = {
            'agi_calleridname': 'Pierre',
            'agi_callerid': '5555551234',
        }

        callerid_forphones(mock_agi, Mock(), Mock())

        assert_that(mock_reverse_lookup.call_count, equal_to(0),
                    '_reverse_lookup call count')
    def test_callerid_forphones_no_result(self, mock_reverse_lookup):
        mock_agi = Mock(FastAGI)
        mock_agi.env = {
            'agi_calleridname': '5555551234',
            'agi_callerid': '5555551234',
        }
        mock_reverse_lookup.return_value = {}

        callerid_forphones(mock_agi, Mock(), Mock())

        assert_that(mock_reverse_lookup.call_count, equal_to(1),
                    '_reverse_lookup call count')
        assert_that(mock_agi.set_callerid.call_count, equal_to(0),
                    'set_callerid call count')
        mock_agi.set_variable.assert_called_once_with('XIVO_REVERSE_LOOKUP', '')
    def test_callerid_forphones_with_result(self, mock_reverse_lookup):
        mock_agi = Mock(FastAGI)
        mock_agi.env = {
            'agi_calleridname': '5555551234',
            'agi_callerid': '5555551234',
        }
        mock_reverse_lookup.return_value = lookup_result = {
            'db-reverse': 'Pierre',
            'db-mail': '*****@*****.**',
            'db-fullanme': 'Pierre LaRoche',
        }

        callerid_forphones(mock_agi, Mock(), Mock())

        expected_callerid = '"Pierre" <5555551234>'
        mock_agi.set_callerid.assert_called_once_with(expected_callerid)
        _, set_var_result = mock_agi.set_variable.call_args[0]
        for key, value in lookup_result.iteritems():
            s = '%s: %s' % (key, value)
            assert_that(set_var_result, contains_string(s))