def test_local_datasource_uses_ephemeral_dhcp(self, _m_fallback, m_dhcp): _set_mock_metadata() ds = DataSourceGCE.DataSourceGCELocal(sys_cfg={}, distro=None, paths=None) ds._get_data() assert m_dhcp.call_count == 1
def test_has_expired(self): def _get_timestamp(days): format_str = '%Y-%m-%dT%H:%M:%S+0000' today = datetime.datetime.now() timestamp = today + datetime.timedelta(days=days) return timestamp.strftime(format_str) past = _get_timestamp(-1) future = _get_timestamp(1) ssh_keys = { None: False, '': False, 'Invalid': False, 'user:ssh-rsa key [email protected]': False, 'user:ssh-rsa key google {"expireOn":"%s"}' % past: False, 'user:ssh-rsa key google-ssh': False, 'user:ssh-rsa key google-ssh {invalid:json}': False, 'user:ssh-rsa key google-ssh {"userName":"******"}': False, 'user:ssh-rsa key google-ssh {"expireOn":"invalid"}': False, 'user:xyz key google-ssh {"expireOn":"%s"}' % future: False, 'user:xyz key google-ssh {"expireOn":"%s"}' % past: True, } for key, expired in ssh_keys.items(): self.assertEqual(DataSourceGCE._has_expired(key), expired)
def setUp(self): self.ds = DataSourceGCE.DataSourceGCE(settings.CFG_BUILTIN, None, helpers.Paths({})) ppatch = self.m_platform_reports_gce = mock.patch( 'cloudinit.sources.DataSourceGCE.platform_reports_gce') self.m_platform_reports_gce = ppatch.start() self.m_platform_reports_gce.return_value = True self.addCleanup(ppatch.stop) super(TestDataSourceGCE, self).setUp()
def setUp(self): tmp = self.tmp_dir() self.ds = DataSourceGCE.DataSourceGCE(settings.CFG_BUILTIN, None, helpers.Paths({"run_dir": tmp})) ppatch = self.m_platform_reports_gce = mock.patch( "cloudinit.sources.DataSourceGCE.platform_reports_gce") self.m_platform_reports_gce = ppatch.start() self.m_platform_reports_gce.return_value = True self.addCleanup(ppatch.stop) self.add_patch("time.sleep", "m_sleep") # just to speed up tests super(TestDataSourceGCE, self).setUp()
def test_parse_public_keys_non_ascii(self): public_key_data = [ 'cloudinit:rsa ssh-ke%s invalid' % chr(165), 'use%sname:rsa ssh-key' % chr(174), 'cloudinit:test 1', 'default:test 2', 'user:test 3', ] expected = ['test 1', 'test 2'] found = DataSourceGCE._parse_public_keys( public_key_data, default_user='******') self.assertEqual(sorted(found), sorted(expected))
def test_parse_public_keys_non_ascii(self): public_key_data = [ "cloudinit:rsa ssh-ke%s invalid" % chr(165), "use%sname:rsa ssh-key" % chr(174), "cloudinit:test 1", "default:test 2", "user:test 3", ] expected = ["test 1", "test 2"] found = DataSourceGCE._parse_public_keys(public_key_data, default_user="******") self.assertEqual(sorted(found), sorted(expected))
def test_default_user_ssh_keys(self, mock_ug_util): mock_ug_util.normalize_users_groups.return_value = None, None mock_ug_util.extract_default.return_value = "ubuntu", None ubuntu_ds = DataSourceGCE.DataSourceGCE( settings.CFG_BUILTIN, self._make_distro("ubuntu"), helpers.Paths({"run_dir": self.tmp_dir()}), ) valid_key = "ssh-rsa VALID {0}" invalid_key = "ssh-rsa INVALID {0}" project_attributes = { "sshKeys": "\n".join([ "ubuntu:{0}".format(valid_key.format(0)), "user:{0}".format(invalid_key.format(0)), ]), "ssh-keys": "\n".join([ "ubuntu:{0}".format(valid_key.format(1)), "user:{0}".format(invalid_key.format(1)), ]), } instance_attributes = { "ssh-keys": "\n".join([ "ubuntu:{0}".format(valid_key.format(2)), "user:{0}".format(invalid_key.format(2)), ]), "block-project-ssh-keys": "False", } meta = GCE_META.copy() meta["project/attributes"] = project_attributes meta["instance/attributes"] = instance_attributes _set_mock_metadata(meta) ubuntu_ds.get_data() expected = [valid_key.format(key) for key in range(3)] self.assertEqual(set(expected), set(ubuntu_ds.get_public_ssh_keys()))
def test_default_user_ssh_keys(self, mock_ug_util): mock_ug_util.normalize_users_groups.return_value = None, None mock_ug_util.extract_default.return_value = 'ubuntu', None ubuntu_ds = DataSourceGCE.DataSourceGCE( settings.CFG_BUILTIN, self._make_distro('ubuntu'), helpers.Paths({'run_dir': self.tmp_dir()})) valid_key = 'ssh-rsa VALID {0}' invalid_key = 'ssh-rsa INVALID {0}' project_attributes = { 'sshKeys': '\n'.join([ 'ubuntu:{0}'.format(valid_key.format(0)), 'user:{0}'.format(invalid_key.format(0)), ]), 'ssh-keys': '\n'.join([ 'ubuntu:{0}'.format(valid_key.format(1)), 'user:{0}'.format(invalid_key.format(1)), ]), } instance_attributes = { 'ssh-keys': '\n'.join([ 'ubuntu:{0}'.format(valid_key.format(2)), 'user:{0}'.format(invalid_key.format(2)), ]), 'block-project-ssh-keys': 'False', } meta = GCE_META.copy() meta['project/attributes'] = project_attributes meta['instance/attributes'] = instance_attributes _set_mock_metadata(meta) ubuntu_ds.get_data() expected = [valid_key.format(key) for key in range(3)] self.assertEqual(set(expected), set(ubuntu_ds.get_public_ssh_keys()))
def setUp(self): self.ds = DataSourceGCE.DataSourceGCE( settings.CFG_BUILTIN, None, helpers.Paths({})) super(TestDataSourceGCE, self).setUp()
def test_datasource_doesnt_use_ephemeral_dhcp(self, m_dhcp): _set_mock_metadata() ds = DataSourceGCE.DataSourceGCE(sys_cfg={}, distro=None, paths=None) ds._get_data() assert m_dhcp.call_count == 0