~ubuntu-branches/debian/sid/openchange/sid

« back to all changes in this revision

Viewing changes to pyopenchange/unittest/unittest_mapistoredb.py

  • Committer: Package Import Robot
  • Author(s): Jelmer Vernooij
  • Date: 2012-04-12 20:07:57 UTC
  • mfrom: (11 sid)
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: package-import@ubuntu.com-20120412200757-k933d9trljmxj1l4
Tags: 1:1.0-4
* openchangeserver: Add dependency on openchangeproxy.
* Rebuild against newer version of Samba 4.
* Use dpkg-buildflags.
* Migrate to Git, update Vcs-Git header.
* Switch to debhelper 9.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
# -*- coding: utf-8 -*-
3
 
 
4
 
import os
5
 
import openchange
6
 
import openchange.mapistoredb as mapistoredb
7
 
import openchange.mapistore as mapistore
8
 
import openchange.mapi as mapi
9
 
import unittest
10
 
import shutil
11
 
import tempfile
12
 
 
13
 
folder_list = [ (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_DEFERRED_ACTIONS),
14
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_SPOOLER_QUEUE),
15
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_IPM_SUBTREE),
16
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_INBOX),
17
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_OUTBOX),
18
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_SENT_ITEMS),
19
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_DELETED_ITEMS),
20
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_CALENDAR),
21
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_CONTACTS),
22
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_JOURNAL),
23
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_NOTES),
24
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_TASKS),
25
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_DRAFTS),
26
 
                (mapistore.MDB_IPM_SUBTREE, mapistore.MDB_SYNC_ISSUES),
27
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_COMMON_VIEWS),
28
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_SCHEDULE),
29
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_SEARCH),
30
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_VIEWS),
31
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_SHORTCUTS),
32
 
                (mapistore.MDB_ROOT_FOLDER, mapistore.MDB_REMINDERS) ]
33
 
    
34
 
 
35
 
class TestMAPIStoreDB(unittest.TestCase):
36
 
 
37
 
        def setUp(self):
38
 
                self.username = "jkerihuel"
39
 
                self.working_directory = tempfile.mkdtemp(prefix="TestMAPIStoreDB")
40
 
                self.MAPIStoreDB = mapistoredb.mapistoredb()
41
 
                self.assert_(self.MAPIStoreDB)
42
 
                retval = self.MAPIStoreDB.initialize(self.working_directory)
43
 
                self.assertEqual(retval, 0)
44
 
                retval = self.MAPIStoreDB.provision(netbiosname = "server", firstorg = "OpenChange Project", firstou = "OpenChange Development Unit")
45
 
                self.assertEqual(retval, 0)
46
 
                retval = self.MAPIStoreDB.provision_named_properties()
47
 
                self.assertEqual(retval, 0) # success
48
 
                (retval,npid) = self.MAPIStoreDB.namedprops_get_default_id(mapistoredb.MAPISTORE_NAMEDPROPS_EXTERNAL)
49
 
                self.assertEqual(retval, 0) # success
50
 
                self.assertNotEqual(npid, 0) # we have at least one external property id
51
 
                (retval,npid) = self.MAPIStoreDB.namedprops_get_default_id(mapistoredb.MAPISTORE_NAMEDPROPS_INTERNAL)
52
 
                self.assertEqual(retval, 0) # success
53
 
                self.assertNotEqual(npid, 0) # we have at least one internal property id
54
 
                retval = self.MAPIStoreDB.namedprops_provision_backends()
55
 
                self.assertEqual(retval, 0) # success
56
 
                retval = self.MAPIStoreDB.namedprops_provision_user(self.username)
57
 
                self.assertEqual(retval, 0) # success
58
 
                self.mailbox_root = self.MAPIStoreDB.get_mapistore_uri(folder=mapistoredb.MDB_ROOT_FOLDER, username=self.username, namespace="mstoredb://")
59
 
 
60
 
        def test_get_parameters(self):
61
 
                netbiosname = self.MAPIStoreDB.netbiosname
62
 
                self.assertEqual(netbiosname, "server")
63
 
                firstorg = self.MAPIStoreDB.firstorg
