Skip to content

Commit

Permalink
Add traceability context menu to requirements table
Browse files Browse the repository at this point in the history
  • Loading branch information
Shamal Faily committed Jan 6, 2017
1 parent 3bca44f commit 7c5e74a
Show file tree
Hide file tree
Showing 6 changed files with 211 additions and 30 deletions.
38 changes: 14 additions & 24 deletions cairis/sql/procs.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4915,37 +4915,37 @@ begin
declare environmentId int;
select id into environmentId from environment where name = environmentName limit 1;

select 'requirement' from_objt, concat(a.short_code,'-',r.label) from_name, 'task' to_objt, s.name to_name from task s, requirement r, asset a, asset_requirement ar, environment_task cs,requirement_task sr where cs.environment_id = environmentId and cs.task_id = s.id and cs.task_id = sr.task_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.asset_id = a.id
select 'requirement' from_objt, r.name from_name, 'task' to_objt, s.name to_name from task s, requirement r, asset a, asset_requirement ar, environment_task cs,requirement_task sr where cs.environment_id = environmentId and cs.task_id = s.id and cs.task_id = sr.task_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.asset_id = a.id
union
select 'requirement' from_objt, concat(a.short_code,'-',r.label) from_name, 'task' to_objt, s.name to_name from task s, requirement r, environment a, environment_requirement ar, environment_task cs,requirement_task sr where cs.environment_id = environmentId and cs.task_id = s.id and cs.task_id = sr.task_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.environment_id = a.id
select 'requirement' from_objt, r.name from_name, 'task' to_objt, s.name to_name from task s, requirement r, environment a, environment_requirement ar, environment_task cs,requirement_task sr where cs.environment_id = environmentId and cs.task_id = s.id and cs.task_id = sr.task_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.environment_id = a.id
union
select 'requirement' from_objt, concat(a.short_code,'-',r.label) from_name, 'usecase' to_objt, s.name to_name from usecase s, requirement r, asset a, asset_requirement ar, environment_usecase cs,requirement_usecase sr where cs.environment_id = environmentId and cs.usecase_id = s.id and cs.usecase_id = sr.usecase_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.asset_id = a.id
select 'requirement' from_objt, r.name from_name, 'usecase' to_objt, s.name to_name from usecase s, requirement r, asset a, asset_requirement ar, environment_usecase cs,requirement_usecase sr where cs.environment_id = environmentId and cs.usecase_id = s.id and cs.usecase_id = sr.usecase_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.asset_id = a.id
union
select 'requirement' from_objt, concat(a.short_code,'-',r.label) from_name, 'usecase' to_objt, s.name to_name from usecase s, requirement r, environment a, environment_requirement ar, environment_usecase cs,requirement_usecase sr where cs.environment_id = environmentId and cs.usecase_id = s.id and cs.usecase_id = sr.usecase_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.environment_id = a.id
select 'requirement' from_objt, r.name from_name, 'usecase' to_objt, s.name to_name from usecase s, requirement r, environment a, environment_requirement ar, environment_usecase cs,requirement_usecase sr where cs.environment_id = environmentId and cs.usecase_id = s.id and cs.usecase_id = sr.usecase_id and sr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and r.id = ar.requirement_id and ar.environment_id = a.id
union
select 'requirement' from_objt, concat(fa.short_code,'-',fr.label) from_name, 'requirement' to_objt, concat(ta.short_code,'-',tr.label) to_name from requirement fr, asset_requirement far, asset fa, requirement tr, asset_requirement tar, asset ta, requirementrequirement_goalassociation rr where rr.goal_id = fr.id and rr.subgoal_id = tr.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and fr.id = far.requirement_id and far.asset_id = fa.id and tr.id = tar.requirement_id and tar.asset_id = ta.id
select 'requirement' from_objt, fr.name from_name, 'requirement' to_objt, tr.name to_name from requirement fr, asset_requirement far, asset fa, requirement tr, asset_requirement tar, asset ta, requirementrequirement_goalassociation rr where rr.goal_id = fr.id and rr.subgoal_id = tr.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and fr.id = far.requirement_id and far.asset_id = fa.id and tr.id = tar.requirement_id and tar.asset_id = ta.id
union
select 'usecase' from_objt, u.name from_name, 'task' to_objt, t.name to_name from usecase_task ut, environment_usecase eu, environment_task et, usecase u, task t where eu.environment_id = environmentId and eu.environment_id = et.environment_id and ut.usecase_id = eu.usecase_id and eu.usecase_id = u.id and ut.task_id = et.task_id and et.task_id = t.id
union
select 'task' from_objt, s.name from_name, 'asset' to_objt, a.name to_name from task_asset sa, environment_asset ca, environment_task cs, asset a, task s where ca.environment_id = environmentId and cs.environment_id = environmentId and cs.task_id = sa.task_id and sa.task_id = s.id and ca.asset_id = sa.asset_id and sa.asset_id = a.id
union
select 'task' from_objt, s.name from_name, 'vulnerability' to_objt, v.name to_name from task_vulnerability sv, environment_vulnerability cv, environment_task cs, vulnerability v, task s where cv.environment_id = environmentId and cs.environment_id = environmentId and cs.task_id = sv.task_id and sv.task_id = s.id and cv.vulnerability_id = sv.vulnerability_id and sv.vulnerability_id = v.id
union
select 'requirement' from_objt, concat(a.short_code,'-',r.label) from_name, 'vulnerability' to_objt, v.name to_name from requirement r, asset_requirement ar, asset a, vulnerability v, environment_vulnerability cv, requirement_vulnerability rv where cv.environment_id = environmentId and rv.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and rv.vulnerability_id = v.id and v.id = cv.vulnerability_id and r.id = ar.requirement_id and ar.asset_id = a.id
select 'requirement' from_objt, r.name from_name, 'vulnerability' to_objt, v.name to_name from requirement r, asset_requirement ar, asset a, vulnerability v, environment_vulnerability cv, requirement_vulnerability rv where cv.environment_id = environmentId and rv.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and rv.vulnerability_id = v.id and v.id = cv.vulnerability_id and r.id = ar.requirement_id and ar.asset_id = a.id
union
select 'domainproperty' from_objt, dp.name from_name, 'asset' to_objt, a.name to_name from domainproperty dp, domainproperty_asset da, environment_asset ea, asset a where ea.environment_id = environmentId and ea.asset_id = a.id and a.id = da.asset_id and dp.id = da.domainproperty_id
union
select 'requirement' from_objt, concat(a.short_code,'-',r.label) from_name, 'role' to_objt, ro.name to_name from requirement r, asset_requirement ar, asset a, role ro, requirement_role rr where rr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and rr.role_id = ro.id and r.id = ar.requirement_id and ar.asset_id = a.id
select 'requirement' from_objt, r.name from_name, 'role' to_objt, ro.name to_name from requirement r, asset_requirement ar, asset a, role ro, requirement_role rr where rr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and rr.role_id = ro.id and r.id = ar.requirement_id and ar.asset_id = a.id
union
select 'requirement' from_objt, concat(e.short_code,'-',r.label) from_name, 'role' to_objt, ro.name to_name from requirement r, environment_requirement er, environment e, role ro, requirement_role rr where rr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and rr.role_id = ro.id and r.id = er.requirement_id and er.environment_id = e.id
select 'requirement' from_objt, r.name from_name, 'role' to_objt, ro.name to_name from requirement r, environment_requirement er, environment e, role ro, requirement_role rr where rr.requirement_id = r.id and r.version = (select max(i.version) from requirement i where i.id = r.id) and rr.role_id = ro.id and r.id = er.requirement_id and er.environment_id = e.id
union
select 'requirement' from_objt, concat(fa.short_code,'-',fr.label) from_name, 'requirement' to_objt, concat(ta.short_code,'-',tr.label) to_name from requirement fr, asset_requirement far, asset fa, environment_asset fae, requirement tr, asset_requirement tar, asset ta, environment_asset tae, requirement_requirement rr where rr.from_id = fr.id and fr.id = far.requirement_id and far.asset_id = fa.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = tar.requirement_id and tar.asset_id = ta.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and far.asset_id = fae.asset_id and fae.environment_id = environmentId and fae.environment_id = tae.environment_id and tae.asset_id = tar.asset_id
select 'requirement' from_objt, fr.name from_name, 'requirement' to_objt, tr.name to_name from requirement fr, asset_requirement far, asset fa, environment_asset fae, requirement tr, asset_requirement tar, asset ta, environment_asset tae, requirement_requirement rr where rr.from_id = fr.id and fr.id = far.requirement_id and far.asset_id = fa.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = tar.requirement_id and tar.asset_id = ta.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and far.asset_id = fae.asset_id and fae.environment_id = environmentId and fae.environment_id = tae.environment_id and tae.asset_id = tar.asset_id
union
select 'requirement' from_objt, concat(fa.short_code,'-',fr.label) from_name, 'requirement' to_objt, concat(te.short_code,'-',tr.label) to_name from requirement fr, asset_requirement far, asset fa, environment_asset fae, requirement tr, environment_requirement ter, environment te, requirement_requirement rr where rr.from_id = fr.id and fr.id = far.requirement_id and far.asset_id = fa.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = ter.requirement_id and ter.environment_id = te.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and far.asset_id = fae.asset_id and fae.environment_id = environmentId and fae.environment_id = ter.environment_id
select 'requirement' from_objt, fr.name from_name, 'requirement' to_objt, tr.name to_name from requirement fr, asset_requirement far, asset fa, environment_asset fae, requirement tr, environment_requirement ter, environment te, requirement_requirement rr where rr.from_id = fr.id and fr.id = far.requirement_id and far.asset_id = fa.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = ter.requirement_id and ter.environment_id = te.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and far.asset_id = fae.asset_id and fae.environment_id = environmentId and fae.environment_id = ter.environment_id
union
select 'requirement' from_objt, concat(fe.short_code,'-',fr.label) from_name, 'requirement' to_objt, concat(ta.short_code,'-',tr.label) to_name from requirement fr, environment_requirement fer, environment fe, requirement tr, asset_requirement tar, asset ta, environment_asset tae, requirement_requirement rr where rr.from_id = fr.id and fr.id = fer.requirement_id and fer.environment_id = fe.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = tar.requirement_id and tar.asset_id = ta.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and fer.environment_id = environmentId and fer.environment_id = tae.environment_id and tae.asset_id = tar.asset_id
select 'requirement' from_objt, fr.name from_name, 'requirement' to_objt, tr.name to_name from requirement fr, environment_requirement fer, environment fe, requirement tr, asset_requirement tar, asset ta, environment_asset tae, requirement_requirement rr where rr.from_id = fr.id and fr.id = fer.requirement_id and fer.environment_id = fe.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = tar.requirement_id and tar.asset_id = ta.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and fer.environment_id = environmentId and fer.environment_id = tae.environment_id and tae.asset_id = tar.asset_id
union
select 'requirement' from_objt, concat(fe.short_code,'-',fr.label) from_name, 'requirement' to_objt, concat(te.short_code,'-',tr.label) to_name from requirement fr, environment_requirement fer, environment fe, requirement tr, environment_requirement ter, environment te, requirement_requirement rr where rr.from_id = fr.id and fr.id = fer.requirement_id and fer.environment_id = fe.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = ter.requirement_id and ter.environment_id = te.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and fer.environment_id = environmentId and fer.environment_id = ter.environment_id;
select 'requirement' from_objt, fr.name from_name, 'requirement' to_objt, tr.name to_name from requirement fr, environment_requirement fer, environment fe, requirement tr, environment_requirement ter, environment te, requirement_requirement rr where rr.from_id = fr.id and fr.id = fer.requirement_id and fer.environment_id = fe.id and fr.version = (select max(i.version) from requirement i where i.id = fr.id) and rr.to_id = tr.id and tr.id = ter.requirement_id and ter.environment_id = te.id and tr.version = (select max(i.version) from requirement i where i.id = tr.id) and fer.environment_id = environmentId and fer.environment_id = ter.environment_id;

