Switch to unified view

a/Allura/allura/tests/functional/test_admin.py b/Allura/allura/tests/functional/test_admin.py
...
...
233
        #r = self.app.get('/p/test/home/')
233
        #r = self.app.get('/p/test/home/')
234
        #assert 'aaa' not in r
234
        #assert 'aaa' not in r
235
235
236
    def test_project_delete_undelete(self):
236
    def test_project_delete_undelete(self):
237
        # create a subproject
237
        # create a subproject
238
        with audits('create subproject sub1'):
238
        with audits('create subproject sub-del-undel'):
239
            self.app.post('/admin/update_mounts', params={
239
            self.app.post('/admin/update_mounts', params={
240
                    'new.install':'install',
240
                    'new.install':'install',
241
                    'new.ep_name':'',
241
                    'new.ep_name':'',
242
                    'new.ordinal':'1',
242
                    'new.ordinal':'1',
243
                    'new.mount_point':'sub1',
243
                    'new.mount_point':'sub-del-undel',
244
                    'new.mount_label':'sub1'})
244
                    'new.mount_label':'sub-del-undel'})
245
        r = self.app.get('/p/test/admin/overview')
245
        r = self.app.get('/p/test/admin/overview')
246
        assert 'This project has been deleted and is not visible to non-admin users' not in r
246
        assert 'This project has been deleted and is not visible to non-admin users' not in r
247
        assert r.html.find('input',{'name':'removal','value':''}).has_key('checked')
247
        assert r.html.find('input',{'name':'removal','value':''}).has_key('checked')
248
        assert not r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked')
248
        assert not r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked')
249
        with audits('delete project'):
249
        with audits('delete project'):
...
...
256
        r = self.app.get('/p/test/admin/overview')
256
        r = self.app.get('/p/test/admin/overview')
257
        assert 'This project has been deleted and is not visible to non-admin users' in r
257
        assert 'This project has been deleted and is not visible to non-admin users' in r
258
        assert not r.html.find('input',{'name':'removal','value':''}).has_key('checked')
258
        assert not r.html.find('input',{'name':'removal','value':''}).has_key('checked')
259
        assert r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked')
259
        assert r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked')
260
        # make sure subprojects get deleted too
260
        # make sure subprojects get deleted too
261
        r = self.app.get('/p/test/sub1/admin/overview')
261
        r = self.app.get('/p/test/sub-del-undel/admin/overview')
262
        assert 'This project has been deleted and is not visible to non-admin users' in r
262
        assert 'This project has been deleted and is not visible to non-admin users' in r
263
        with audits('undelete project'):
263
        with audits('undelete project'):
264
            self.app.post('/admin/update', params=dict(
264
            self.app.post('/admin/update', params=dict(
265
                    name='Test Project',
265
                    name='Test Project',
266
                    shortname='test',
266
                    shortname='test',
...
...
277
        from allura.ext.admin.admin_main import config
277
        from allura.ext.admin.admin_main import config
278
        old_allow_project_delete = config.get('allow_project_delete', ())
278
        old_allow_project_delete = config.get('allow_project_delete', ())
279
        config['allow_project_delete'] = False
279
        config['allow_project_delete'] = False
280
        try:
280
        try:
281
            # create a subproject
281
            # create a subproject
282
            with audits('create subproject sub1'):
282
            with audits('create subproject sub-no-del'):
283
                self.app.post('/admin/update_mounts', params={
283
                self.app.post('/admin/update_mounts', params={
284
                        'new.install':'install',
284
                        'new.install':'install',
285
                        'new.ep_name':'',
285
                        'new.ep_name':'',
286
                        'new.ordinal':'1',
286
                        'new.ordinal':'1',
287
                        'new.mount_point':'sub1',
287
                        'new.mount_point':'sub-no-del',
288
                        'new.mount_label':'sub1'})
288
                        'new.mount_label':'sub-no-del'})
289
            # root project doesn't have delete option
289
            # root project doesn't have delete option
290
            r = self.app.get('/p/test/admin/overview')
290
            r = self.app.get('/p/test/admin/overview')
291
            assert not r.html.find('input',{'name':'removal','value':'deleted'})
291
            assert not r.html.find('input',{'name':'removal','value':'deleted'})
292
            # subprojects can still be deleted
292
            # subprojects can still be deleted
293
            r = self.app.get('/p/test/sub1/admin/overview')
293
            r = self.app.get('/p/test/sub-no-del/admin/overview')
294
            assert r.html.find('input',{'name':'removal','value':'deleted'})
294
            assert r.html.find('input',{'name':'removal','value':'deleted'})
295
            # attempt to delete root project won't do anything
295
            # attempt to delete root project won't do anything
296
            self.app.post('/admin/update', params=dict(
296
            self.app.post('/admin/update', params=dict(
297
                    name='Test Project',
297
                    name='Test Project',
298
                    shortname='test',
298
                    shortname='test',
...
...
303
            assert 'This project has been deleted and is not visible to non-admin users' not in r
303
            assert 'This project has been deleted and is not visible to non-admin users' not in r
304
            # make sure subproject delete works
304
            # make sure subproject delete works
305
            with audits(
305
            with audits(
306
                'change project removal status to deleted',
306
                'change project removal status to deleted',
307
                'delete project'):
307
                'delete project'):
308
                self.app.post('/p/test/sub1/admin/update', params=dict(
308
                self.app.post('/p/test/sub-no-del/admin/update', params=dict(
309
                        name='sub1',
309
                        name='sub1',
310
                        shortname='sub1',
310
                        shortname='sub1',
311
                        removal='deleted',
311
                        removal='deleted',
312
                        short_description='A Test Project',
312
                        short_description='A Test Project',
313
                        delete='on'))
313
                        delete='on'))
314
            r = self.app.get('/p/test/sub1/admin/overview')
314
            r = self.app.get('/p/test/sub-no-del/admin/overview')
315
            assert 'This project has been deleted and is not visible to non-admin users' in r
315
            assert 'This project has been deleted and is not visible to non-admin users' in r
316
            assert r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked')
316
            assert r.html.find('input',{'name':'removal','value':'deleted'}).has_key('checked')
317
        finally:
317
        finally:
318
            if old_allow_project_delete == ():
318
            if old_allow_project_delete == ():
319
                del config['allow_project_delete']
319
                del config['allow_project_delete']