64
 
                self.assertEqual(firstorg, "OpenChange Project")
65
 
                firstou = self.MAPIStoreDB.firstou
66
 
                self.assertEqual(firstou, "OpenChange Development Unit")
67
 
 
68
 
        def test_allocation_range(self):
69
 
                retval = self.MAPIStoreDB.new_mailbox(self.username, self.mailbox_root)
70
 
                self.assertEqual(retval, 0) # success
71
 
                (retval, rstart, rend) = self.MAPIStoreDB.get_new_allocation_range(self.username, 0x1000)
72
 
                self.assertEqual(retval, 0) # success
73
 
                self.assertNotEqual(rstart, 0) # should be greater than zero
74
 
                self.assertEqual(rend-rstart, (0x1000 - 1) << 16) # because ranges are inclusive
75
 
                retval = self.MAPIStoreDB.set_mailbox_allocation_range(self.username, rstart, rend)
76
 
                self.assertEqual(retval, 0) # success
77
 
 
78
 
        def test_get_new_fid(self):
79
 
                retval = self.MAPIStoreDB.new_mailbox(self.username, self.mailbox_root)
80
 
                self.assertEqual(retval, 0) # success
81
 
                fid = self.MAPIStoreDB.get_new_fid(self.username)
82
 
                self.assertNotEqual(fid, 0)
83
 
                
84
 
        def test_dump_config(self):
85
 
                retval = self.MAPIStoreDB.dump_configuration()
86
 
                self.assertEqual(retval, 0) # success
87
 
 
88
 
        def test_folder_context(self):
89
 
                mapistore.set_mapping_path(os.path.join(self.working_directory, "mapistore"))
90
 
                self.MAPIStore = mapistore.mapistore()
91
 
                retval = self.MAPIStoreDB.new_mailbox(self.username, self.mailbox_root)
92
 
                self.assertEqual(retval, 0) # success
93
 
                (context_id, mailbox_fid) = self.MAPIStore.add_context(self.username, self.mailbox_root)
94
 
                self.assertNotEqual(context_id, 0)
95
 
                self.assertNotEqual(mailbox_fid, 0)
96
 
                for (parent, index) in folder_list:
97
 
                        retval = self.MAPIStore.root_mkdir(context_id=context_id, parent_index=parent, index=index, folder_name="")
98
 
                        self.assertEqual(retval, 0, mapistore.errstr(retval))
99
 
                ipm_subtree_fid = self.MAPIStore.get_folder_identifier(context_id=context_id, index=mapistore.MDB_IPM_SUBTREE, uri=None)
100
 
                self.assertNotEqual(ipm_subtree_fid, 0)
101
 
                sync_fid = self.MAPIStore.get_folder_identifier(context_id=context_id, index=mapistore.MDB_SYNC_ISSUES, uri=None)
102
 
                self.assertNotEqual(sync_fid, 0)
103
 
                retval = self.MAPIStore.opendir(context_id=context_id, parent_fid=ipm_subtree_fid, fid=sync_fid)
104
 
                self.assertEqual(retval, 0)
105
 
                conflicts_fid = self.MAPIStore.mkdir(context_id, sync_fid, "Conflicts", None, mapistore.FOLDER_GENERIC)
106
 
                self.assertNotEqual(conflicts_fid, 0)
107
 
                inbox_uri = self.MAPIStore.get_mapistore_uri(mapistore.MDB_INBOX, self.username, "fsocpf://")
108
 
                retval = self.MAPIStore.set_mapistore_uri(context_id, mapistore.MDB_INBOX, inbox_uri)
109
 
                self.assertEqual(retval, 0)
110
 
                (inbox_context_id, inbox_fid) = self.MAPIStore.add_context(self.username, inbox_uri)
111
 
                self.assertNotEqual(inbox_context_id, 0)
112
 
                self.assertNotEqual(inbox_fid, 0)
113
 
                num_folders = self.MAPIStore.get_folder_count(inbox_context_id, inbox_fid)
114
 
                self.assertEqual(num_folders, 0)
115
 
                test_subfolder_fid = self.MAPIStore.mkdir(inbox_context_id, inbox_fid, "Test Folder", "This is a test folder", mapistore.FOLDER_GENERIC)
