Skip to content

Commit 53722cf

Browse files
committed
Finalise test + add docstring + correct bug in plugins mongo&sql
modified: ../plugins/mongodb.py modified: ../plugins/sql.py modified: test_backend_plugin_factory.py
1 parent 10be566 commit 53722cf

3 files changed

Lines changed: 39 additions & 18 deletions

File tree

libnmap/plugins/mongodb.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,23 @@ def __init__(self, dbname=None, store=None, **kwargs):
1919
self.collection = self.dbclient[self.dbname][self.store]
2020

2121
def insert(self, report):
22-
# create a json object from an NmapReport instance
22+
"""
23+
create a json object from an NmapReport instance
24+
:param NmapReport: obj to insert
25+
:return: str id
26+
"""
2327
j = json.dumps(report, cls=ReportEncoder)
2428
try:
2529
id = self.collection.insert(json.loads(j))
2630
except:
2731
print "MONGODB cannot insert"
2832
raise
29-
return id
33+
return str(id)
3034

3135
def get(self, str_report_id=None):
32-
"""get return a NmapReport object
36+
""" select a NmapReport by Id
37+
:param str: id
38+
:return: NmapReport object
3339
"""
3440
rid = str_report_id
3541
nmapreport = None
@@ -38,11 +44,11 @@ def get(self, str_report_id=None):
3844

3945
if isinstance(rid, ObjectId):
4046
#get a specific report by mongo's id
41-
r = self.collection.find({'_id': rid})
42-
if r is not None:
47+
resultSet = self.collection.find({'_id': rid})
48+
if resultSet.count() == 1:
4349
#search by id means only one in the iterator
44-
record = r[0]
45-
#remove mongo's id
50+
record = resultSet[0]
51+
#remove mongo's id to recreate the NmapReport Obj
4652
del record['_id']
4753
nmapreport = NmapParser.parse_fromdict(record)
4854
return nmapreport
@@ -60,7 +66,12 @@ def getall(self, dict_filter=None):
6066
return nmapreportList
6167

6268
def delete(self, report_id=None):
69+
"""
70+
delete an obj from the backend
71+
:param str: id
72+
:return: dict document with result or None
73+
"""
6374
if report_id is not None and isinstance(report_id, str):
64-
self.collection.remove({'_id': ObjectId(report_id)})
75+
return self.collection.remove({'_id': ObjectId(report_id)})
6576
else:
66-
self.collection.remove({'_id': report_id})
77+
return self.collection.remove({'_id': report_id})

libnmap/plugins/sql.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,15 @@ def getall(self):
140140
return nmapreportList
141141

142142
def delete(self, report_id=None):
143+
"""
144+
Remove a report from the backend
145+
:param id: str
146+
:return: The number of rows deleted
147+
"""
143148
if report_id is None:
144149
raise ValueError
150+
nb_line = 0
145151
sess = self.Session()
146-
sess.query(NmapSqlPlugin.Reports).filter_by(id=report_id).delete()
152+
nb_line = sess.query(NmapSqlPlugin.Reports).filter_by(id=report_id).delete()
147153
sess.commit()
154+
return nb_line

libnmap/test/test_backend_plugin_factory.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ def test_backend_get(self):
9595
id_list = []
9696
result_list = []
9797
for url in self.urls:
98-
print url
9998
backend = BackendPluginFactory.create(**url)
10099
for nrp in self.reportList:
101100
id_list.append(nrp.save(backend))
@@ -105,8 +104,6 @@ def test_backend_get(self):
105104
#print self.reportList[0]
106105
self.assertEqual(len(result_list), len(self.reportList))
107106
self.assertEqual((result_list), (self.reportList))
108-
#for index in range(len(result_list)):
109-
# self.assertEqual(result_list[index], self.reportList[index])
110107
id_list = []
111108
result_list = []
112109

@@ -118,11 +115,17 @@ def test_backend_delete(self):
118115
inset all report and save the returned id in a list
119116
for each id remove the item and test if not present
120117
"""
121-
pass
122-
# for nrp in self.reportList:
123-
# for url in self.urls:
124-
# backend = BackendPluginFactory.create(**url)
125-
# returncode = nrp.save(backend)
118+
id_list = []
119+
result_list = []
120+
for url in self.urls:
121+
backend = BackendPluginFactory.create(**url)
122+
for nrp in self.reportList:
123+
id_list.append(nrp.save(backend))
124+
for rep_id in id_list:
125+
result_list.append(backend.delete(rep_id))
126+
self.assertEqual(backend.get(rep_id),None)
127+
id_list = []
128+
result_list = []
126129

127130

128131
if __name__ == '__main__':

0 commit comments

Comments
 (0)