def test___init___(self): vagrantfile_string = load_vagrant_file('default-shell') vagrantfile = VagrantParser.parses(content=vagrantfile_string) self.assertIsInstance(vagrantfile, Vagrantfile) vagrantfile_path = get_vagrant_file_path('default-shell') vagrantfile = VagrantParser.parsep(path=vagrantfile_path) self.assertIsInstance(vagrantfile, Vagrantfile) self.assertEqual(vagrantfile.configure_version, '2')
def test_chef_provisioner2(self): vagrantfile_string = load_vagrant_file('default-chef2') vagrantfile = VagrantParser.parses(content=vagrantfile_string) provisioner = vagrantfile.vm.provision self.assertKeyInDict('chef_solo', provisioner) chef_solo = provisioner['chef_solo'] self.assertHasAttr(chef_solo, 'cookbooks_path') self.assertListEqual(chef_solo.cookbooks_path, ['cookbooks', 'site-cookbooks']) self.assertHasAttr(chef_solo, 'json') self.assertDictEqual(chef_solo.json, { 'ncpackageserver': { 'nginx_port': 8080, 'authentication': { 'htpasswd': 'auth/htpasswd_devpi', 'users': [{ 'name': 'drewsonne', 'password': '******' }] } } }) self.assertHasAttr(chef_solo, 'run_list') self.assertListEqual(chef_solo.run_list, [ 'recipe[devpi::server]', 'recipe[ncpackageserver::web]', 'recipe[ncpackageserver::nginx]', 'recipe[ncpackageserver::server]' ])
def test_chef_provisioner(self): vagrantfile_string = load_vagrant_file('default-chef') vagrantfile = VagrantParser.parses(content=vagrantfile_string) provisioner = vagrantfile.vm.provision self.assertKeyInDict('chef_solo', provisioner) chef_solo = provisioner['chef_solo'] self.assertHasAttr(chef_solo, 'cookbooks_path') self.assertListEqual(chef_solo.cookbooks_path, ['cookbooks', 'my_cookbooks']) self.assertHasAttr(chef_solo, 'data_bags_path') self.assertEqual(chef_solo.data_bags_path, 'data_bags') self.assertHasAttr(chef_solo, 'roles_path') self.assertEqual(chef_solo.roles_path, 'roles') self.assertHasAttr(chef_solo, 'roles') self.assertListEqual(chef_solo.roles, ['web', 'database']) self.assertHasAttr(chef_solo, 'cookbooks_path') self.assertListEqual(chef_solo.cookbooks_path, ['cookbooks', 'my_cookbooks']) self.assertHasAttr(chef_solo, 'json') self.assertDictEqual(chef_solo.json, { 'apache': { 'listen_address': '0.0.0.0', 'modules': ['mod_sec', 'mod_php', 'mod_cgi', 'mod_java'] } }) self.assertHasAttr(chef_solo, 'recipes') self.assertListEqual(chef_solo.recipes, ['apache', 'mysql'])
def test_parse_ruby_dict_malformed(self): parser = VagrantParser(content='') parser.current_position = 0 ruby_dict = parser.parse_ruby_dict(""" "apache" => { "listen_address" => "0.0.0.0", "modules" => ["mod_sec", "mod_php", "mod_cgi", "mod_java"] } }""") self.assertDictEqual(ruby_dict, { 'apache': { 'listen_address': '0.0.0.0', 'modules': ['mod_sec', 'mod_php', 'mod_cgi', 'mod_java'] } })
def test_provisioner_shell(self): vagrantfile_path = get_vagrant_file_path('default-shell') vagrantfile = VagrantParser.parsep(path=vagrantfile_path) self.assertHasAttr(vagrantfile.vm, 'provision') provision = vagrantfile.vm.provision self.assertKeyInDict('shell', provision) self.assertHasAttr(provision['shell'], 'inline') self.assertEqual(provision['shell'].inline, "sudo apt-get update\n" "sudo apt-get install -y apache2")
def test_vm_attributes(self): vagrantfile_path = get_vagrant_file_path('default-shell') vagrantfile = VagrantParser.parsep(path=vagrantfile_path) self.assertHasAttr(vagrantfile, 'vm') vm = vagrantfile.vm self.assertHasAttr(vm, 'box') self.assertEqual(vm.box, 'base') self.assertHasAttr(vm, 'box_check_update') self.assertEqual(vm.box_check_update, False)
def test_provider_virtualbox(self): vagrantfile_path = get_vagrant_file_path('default-shell') vagrantfile = VagrantParser.parsep(path=vagrantfile_path) self.assertHasAttr(vagrantfile.vm, 'provider') self.assertKeyInDict('virtualbox', vagrantfile.vm.provider) vb = vagrantfile.vm.provider['virtualbox'] self.assertHasAttr(vb, 'gui') self.assertTrue(vb.gui, True) self.assertHasAttr(vb, 'memory') self.assertTrue(vb.memory, '1024')
def test_to_dict(self): vagrantfile_string = load_vagrant_file('default-chef') vagrantfile = VagrantParser.parses(content=vagrantfile_string) self.assertDictEqual( vagrantfile.to_dict(), { 'vm': { 'box': 'base', 'box_check_update': False, 'provision': { 'shell': { 'inline': 'sudo apt-get update\nsudo apt-get install -y apache2' }, 'chef_solo': { 'data_bags_path': 'data_bags', 'roles_path': 'roles', 'roles': ['web', 'database'], 'recipes': ['apache', 'mysql'], 'cookbooks_path': ['cookbooks', 'my_cookbooks'], 'json': { 'apache': { 'listen_address': '0.0.0.0', 'modules': [ 'mod_sec', 'mod_php', 'mod_cgi', 'mod_java' ] } } } }, 'network': { 'forwarded_port': [{ 'host': 8080, 'guest': 80 }], 'private_network': { 'ip': '192.168.33.10' }, 'public_network': True }, 'provider': { 'virtualbox': { 'gui': True, 'memory': '1024' } } } })
def test_to_dict(self): vagrantfile_string = load_vagrant_file('default-chef') vagrantfile = VagrantParser.parses(content=vagrantfile_string) self.assertDictEqual(vagrantfile.to_dict(), { 'vm': { 'box': 'base', 'box_check_update': False, 'provision': { 'shell': { 'inline': 'sudo apt-get update\nsudo apt-get install -y apache2' }, 'chef_solo': { 'data_bags_path': 'data_bags', 'roles_path': 'roles', 'roles': ['web', 'database'], 'recipes': ['apache', 'mysql'], 'cookbooks_path': ['cookbooks', 'my_cookbooks'], 'json': { 'apache': { 'listen_address': '0.0.0.0', 'modules': ['mod_sec', 'mod_php', 'mod_cgi', 'mod_java'] } } } }, 'network': { 'forwarded_port': [{ 'host': 8080, 'guest': 80 }], 'private_network': { 'ip': '192.168.33.10' }, 'public_network': True }, 'provider': { 'virtualbox': { 'gui': True, 'memory': '1024' } } } })
def test_chef_provisioner(self): vagrantfile_string = load_vagrant_file('default-chef') vagrantfile = VagrantParser.parses(content=vagrantfile_string) provisioner = vagrantfile.vm.provision self.assertKeyInDict('chef_solo', provisioner) chef_solo = provisioner['chef_solo'] self.assertHasAttr(chef_solo, 'cookbooks_path') self.assertListEqual(chef_solo.cookbooks_path, ['cookbooks', 'my_cookbooks']) self.assertHasAttr(chef_solo, 'data_bags_path') self.assertEqual(chef_solo.data_bags_path, 'data_bags') self.assertHasAttr(chef_solo, 'roles_path') self.assertEqual(chef_solo.roles_path, 'roles') self.assertHasAttr(chef_solo, 'roles') self.assertListEqual(chef_solo.roles, ['web', 'database']) self.assertHasAttr(chef_solo, 'cookbooks_path') self.assertListEqual(chef_solo.cookbooks_path, ['cookbooks', 'my_cookbooks']) self.assertHasAttr(chef_solo, 'json') self.assertDictEqual( chef_solo.json, { 'apache': { 'listen_address': '0.0.0.0', 'modules': ['mod_sec', 'mod_php', 'mod_cgi', 'mod_java'] } }) self.assertHasAttr(chef_solo, 'recipes') self.assertListEqual(chef_solo.recipes, ['apache', 'mysql'])
def test_network_attributes(self): vagrantfile_path = get_vagrant_file_path('default-shell') vagrantfile = VagrantParser.parsep(path=vagrantfile_path) self.assertHasAttr(vagrantfile.vm, 'network') network = vagrantfile.vm.network self.assertKeyInDict('forwarded_port', network) self.assertIsInstance(network['forwarded_port'], list) self.assertGreater(len(network['forwarded_port']), 0) self.assertHasAttr(network['forwarded_port'][0], 'guest') self.assertEqual(network['forwarded_port'][0].guest, 80) self.assertHasAttr(network['forwarded_port'][0], 'host') self.assertEqual(network['forwarded_port'][0].host, 8080) self.assertKeyInDict('private_network', network) self.assertHasAttr(network['private_network'], 'ip') self.assertEqual(network['private_network'].ip, '192.168.33.10') self.assertKeyInDict('public_network', network) self.assertTrue(network['public_network'])
def test_synced_folder(self): vagrantfile_path = get_vagrant_file_path('default-shell') vagrantfile = VagrantParser.parsep(path=vagrantfile_path) self.assertHasAttr(vagrantfile.vm, 'synced_folder') self.assertTupleEqual(vagrantfile.vm.synced_folder, ('../data', '/vagrant_data'))