116
 
                self.assertNotEqual(test_subfolder_fid, 0)
117
 
                num_folders = self.MAPIStore.get_folder_count(inbox_context_id, inbox_fid)
118
 
                self.assertEqual(num_folders, 1)
119
 
                num_folders = self.MAPIStore.get_folder_count(inbox_context_id, test_subfolder_fid)
120
 
                self.assertEqual(num_folders, 0)
121
 
                num_messages = self.MAPIStore.get_message_count(inbox_context_id, inbox_fid)
122
 
                self.assertEqual(num_messages, 0)
123
 
                num_messages = self.MAPIStore.get_message_count(inbox_context_id, test_subfolder_fid)
124
 
                self.assertEqual(num_messages, 0)
125
 
                test_no_comment_folder_fid = self.MAPIStore.mkdir(inbox_context_id, inbox_fid, "Another Test Folder", None, mapistore.FOLDER_GENERIC)
126
 
                self.assertNotEqual(test_no_comment_folder_fid, 0)
127
 
                num_folders = self.MAPIStore.get_folder_count(inbox_context_id, inbox_fid)
128
 
                self.assertEqual(num_folders, 2)
129
 
                retval = self.MAPIStore.opendir(context_id = inbox_context_id, parent_fid = inbox_fid, fid = test_subfolder_fid)
130
 
                self.assertEqual(retval, 0)
131
 
                # TODO: add getprops support, and check return values.
132
 
                SPropValue = mapi.SPropValue()
133
 
                SPropValue.add(mapi.PidTagComment, "different comment")
134
 
                SPropValue.add(mapi.PidTagGeneration, "doesn't already exist")
135
 
                retval = self.MAPIStore.setprops(inbox_context_id, test_subfolder_fid, mapistore.MAPISTORE_FOLDER, SPropValue)
136
 
                self.assertEqual(retval, 0, self.MAPIStoreDB.errstr(retval))
137
 
                SPropValue = mapi.SPropValue()
138
 
                SPropValue.add(mapi.PidTagGeneration, "the first")
139
 
                retval = self.MAPIStore.setprops(inbox_context_id, inbox_fid, mapistore.MAPISTORE_FOLDER, SPropValue)
140
 
                self.assertEqual(retval, 0, self.MAPIStoreDB.errstr(retval))
141
 
                SPropValue = mapi.SPropValue()
142
 
                SPropValue.add(mapi.PidTagComment, "Inbox comment")
143
 
                SPropValue.add(mapi.PidTagGeneration, "the second")
144
 
                retval = self.MAPIStore.setprops(inbox_context_id, inbox_fid, mapistore.MAPISTORE_FOLDER, SPropValue)
145
 
                self.assertEqual(retval, 0, self.MAPIStoreDB.errstr(retval))
146
 
                retval = self.MAPIStore.closedir(inbox_context_id, test_subfolder_fid)
147
 
                self.assertEqual(retval, 0, self.MAPIStoreDB.errstr(retval))
148
 
                dbg_level = self.MAPIStore.debuglevel
149
 
                self.MAPIStore.debuglevel = dbg_level + 1
150
 
                self.assertEqual(dbg_level + 1, self.MAPIStore.debuglevel)
151
 
                self.MAPIStore.debuglevel = dbg_level
152
 
                self.assertEqual(dbg_level, self.MAPIStore.debuglevel)
153
 
                retval = self.MAPIStore.closedir(inbox_context_id, inbox_fid)
154
 
                self.assertEqual(retval, 0, self.MAPIStoreDB.errstr(retval))
155
 
                retval = self.MAPIStore.rmdir(inbox_context_id, inbox_fid, test_subfolder_fid, mapistore.DEL_FOLDERS)
156
 
                self.assertEqual(retval, 0, self.MAPIStoreDB.errstr(retval))
157
 
 
158
 
        def test_duplicate_folders(self):
159
 
                mapistore.set_mapping_path(os.path.join(self.working_directory, "mapistore"))
160
 
                self.MAPIStore = mapistore.mapistore()