end
//
Expand All @@ -4962,12 +4962,7 @@ begin

if fromObjt = 'requirement'
then
call requirementLabelComponents(fromName,shortCode,reqLabel);
select o.id into fromId from requirement o, asset_requirement ar, asset a where o.label = reqLabel and o.id = ar.requirement_id and ar.asset_id = a.id and a.short_code = shortCode and o.version = (select max(i.version) from requirement i where i.id = o.id);
if fromId is null
then
select o.id into fromId from requirement o, environment_requirement er, environment e where o.label = reqLabel and o.id = er.requirement_id and er.environment_id = e.id and e.short_code = shortCode and o.version = (select max(i.version) from requirement i where i.id = o.id);
end if;
select o.id into fromId from requirement o where o.name = fromName and o.version = (select max(i.version) from requirement i where i.id = o.id);
else
set fromIdSql = concat('select id into @fromId from ',fromObjt,' where name = "',fromName,'" limit 1');
set @sql = fromIdSql;
Expand All @@ -4979,12 +4974,7 @@ begin

if toObjt = 'requirement'
then
call requirementLabelComponents(toName,shortCode,reqLabel);
select o.id into toId from requirement o, asset_requirement ar, asset a where o.label = reqLabel and o.id = ar.requirement_id and ar.asset_id = a.id and a.short_code = shortCode and o.version = (select max(i.version) from requirement i where i.id = o.id);
if toId is null
then
select o.id into toId from requirement o, environment_requirement er, environment e where o.label = reqLabel and o.id = er.requirement_id and er.environment_id = e.id and e.short_code = shortCode and o.version = (select max(i.version) from requirement i where i.id = o.id);
end if;
select o.id into toId from requirement o where o.name = toName and o.version = (select max(i.version) from requirement i where i.id = o.id);
else
set toIdSql = concat('select id into @toId from ',toObjt,' where name = "',toName,'" limit 1');
set @sql = toIdSql;
Expand Down
6 changes: 3 additions & 3 deletions cairis/test/test_Trace.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ def testTraces(self):
toDims = b.dbProxy.getTraceDimensions('requirement',0)
self.assertEqual(len(toDims),5)

