lars
3252f23c04
small layout improvements added german translations for data and disks plugins remove leading empty lines in html output to fix tidy warnings
149 lines
5.2 KiB
Python
149 lines
5.2 KiB
Python
#
|
|
# Copyright 2006 sense.lab e.V.
|
|
#
|
|
# This file is part of the CryptoBox.
|
|
#
|
|
# The CryptoBox 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 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# The CryptoBox 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 the CryptoBox; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
|
|
__revision__ = "$Id"
|
|
|
|
import cryptobox.web.testclass
|
|
|
|
class unittests(cryptobox.web.testclass.WebInterfaceTestClass):
|
|
|
|
def test_read_form(self):
|
|
"""Check if the 'volume_rename' plugin works.
|
|
"""
|
|
url = self.url + "volume_rename?weblang=en&device=%2Fdev%2F" + self.device
|
|
self.register_auth(url)
|
|
self.cmd.go(url)
|
|
self.cmd.find('Change the name of this volume')
|
|
|
|
|
|
def test_rename(self):
|
|
"""Try to rename the volume.
|
|
"""
|
|
save_name = self.__get_name()
|
|
## rename if the name is already "foo"
|
|
if save_name == "foo":
|
|
self.__set_name("bar")
|
|
## set 'foo'
|
|
self.__set_name("foo")
|
|
self.cmd.find('The name of this volume was changed successfully.')
|
|
self.assertEquals("foo", self.__get_name())
|
|
## set 'bar'
|
|
self.__set_name("bar")
|
|
self.cmd.find('The name of this volume was changed successfully.')
|
|
self.assertEquals("bar", self.__get_name())
|
|
## set the same name twice to catch all lines of code
|
|
self.__set_name("bar")
|
|
self.cmd.notfind('The name of this volume was changed successfully.')
|
|
self.assertEquals("bar", self.__get_name())
|
|
self.__set_name(save_name)
|
|
self.assertEquals(save_name, self.__get_name())
|
|
|
|
|
|
def test_invalid_names(self):
|
|
"""Setting of invalid names should fail.
|
|
"""
|
|
save_name = self.__get_name()
|
|
## we want to avoid, that if the previous name is (by accident) 'foo'
|
|
## then the later search for "changed successfully" would fail
|
|
if save_name == "foo":
|
|
self.__set_name("bar")
|
|
self.__set_name("foo")
|
|
self.cmd.find('The name of this volume was changed successfully.')
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name("foo:")
|
|
self.cmd.find("Changing of volume's name failed")
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name("foo/")
|
|
self.cmd.find("Changing of volume's name failed")
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name("foo/")
|
|
self.cmd.find("Changing of volume's name failed")
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name("foo*")
|
|
self.cmd.find("Changing of volume's name failed")
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name("foo(")
|
|
self.cmd.find("Changing of volume's name failed")
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name("")
|
|
self.cmd.notfind("Changing of volume's name failed")
|
|
self.assertEquals("foo", self.__get_name())
|
|
self.__set_name(save_name)
|
|
self.assertEquals(save_name, self.__get_name())
|
|
|
|
|
|
def test_rename_while_open(self):
|
|
"""Try to change the name of the volume while it is open.
|
|
"""
|
|
save_name = self.__get_name()
|
|
## first set the name to 'bar'
|
|
self.__set_name("bar")
|
|
mount_url = self.url + "volume_mount?weblang=en&device=%2Fdev%2F" + self.device
|
|
self.register_auth(mount_url)
|
|
name_url = self.url + "volume_rename?weblang=en&device=%2Fdev%2F" + self.device
|
|
self.register_auth(name_url)
|
|
self.cmd.go(mount_url + "&action=mount_plain")
|
|
self.cmd.find('Volume opened')
|
|
## we have to do it manually, as there is no form when it is open
|
|
self.cmd.go(name_url + "&store=1&vol_name=foo")
|
|
self.cmd.find('You may not rename a volume while it is open.')
|
|
self.assertEquals("bar", self.__get_name())
|
|
self.cmd.go(mount_url + "&action=umount")
|
|
self.__set_name(save_name)
|
|
self.assertEquals(save_name, self.__get_name())
|
|
|
|
|
|
def test_name_in_use(self):
|
|
"""Try to set a name that is already in use.
|
|
"""
|
|
used_name = [ e.get_name() for e in self.cbox.get_container_list()
|
|
if e.get_device() != "/dev/%s" % self.device ]
|
|
if not used_name:
|
|
self.fail("could not find another device for this test")
|
|
old_name = self.__get_name()
|
|
self.assertNotEquals(old_name, used_name[0])
|
|
self.__set_name(used_name[0])
|
|
self.cmd.find('The new name is already in use by another volume.')
|
|
self.assertEquals(old_name, self.__get_name())
|
|
|
|
|
|
def __set_name(self, name):
|
|
"""Set the name of a volume.
|
|
"""
|
|
name = name.replace(" ", "%20")
|
|
url = self.url + "volume_rename?weblang=en&device=%2Fdev%2F" + self.device
|
|
self.register_auth(url)
|
|
# the following should work, but twill seems to have problems to recognize
|
|
# the form - fix this later
|
|
#self.cmd.go(url)
|
|
#self.cmd.formvalue("set_name", "vol_name", name)
|
|
#self.cmd.submit()
|
|
self.cmd.go(url + "&vol_name=%s&store=1" % name)
|
|
|
|
|
|
def __get_name(self):
|
|
"""Retrieve the current name of the volume.
|
|
"""
|
|
url = self.url + "volume_rename?weblang=en&device=%2Fdev%2F" + self.device
|
|
self.register_auth(url)
|
|
self.cmd.go(url)
|
|
self.cmd.find("Data.Status.Plugins.volume_rename=(.*)$", "m")
|
|
return self.locals["__match__"]
|
|
|