161
 
                retval = self.MAPIStoreDB.new_mailbox(self.username, self.mailbox_root)
162
 
                self.assertEqual(retval, 0) # success
163
 
                (context_id, mailbox_fid) = self.MAPIStore.add_context(self.username, self.mailbox_root)
164
 
                self.assertNotEqual(context_id, 0)
165
 
                self.assertNotEqual(mailbox_fid, 0)
166
 
                for (parent, index) in folder_list:
167
 
                        retval = self.MAPIStore.root_mkdir(context_id=context_id, parent_index=parent, index=index, folder_name="")
168
 
                        self.assertEqual(retval, 0, mapistore.errstr(retval))
169
 
                inbox_uri = self.MAPIStore.get_mapistore_uri(mapistore.MDB_INBOX, self.username, "fsocpf://")
170
 
                retval = self.MAPIStore.set_mapistore_uri(context_id, mapistore.MDB_INBOX, inbox_uri)
171
 
                self.assertEqual(retval, 0)
172
 
                (inbox_context_id, inbox_fid) = self.MAPIStore.add_context(self.username, inbox_uri)
173
 
                self.assertNotEqual(inbox_context_id, 0)
174
 
                self.assertNotEqual(inbox_fid, 0)
175
 
                test_subfolder_fid = self.MAPIStore.mkdir(inbox_context_id, inbox_fid, "Test Folder", "This is a test folder", mapistore.FOLDER_GENERIC)
176
 
                self.assertNotEqual(test_subfolder_fid, 0)
177
 
                self.assertRaises(TypeError, self.MAPIStore.mkdir, inbox_context_id, inbox_fid, "Test Folder", None, mapistore.FOLDER_GENERIC)
178
 
                num_folders = self.MAPIStore.get_folder_count(inbox_context_id, inbox_fid)
179
 
                self.assertEqual(num_folders, 1)
180
 
 
181
 
        def test_folder_props(self):
182
 
                mapistore.set_mapping_path(os.path.join(self.working_directory, "mapistore"))
183
 
                self.MAPIStore = mapistore.mapistore()
184
 
                retval = self.MAPIStoreDB.new_mailbox(self.username, self.mailbox_root)
185
 
                self.assertEqual(retval, 0) # success
186
 
                (context_id, mailbox_fid) = self.MAPIStore.add_context(self.username, self.mailbox_root)
187
 
                self.assertNotEqual(context_id, 0)
188
 
                self.assertNotEqual(mailbox_fid, 0)
189
 
                self.MAPIStore.debuglevel = 9
190
 
                SPropValue = mapi.SPropValue()
191
 
                SPropValue.add(mapi.PidTagAttachMethod, 1)
192
 
                SPropValue.add(mapi.PidTagGender, 2)
193
 
                SPropValue.add(mapi.PidTagInstID, 0x12345678L)
194
 
                SPropValue.add(0x8F010005, 3.1415) # PT_DOUBLE
195
 
                SPropValue.add(mapi.PidTagProcessed, True)
196
 
                SPropValue.add(mapi.PidTagRecipientProposed, False)
197
 
                SPropValue.add(mapi.PidTagAddressBookHierarchicalRootDepartment, "Development")
198
 
                SPropValue.add(mapi.PidTagReplyRecipientNames, "Joe,Virginia")
199
 
                retval = self.MAPIStore.setprops(context_id, mailbox_fid, mapistore.MAPISTORE_FOLDER, SPropValue)
200
 
                self.assertEqual(retval, 0) # success
201
 
 
202
 
        def test_errstr(self):
203
 
                self.assertEqual(self.MAPIStoreDB.errstr(0), "Success")
204
 
                self.assertEqual(self.MAPIStoreDB.errstr(1), "Non-specific error")
205
 
                self.assertEqual(self.MAPIStoreDB.errstr(2), "No memory available")
206
 
                self.assertEqual(self.MAPIStoreDB.errstr(16), "Already exists")
207
 
 
208
 
        def tearDown(self):
209
 
                self.MAPIStoreDB.release()
210
 
                # shutil.rmtree(self.working_directory)
211
 
 
212
 
if __name__ == '__main__':
213
 
        unittest.main()