reqId = b.dbProxy.getDimensionId('AC-1','requirement')
reqId = b.dbProxy.getDimensionId('Dataset policy','requirement')
vulId = b.dbProxy.getDimensionId('Certificate ubiquity','vulnerability')
b.dbProxy.addTrace('requirement_vulnerability',reqId,vulId)

traces = b.dbProxy.removableTraces('Psychosis')
self.assertEqual(len(traces),1)
self.assertEqual(traces[0][0],'requirement')
self.assertEqual(traces[0][1],'AC-1')
self.assertEqual(traces[0][1],'Dataset policy')
self.assertEqual(traces[0][2],'vulnerability')
self.assertEqual(traces[0][3],'Certificate ubiquity')

b.dbProxy.deleteTrace('requirement','AC-1','vulnerability','Certificate ubiquity')
b.dbProxy.deleteTrace('requirement','Dataset policy','vulnerability','Certificate ubiquity')
traces = b.dbProxy.removableTraces('Psychosis')
self.assertEqual(len(traces),0)
4 changes: 2 additions & 2 deletions cairis/test/test_TraceAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def setUp(self):
self.logger = logging.getLogger(__name__)
self.new_tr = Trace(
fObjt = 'requirement',
fName = 'AC-1',
fName = 'Dataset policy',
tObjt = 'vulnerability',
tName = 'Certificate ubiquity')
self.new_tr_dict = {
Expand Down Expand Up @@ -87,7 +87,7 @@ def test_post(self):

def test_delete(self):
method = 'test_delete'
rv = self.app.delete('/api/traces/from_type/requirement/from_name/AC-1/to_type/vulnerability/to_name/Certificate%20ubiquity?session_id=test', content_type='application/json')
rv = self.app.delete('/api/traces/from_type/requirement/from_name/Dataset%20policy/to_type/vulnerability/to_name/Certificate%20ubiquity?session_id=test', content_type='application/json')

self.logger.debug('[%s] Response data: %s', method, rv.data)
json_resp = json_deserialize(rv.data)
Expand Down

0 comments on commit 7c5e74a

Please sign in to comment.