Ejemplo n.º 1
0
    def test_edit_boot_partition(self):
        form_data = {
            'size': "256M",
        }
        model, disk = make_model_and_disk()
        partition = model.add_partition(disk, 512 * (2**20), "boot")
        fs = model.add_filesystem(partition, "fat32")
        model.add_mount(fs, '/boot/efi')
        view, stretchy = make_partition_view(model, disk, partition)

        self.assertFalse(stretchy.form.fstype.enabled)
        self.assertEqual(stretchy.form.fstype.value, "fat32")
        self.assertFalse(stretchy.form.mount.enabled)
        self.assertEqual(stretchy.form.mount.value, "/boot/efi")

        view_helpers.enter_data(stretchy.form, form_data)
        view_helpers.click(stretchy.form.done_btn.base_widget)
        expected_data = {
            'size': dehumanize_size(form_data['size']),
            'fstype': "fat32",
            'mount': '/boot/efi',
            'use_swap': False,
        }
        view.controller.partition_disk_handler.assert_called_once_with(
            stretchy.disk, stretchy.partition, expected_data)
Ejemplo n.º 2
0
 def test_create_vg_encrypted(self):
     model, disk = make_model_and_disk()
     part1 = model.add_partition(disk, 10 * (2**30))
     part2 = model.add_partition(disk, 10 * (2**30))
     view, stretchy = make_view(model)
     form_data = {
         'name': 'vg1',
         'devices': {
             part1: 'active',
             part2: 'active'
         },
         'encrypt': True,
         'password': '******',
         'confirm_password': '******',
     }
     expected_data = {
         'name': 'vg1',
         'devices': {part1, part2},
         'encrypt': True,
         'password': '******',
     }
     view_helpers.enter_data(stretchy.form, form_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     view.controller.volgroup_handler.assert_called_once_with(
         None, expected_data)
Ejemplo n.º 3
0
 def test_create_raid(self):
     model, disk = make_model_and_disk()
     part1 = model.add_partition(disk, 10 * (2**30))
     part2 = model.add_partition(disk, 10 * (2**30))
     part3 = model.add_partition(disk, 10 * (2**30))
     view, stretchy = make_view(model)
     form_data = {
         'name': 'md0',
         'devices': {
             part1: 'active',
             part2: 'active',
             part3: 'spare'
         },
         'level': raidlevels_by_value[1],
     }
     expected_data = {
         'name': 'md0',
         'devices': {part1, part2},
         'spare_devices': {part3},
         'level': raidlevels_by_value[1],
     }
     view_helpers.enter_data(stretchy.form, form_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     view.controller.raid_handler.assert_called_once_with(
         None, expected_data)
Ejemplo n.º 4
0
    def test_click_done(self):
        # The ugliness of this test is probably an indication that the
        # view is doing too much...
        dev_info = create_test_instance(NetDevInfo,
                                        overrides={'static4.addresses': []})
        view, stretchy = self.make_view(dev_info)
        valid_data = {
            'subnet': '10.0.2.0/24',
            'address': '10.0.2.15',
            'gateway': '10.0.2.2',
            'nameservers': '8.8.8.8, 1.1.1.1',
            'searchdomains': '.custom, .zzz',
        }
        view_helpers.enter_data(stretchy.manual_form, valid_data)

        expected = StaticConfig(addresses=['10.0.2.15/24'],
                                gateway='10.0.2.2',
                                nameservers=['8.8.8.8', '1.1.1.1'],
                                searchdomains=['.custom', '.zzz'])

        but = view_helpers.find_button_matching(view, "^Save$")
        view_helpers.click(but)

        view.controller.set_static_config.assert_called_once_with(
            stretchy.dev_info.name, 4, expected)
Ejemplo n.º 5
0
 def test_done_enabled_for_valid_data(self):
     valid_data = {
         'subnet': '10.0.2.0/24',
         'address': '10.0.2.15',
     }
     _, stretchy = self.make_view()
     view_helpers.enter_data(stretchy.manual_form, valid_data)
     self.assertTrue(stretchy.manual_form.done_btn.enabled)
Ejemplo n.º 6
0
    def test_click_done(self):
        view = self.make_view()
        view_helpers.enter_data(view.form, valid_data)
        CRYPTED = '<crypted>'
        view.model.encrypt_password.side_effect = lambda p: CRYPTED
        expected = valid_data.copy()
        expected['password'] = expected['confirm_password'] = CRYPTED

        done_btn = view_helpers.find_button_matching(view, "^Done$")
        view_helpers.click(done_btn)

        view.controller.create_user.assert_called_once_with(expected)
Ejemplo n.º 7
0
 def test_create_partition(self):
     valid_data = {
         'size': "1M",
         'fstype': FilesystemModel.fs_by_name["ext4"],
     }
     view, stretchy = self.make_view()
     view_helpers.enter_data(stretchy.form, valid_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     valid_data['mount'] = '/'
     valid_data['size'] = dehumanize_size(valid_data['size'])
     view.controller.partition_disk_handler.assert_called_once_with(
         stretchy.disk, None, valid_data)
Ejemplo n.º 8
0
 def test_create_partition(self):
     valid_data = {
         'size': "1M",
         'fstype': "ext4",
     }
     model, disk = make_model_and_disk()
     view, stretchy = make_view(model, disk)
     view_helpers.enter_data(stretchy.form, valid_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     valid_data['mount'] = '/'
     valid_data['size'] = dehumanize_size(valid_data['size'])
     view.controller.partition_disk_handler.assert_called_once_with(
         stretchy.disk, None, valid_data)
Ejemplo n.º 9
0
 def test_click_done(self):
     view = self.make_view()
     CRYPTED = '<crypted>'
     with mock.patch('subiquity.ui.views.identity.crypt_password') as cp:
         cp.side_effect = lambda p: CRYPTED
         view_helpers.enter_data(view.form, valid_data)
         done_btn = view_helpers.find_button_matching(view, "^Done$")
         view_helpers.click(done_btn)
     expected = IdentityData(realname=valid_data['realname'],
                             username=valid_data['username'],
                             hostname=valid_data['hostname'],
                             crypted_password=CRYPTED)
     view.controller.done.assert_called_once_with(expected)
    def test_click_done(self):
        # The ugliness of this test is probably an indication that the
        # view is doing too much...
        view = self.make_view()
        view_helpers.enter_data(view.form, valid_data)

        expected = valid_data.copy()
        expected['nameservers'] = [expected['nameservers']]
        expected['searchdomains'] = [expected['searchdomains']]
        expected['network'] = expected.pop('subnet')

        but = view_helpers.find_button_matching(view, "^Save$")
        view_helpers.click(but)

        view.dev.remove_ip_networks_for_version.assert_called_once_with(4)
        view.dev.remove_nameservers.assert_called_once_with()
        view.dev.add_network.assert_called_once_with(4, expected)
Ejemplo n.º 11
0
    def test_can_tab_to_done_when_valid(self):
        # Urwid doesn't distinguish very well between widgets that are
        # not currently selectable and widgets that can never be
        # selectable. The "button pile" of the identity view is
        # initially not selectable but becomes selectable when valid
        # data is entered. This test checks that urwid notices this :)
        # by simulating lots of presses of the tab key and checking if
        # the done button has been focused.
        view = self.make_view()
        view_helpers.enter_data(view.form, valid_data)

        for i in range(100):
            view_helpers.keypress(view, 'tab', size=(80, 24))
            focus_path = view_helpers.get_focus_path(view)
            for w in reversed(focus_path):
                if w is view.form.done_btn:
                    return
        self.fail("could not tab to done button")
Ejemplo n.º 12
0
 def test_edit_boot_partition(self):
     form_data = {
         'size': "256M",
     }
     model, disk = make_model_and_disk()
     partition = model.add_partition(disk, 512 * (2**20), "boot")
     fs = model.add_filesystem(partition, "fat32")
     model.add_mount(fs, '/boot/efi')
     view, stretchy = make_view(model, disk, partition)
     view_helpers.enter_data(stretchy.form, form_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     expected_data = {
         'size': dehumanize_size(form_data['size']),
         'fstype': FilesystemModel.fs_by_name["fat32"],
         'mount': '/boot/efi',
     }
     view.controller.partition_disk_handler.assert_called_once_with(
         stretchy.disk, stretchy.partition, expected_data)
Ejemplo n.º 13
0
 def test_edit_partition(self):
     form_data = {
         'size': "256M",
         'fstype': FilesystemModel.fs_by_name['xfs'],
     }
     model, disk = make_model_and_disk()
     partition = model.add_partition(disk, 512 * (2**20))
     model.add_filesystem(partition, "ext4")
     view, stretchy = make_view(model, disk, partition)
     self.assertTrue(stretchy.form.done_btn.enabled)
     view_helpers.enter_data(stretchy.form, form_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     expected_data = {
         'size': dehumanize_size(form_data['size']),
         'fstype': FilesystemModel.fs_by_name['xfs'],
         'mount': None,
     }
     view.controller.partition_disk_handler.assert_called_once_with(
         stretchy.disk, stretchy.partition, expected_data)
Ejemplo n.º 14
0
 def test_edit_existing_partition(self):
     form_data = {
         'fstype': "xfs",
     }
     model, disk = make_model_and_disk()
     partition = model.add_partition(disk, 512 * (2**20))
     partition.preserve = True
     model.add_filesystem(partition, "ext4")
     view, stretchy = make_partition_view(model, disk, partition)
     self.assertFalse(stretchy.form.size.enabled)
     self.assertTrue(stretchy.form.done_btn.enabled)
     view_helpers.enter_data(stretchy.form, form_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     expected_data = {
         'fstype': 'xfs',
         'mount': None,
         'use_swap': False,
     }
     view.controller.partition_disk_handler.assert_called_once_with(
         stretchy.disk, stretchy.partition, expected_data)
Ejemplo n.º 15
0
 def test_edit_raid(self):
     model, disk = make_model_and_disk()
     part1 = model.add_partition(disk, 10*(2**30))
     part2 = model.add_partition(disk, 10*(2**30))
     raid = model.add_raid("md0", "raid1", {part1, part2}, set())
     view, stretchy = make_view(model, raid)
     form_data = {
         'name': 'md1',
         'level': raidlevels_by_value["raid0"],
         }
     expected_data = {
         'name': 'md1',
         'devices': {part1, part2},
         'spare_devices': set(),
         'level': raidlevels_by_value["raid0"],
         }
     view_helpers.enter_data(stretchy.form, form_data)
     view_helpers.click(stretchy.form.done_btn.base_widget)
     view.controller.raid_handler.assert_called_once_with(
         raid, expected_data)
Ejemplo n.º 16
0
 def test_done_enabled_when_valid(self):
     view = self.make_view()
     view_helpers.enter_data(view.form, valid_data)
     self.assertTrue(view.form.done_btn.enabled)
Ejemplo n.º 17
0
 def test_done_enabled_for_valid_data(self):
     _, stretchy = self.make_view()
     view_helpers.enter_data(stretchy.manual_form, valid_data)
     self.assertTrue(stretchy.manual_form.done_btn.enabled)