def _get_templates(self):
- # Make sure you understand the three return values of os.walk:
- #
- # for root, subdirs, files in os.walk(rootdir):
- # has the following meaning:
- #
- # root: Current path which is "walked through"
- # subdirs: Files in root of type directory
- # files: Files in root (not in subdirs) of type other than directory
- # And please use os.path.join instead of concatenating with a slash!
- # Your problem is filePath = rootdir + '/' + file - you must concatenate the currently "walked" folder instead of the topmost folder.
- # So that must be filePath = os.path.join(root, file). BTW "file" is a builtin, so you don't normally use it as variable name.
-
templates = []
for root, subdirs, files in os.walk("templates"):
for file in files:
- if file.endswith('.trp'):
- try:
- f = os.path.join(root, file)
- o = open(f)
- c = json.loads(o.read())
- o.close()
- id = f.replace("templates" + os.path.sep, "", 1)
- id = id.split(os.path.sep)
- id[-1] = id[-1].replace(".trp", "", 1)
- id = "/".join(id)
- t = {
- "id": id,
- "meta": {
- "name": c["metadata"]["caption"],
- "description": ""
- }
- }
- templates.append(t)
- except:
- pass
+ if not file.endswith('.trp'):
+ next
+ try:
+ f = os.path.join(root, file)
+ c = None
+ with open(f, 'r') as templatefile:
+ c = json.loads(templatefile.read())
+ id = f.replace("templates" + os.path.sep, "", 1)
+ id = id.split(os.path.sep)
+ id[-1] = id[-1].replace(".trp", "", 1)
+ id = "/".join(id)
+ t = {
+ "id": id,
+ "meta": {
+ "name": c["metadata"]["caption"],
+ "description": ""
+ }
+ }
+ templates.append(t)
+ except:
+ pass
return templates
def _get_template(self,template):
for instruction in fe_instructions:
print(instruction['help'])
assert("help" in instruction)
+ assert(len(defs['feInstructionParameters']) > 0)
+ assert(len(defs['feParameters']) > 0)
+ assert(len(defs['feTemplates']) > 0)
def test_get_definitions_ether():
res = get_definitions(["Ether"])
assert(ttl_instruction['max_value'] == 64)
-def test_get_templates():
- tt = get_templates()
- assert(tt[0]['id'])
- assert(tt[7]["meta"]['name'])
- try:
- assert(tt[9]['id'])
- except:
- pass
+def test_list_templates_hierarchy():
+ ids = []
+ for template_info in get_templates():
+ assert(template_info["meta"]["name"])
+ assert("description" in template_info["meta"])
+ ids.append(template_info['id'])
+ assert('IPv4/TCP' in ids)
+ assert('IPv4/UDP' in ids)
+ assert('TCP-SYN' in ids)
+ assert('ICMP echo request' in ids)
+def test_get_template_root():
+ obj = json.loads(get_template_by_id('TCP-SYN'))
+ assert(obj['packet'][0]['id'] == 'Ether')
+ assert(obj['packet'][1]['id'] == 'IP')
+ assert(obj['packet'][2]['id'] == 'TCP')
-def test_get_template():
- tt = get_templates()
- t = tt[0]
- res = get_template(t)
- res2 = base64.b64decode(res)
- obj = json.loads(res2)
+def test_get_template_IP_ICMP():
+ obj = json.loads(get_template_by_id('IPv4/ICMP'))
assert(obj['packet'][0]['id'] == 'Ether')
assert(obj['packet'][1]['id'] == 'IP')
assert(obj['packet'][2]['id'] == 'ICMP')
-
-def test_get_template2():
- tt = get_templates()
- t = tt[7]
- res = get_template(t)
- res2 = base64.b64decode(res)
- obj = json.loads(res2)
+def test_get_template_IPv6_UDP():
+ obj = json.loads(get_template_by_id('IPv6/UDP'))
assert(obj['packet'][0]['id'] == 'Ether')
assert(obj['packet'][1]['id'] == 'IPv6')
assert(obj['packet'][2]['id'] == 'UDP')
+def test_templates_no_relative_path():
+ res = get_template_by_id("../templates/IPv6/UDP")
+ assert(res == "")
-def test_get_template3():
- tt = get_templates()
- t = tt[7]
- t["id"] = "../../" + t["id"]
- res = get_template(t)
- assert(res == '')