Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

# Authors: 

#   Petr Viktorin <pviktori@redhat.com> 

# 

# Copyright (C) 1012  Red Hat 

# see file 'COPYING' for use and warranty information 

# 

# This program is free software; you can redistribute it and/or modify 

# it under the terms of the GNU General Public License as published by 

# the Free Software Foundation, either version 3 of the License, or 

# (at your option) any later version. 

# 

# This program is distributed in the hope that it will be useful, 

# but WITHOUT ANY WARRANTY; without even the implied warranty of 

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

# GNU General Public License for more details. 

# 

# You should have received a copy of the GNU General Public License 

# along with this program.  If not, see <http://www.gnu.org/licenses/>. 

 

""" 

Test the `ipalib.messages` module. 

""" 

 

from ipalib import messages 

from ipalib.capabilities import capabilities 

from tests.test_ipalib import test_errors 

 

 

class HelloMessage(messages.PublicMessage): 

    type = 'info' 

    format = '%(greeting)s, %(object)s!' 

    errno = 1234 

 

 

class test_PublicMessage(test_errors.test_PublicError): 

    """Test public messages""" 

    # The messages are a lot like public errors; defer testing to that. 

    klass = messages.PublicMessage 

    required_classes = (UserWarning, messages.PublicMessage) 

 

 

class test_PublicMessages(test_errors.BaseMessagesTest): 

    message_list = messages.public_messages 

    errno_range = xrange(10000, 19999) 

    required_classes = (UserWarning, messages.PublicMessage) 

    texts = messages._texts 

 

    def extratest(self, cls): 

        if cls is not messages.PublicMessage: 

            assert cls.type in ('debug', 'info', 'warning', 'error') 

 

 

def test_to_dict(): 

    expected = dict( 

        name='HelloMessage', 

        type='info', 

        message='Hello, world!', 

        code=1234, 

    ) 

 

    assert HelloMessage(greeting='Hello', object='world').to_dict() == expected 

 

 

def test_add_message(): 

    result = {} 

 

    assert capabilities['messages'] == u'2.52' 

 

    messages.add_message(u'2.52', result, 

                         HelloMessage(greeting='Hello', object='world')) 

    messages.add_message(u'2.1', result, 

                         HelloMessage(greeting="'Lo", object='version')) 

    messages.add_message(u'2.60', result, 

                         HelloMessage(greeting='Hi', object='version')) 

 

    assert result == {'messages': [ 

        dict( 

            name='HelloMessage', 

            type='info', 

            message='Hello, world!', 

            code=1234, 

        ), 

        dict( 

            name='HelloMessage', 

            type='info', 

            message='Hi, version!', 

            code=1234, 

        ) 

    ]}