def test_image_dir_name(microcore_appliance): assert Appliance(registry, "tests/registry/appliances/microcore-linux.gns3a" ).image_dir_name() == "QEMU" assert Appliance(registry, "tests/registry/appliances/cisco-iou-l3.gns3a" ).image_dir_name() == "IOU"
def test_check_config(tmpdir, registry): test_path = str(tmpdir / "test.json") with open(test_path, "w+", encoding="utf-8") as f: f.write("") with pytest.raises(ApplianceError): Appliance(registry, "jkhj") with pytest.raises(ApplianceError): Appliance(registry, test_path) with open(test_path, "w+", encoding="utf-8") as f: f.write("{}") with pytest.raises(ApplianceError): Appliance(registry, test_path) with pytest.raises(ApplianceError): with open(test_path, "w+", encoding="utf-8") as f: f.write('{"registry_version": 42}') Appliance(registry, test_path) Appliance(registry, "tests/registry/appliances/microcore-linux.json")
def test_emulator(): assert Appliance( registry, "tests/registry/appliances/microcore-linux.gns3a").emulator() == "qemu" assert Appliance( registry, "tests/registry/appliances/cisco-iou-l3.gns3a").emulator() == "iou"
def test_create_new_version(microcore_appliance): a = Appliance(registry, "tests/registry/appliances/microcore-linux.gns3a") a.create_new_version("42.0") v = a['versions'][-1:][0] assert v == { 'images': { 'hda_disk_image': { 'filename': 'linux-microcore-42.0.img', 'version': '42.0' } }, 'name': '42.0' }
def test_create_new_version(): appliance_path = os.path.join(os.path.dirname(__file__), "appliances", "microcore-linux.gns3a") a = Appliance(registry, appliance_path) a.create_new_version("42.0") v = a['versions'][-1:][0] assert v == { 'images': { 'hda_disk_image': { 'filename': 'linux-microcore-42.0.img', 'version': '42.0' } }, 'name': '42.0' } # tests what happens without versions in file wrong_appliance_fp, wrong_appliance_file = tempfile.mkstemp() with open(appliance_path) as f: appliance = json.loads(f.read()) del appliance['versions'] os.write(wrong_appliance_fp, json.dumps(appliance).encode()) os.close(wrong_appliance_fp) a = Appliance(registry, wrong_appliance_file) with pytest.raises(ApplianceError): a.create_new_version("42.0") os.remove(wrong_appliance_file)
def test_create_new_version(microcore_appliance): a = Appliance(registry, "tests/registry/appliances/microcore-linux.json") a.create_new_version("42.0") v = a['versions'][-1:][0] assert v == { 'images': { 'hda_disk_image': { 'filename': 'linux-microcore-42.0.img', 'version': '42.0' } }, 'name': '42.0' }
def microcore_appliance(registry): """ An instance of microcore Appliance object """ return Appliance( registry, os.path.abspath("tests/registry/appliances/microcore-linux.gns3a"))
def test_resolve_docker(tmpdir): with open("tests/registry/appliances/openvswitch.gns3a", encoding="utf-8") as f: config = json.load(f) new_config = Appliance(registry, "tests/registry/appliances/openvswitch.gns3a")
def test_resolve_version(tmpdir): with open("tests/registry/appliances/microcore-linux.json", encoding="utf-8") as f: config = json.load(f) hda = config["images"][0] new_config = Appliance(registry, "tests/registry/appliances/microcore-linux.json") assert new_config["versions"][0]["images"] == {"hda_disk_image": hda}
def test_resolve_version_dynamips(tmpdir): with open("tests/registry/appliances/cisco-3745.gns3a", encoding="utf-8") as f: config = json.load(f) hda = config["images"][0] hda["idlepc"] = "0x60aa1da0" new_config = Appliance(registry, "tests/registry/appliances/cisco-3745.gns3a") assert new_config["versions"][0]["images"] == {"image": hda}
def test_check_config(tmpdir, registry): test_path = str(tmpdir / "test.gns3a") with open(test_path, "w+", encoding="utf-8") as f: f.write("") with pytest.raises(ApplianceError): Appliance(registry, "jkhj") with pytest.raises(ApplianceError): Appliance(registry, test_path) with open(test_path, "w+", encoding="utf-8") as f: f.write("{}") with pytest.raises(ApplianceError): Appliance(registry, test_path) with pytest.raises(ApplianceError): with open(test_path, "w+", encoding="utf-8") as f: f.write('{"registry_version": 42}') Appliance(registry, test_path) # Will raise an error due to JSON schema invalid with open("tests/registry/appliances/microcore-linux.gns3a", encoding="utf-8") as f: config = json.load(f) config["images"][0]["md5sum"] = "broken" with open(test_path, "w+", encoding="utf-8") as f: json.dump(config, f) with pytest.raises(ApplianceError): Appliance(registry, test_path) Appliance(registry, "tests/registry/appliances/microcore-linux.gns3a")
def test_create_new_version(): appliance_path = os.path.join( os.path.dirname(__file__), "appliances", "microcore-linux.gns3a") a = Appliance(registry, appliance_path) a.create_new_version("42.0") v = a['versions'][-1:][0] assert v == { 'images': { 'hda_disk_image': { 'filename': 'linux-microcore-42.0.img', 'version': '42.0' } }, 'name': '42.0' } # tests what happens without versions in file wrong_appliance_fp, wrong_appliance_file = tempfile.mkstemp() with open(appliance_path) as f: appliance = json.loads(f.read()) del appliance['versions'] os.write(wrong_appliance_fp, json.dumps(appliance).encode()) os.close(wrong_appliance_fp) a = Appliance(registry, wrong_appliance_file) with pytest.raises(ApplianceError): a.create_new_version("42.0") os.remove(wrong_appliance_file)
def test_resolve_version_ova(tmpdir): with open("tests/registry/appliances/juniper-vsrx.gns3a", encoding="utf-8") as f: config = json.load(f) hda = config["images"][0] hda["filename"] = os.path.join("junos-vsrx-12.1X47-D10.4-domestic.ova", "junos-vsrx-12.1X47-D10.4-domestic-disk1.vmdk") new_config = Appliance(registry, "tests/registry/appliances/juniper-vsrx.gns3a") assert new_config["versions"][0]["images"] == { "hda_disk_image": hda }
def test_resolve_version_invalid_file(tmpdir): with pytest.raises(ApplianceError): Appliance(registry, "tests/registry/appliances/broken-microcore-linux.json")
def microcore_appliance(registry): """ An instance of microcore Appliance object """ return Appliance(registry, "tests/registry/appliances/microcore-linux.json")