Update ooo320-m1
[ooovba.git] / testautomation / extensions / required / includes / e_update.inc
blob9ea62ff2ad21ff582a1df3945a98fde39bc920d9
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 '* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 '* 
5 '* Copyright 2008 by Sun Microsystems, Inc.
6 '*
7 '* OpenOffice.org - a multi-platform office productivity suite
8 '*
9 '* $RCSfile: e_update.inc,v $
11 '* $Revision: 1.1.2.3 $
13 '* last change: $Author: jsk $ $Date: 2008/10/08 09:05:51 $
15 '* This file is part of OpenOffice.org.
17 '* OpenOffice.org is free software: you can redistribute it and/or modify
18 '* it under the terms of the GNU Lesser General Public License version 3
19 '* only, as published by the Free Software Foundation.
21 '* OpenOffice.org is distributed in the hope that it will be useful,
22 '* but WITHOUT ANY WARRANTY; without even the implied warranty of
23 '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 '* GNU Lesser General Public License version 3 for more details
25 '* (a copy is included in the LICENSE file that accompanied this code).
27 '* You should have received a copy of the GNU Lesser General Public License
28 '* version 3 along with OpenOffice.org.  If not, see
29 '* <http://www.openoffice.org/license.html>
30 '* for a copy of the LGPLv3 License.
32 '/******************************************************************************
34 '*  owner : joerg.skottke@sun.com
36 '*  short description : Extension Update Test
38 '\******************************************************************************
40 testcase tExtensionManagerResources()
42     ' Test is based on issue #i86913 and the common rules for update tests (QA)
43     
44     ' We need to know if the user may change extension parameters. This is the case
45     ' when a) the user is root/Administrator or b) the office was installed
46     ' for the current user only
47     
48     dim bUserIsAdmin as boolean  : bUserIsAdmin = hCheckForAdministratorPermissions()
49     dim iBreakCounter as integer : iBreakCounter = 0
50     dim iFilterItems as integer 
51     
52     const MAX_ITERATIONS = 50
53     const FILTER_ITEMS = 9    ' This is the number of filters/extension types we know
55     printlog( "Ressource test for the Extension Manager UI" )
56     ToolsPackageManager
57     
58     kontext "PackageManager"
59     if ( PackageManager.exists( 1 ) ) then
60     
61         ' OOo comes with a few preinstalled, shared - extensions. We need at least one.
62         ' This test is bound to fail if we have a user-installed extension at the
63         ' first position of the Extension Manager UI list. There is no way we can 
64         ' check that for now. However, this is hardly ever the case.
65     
66         if ( BrowsePackages.getItemCount() = 0 ) then
67             warnlog( "This test requires at least one extension to be installed." )
68             printlog( "Some of the controls are not available or disabled." )
69             goto endsub
70         endif
71     
72         call dialogtest( PackageManager )
74         kontext "PackgeManager"
75         printlog( "Add..." )                
76         Add.click()
78         kontext "OeffnenDlg"
79         if ( OeffnenDlg.exists( 1 ) ) then
80             iFilterItems = DateiTyp.getItemCount
81             if ( iFilterItems <> FILTER_ITEMS ) then
82                 warnlog( "The file type filter list is incorrect" )
83                 printlog( "Expected: " & FILTER_ITEMS )
84                 printlog( "Found...: " & iFilterItems )
85             else
86                 printlog( "The number of filters in Add Extensions Dialog is ok" )
87             endif
88             Oeffnendlg.cancel()
89         else
90             warnlog( "File Open dialog did not open" )
91         endif
92                 
93         kontext "PackageManager"
94         printlog( "Check for updates..." )
95         updates.click()
96         
97         kontext "ExtensionUpdate"
98         if ( ExtensionUpdate.exists( 2 ) ) then
99             call dialogtest( ExtensionUpdate )
100             ExtensionUpdate.cancel()
101             ExtensionUpdate.notExists( 3 )
102         else
103             warnlog( "Extenson Update dialog did not open" )      
104         endif
105         
106         kontext "PackageManager"
107         printlog( "Controls belonging to extensions" )
108         
109         BrowsePackages.select( 1 )
110         printlog( "Extension name.......: " & BrowsePackages.getItemText( 1 , 1 ) )
111         printlog( "Extension version....: " & BrowsePackages.getItemText( 1 , 2 ) )
112         printlog( "Extension description: " & BrowsePackages.getItemText( 1 , 3 ) )
113         
114         if ( options.exists() ) then
115             if ( options.isEnabled() ) then
116                 printlog( "Extension has options" )
117                 options.click()
118                 
119                 kontext "OptionenDlg"
120                 OptionenDLg.close()
121                 WaitSlot()
122             else
123                 warnlog( "Extension Options button visible but disabled" )
124             endif
125         else
126             printlog( "Extension Options button does not exist, no options available" )
127         endif
128         
129         if ( bUserIsAdmin ) then
130         
131             ' If the user is Admin or the office was installed in the users
132             ' home directory we have access to the extensions that reside in 
133             ' the shared layer. This means that the user can remove and disable
134             ' these extensions.
135         
136             kontext "PackageManager"
137             BrowsePackages.select( 1 )
138             if ( disable.exists() ) then
139                 if ( disable.isEnabled() ) then
140                 
141                     disable.click()
143                     kontext "Active"
144                     if ( Active.exists( 1 ) ) then
145                         printlog( "Disable extension: Warning for other office instance. Good." )
146                         active.ok()
147                     else
148                         warnlog( "No warning for other office instances running" )
149                     endif
150                     
151                     ' We now re-enable the extensions. Depending on the "size"
152                     ' of the extension it might take the Extension Manager UI
153                     ' a few seconds to complete the "disable" action. We need to
154                     ' wait for that.
155                     kontext "PackageManager"
156                     BrowsePackages.select( 1 )
157                     iBreakCounter = 0
158                     do while( not enable.exists() ) 
159                         iBreakCounter = iBreakCounter + 1
160                         wait( 100 )
161                         if ( iBreakCounter = MAX_ITERATIONS ) then
162                             warnlog( "Extension not ready within timeframe. Aborting" )
163                             goto endsub
164                         endif
165                     loop
166                     enable.click()
167                     
168                     kontext "Active"
169                     if ( Active.exists( 1 ) ) then
170                         printlog( "Enable extension: Warning for other office instance. Good." )
171                         active.ok()
172                     else
173                         warnlog( "No warning for other office instances running" )
174                     endif
176                     ' The Extension Manager UI remembers when it has warned about 
177                     ' other running instances of the office, so the next time we try
178                     ' to disable/enable the extension there should be no warning.
179                     
180                     kontext "PackageManager"
181                     iBreakCounter = 0
182                     do while( not disable.exists() ) 
183                         iBreakCounter = iBreakCounter + 1
184                         wait( 100 )
185                         if ( iBreakCounter = MAX_ITERATIONS ) then
186                             warnlog( "Extension not ready within timeframe. Aborting" )
187                             goto endsub
188                         endif
189                     loop
190                     disable.click()
192                     kontext "Active"
193                     if ( Active.exists( 1 ) ) then
194                         warnlog( "There should be no warning when disabling the extension a second time" )
195                         active.ok()
196                     else
197                         printlog( "Disable extension: No warning for other office instances. Good." )
198                     endif
199                     
200                     kontext "PackageManager"
201                     iBreakCounter = 0
202                     do while( not enable.exists() ) 
203                         iBreakCounter = iBreakCounter + 1
204                         wait( 100 )
205                         if ( iBreakCounter = MAX_ITERATIONS ) then
206                             warnlog( "Extension not ready within timeframe. Aborting" )
207                             goto endsub
208                         endif
209                     loop
210                     enable.click()
211                     
212                     kontext "Active"
213                     if ( Active.exists( 1 ) ) then
214                         warnlog( "There should be no warning when enabling the extension a second time" )
215                         active.ok()
216                     else
217                         printlog( "Enable extension: No warning for other office instances. Good." )
218                     endif
219                     WaitSlot()
220                     
221                 else
222                     warnlog( "User should be able to disable shared extension" )
223                 endif
224             else
225                 warnlog( "Cannot disable extension. It might be disabled already or defunct" )
226             endif
227             
228             kontext "PackageManager"
229             iBreakCounter = 0
230             do while( not remove.isEnabled() ) 
231                 iBreakCounter = iBreakCounter + 1
232                 wait( 100 )
233                 if ( iBreakCounter = MAX_ITERATIONS ) then
234                     warnlog( "Extension not ready within timeframe. Aborting" )
235                     goto endsub
236                 endif
237             loop
238     
239             kontext "PackageManager"
240             if ( remove.isEnabled() ) then
241             
242                 remove.click()
243                 
244                 ' Note: First time we try to remove an extension we should get a 
245                 ' warning that we must make sure that no other office instances 
246                 ' are running. If this warning is missing we actually remove the 
247                 ' extension which leaves the installation in an inconsistent
248                 ' state. In a "real life" installation this would not work, in a
249                 ' "user space" installation we have to reinstall. Bad that is.
250                 
251                 kontext "Active"
252                 if ( Active.exists( 1 ) ) then
253                     printlog( "Remove extension: Warning for other office instances. Good." )
254                     active.cancel()
255                 else
256                     warnlog( "No warning for other office instances running" )
257                     warnlog( "Installation inconsistency: Extension was removed!" )
258                 endif
259                 WaitSlot()
260                 
261                 ' Note: Like for the disable/enable buttons we should not get 
262                 ' a warning for another running office instance when removing
263                 ' an extension for the second time. 
264             
265             else
266                 warnlog( "User should be able to remove extension" )
267             endif
268         else
269        
270             ' if the user does not have Administrator rights he may neither 
271             ' he may neither disable or remove extensions.
272              
273             kontext "PackageManager"
274             if ( disable.isEnabled() ) then
275                 warnlog( "Disable-button enabled for shared extension" )
276             endif
277             
278             kontext "PackageManager"
279             if ( remove.isEnabled() ) then
280                 warnlog( "Remove-button enabled for shared extension" )
281             endif
282         endif
283         
284         kontext "PackageManager"
285         PackageManager.close()
286         
287     else
288         warnlog( "Extension Manager UI did not open" )
289     endif 
290         
291 endcase