public void SetUp() { _blacklistManager = new IDbCommandBlacklistManagerStub(); _methodPreConditions = new SymbolTable (_blacklistManager); _methodPreConditions.MakeSafe ("x", Fragment.CreateNamed("SqlFragment")); _methodPreConditions.MakeSafe ("l", Fragment.CreateLiteral()); _methodPreConditions.MakeUnsafe ("y"); _problemPipeStub = new ProblemPipeStub(); _methodGraphAnalyzer = new MethodGraphAnalyzer (_problemPipeStub); _mocks = new MockRepository(); _methodGraph = _mocks.Stub<IMethodGraph>(); _methodGraphBuilder = _mocks.Stub<IMethodGraphBuilder>(); _parameterSymbolTableBuilder = _mocks.Stub<IInitialSymbolTableBuilder>(); }
public void Parse_SinkPreconditionsViolatedInTwoBranches_ReturnsProblem() { List<AssignabilityPreCondition> preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) }; SymbolTable postConditions = new SymbolTable (_blacklistManager); List<int> successors = new List<int> { 1, 2 }; BasicBlock initialNode = new BasicBlock (0, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments); preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) }; postConditions = new SymbolTable (_blacklistManager); postConditions.MakeUnsafe("x"); successors = new List<int> { 3 }; BasicBlock firstBranch = new BasicBlock (1, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments); preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) }; postConditions = new SymbolTable (_blacklistManager); postConditions.MakeUnsafe("x"); successors = new List<int> { 3 }; BasicBlock secondBranch = new BasicBlock (2, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments); preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) }; postConditions = new SymbolTable (_blacklistManager); successors = new List<int>(); BasicBlock sink = new BasicBlock (3, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments); using (_mocks.Record()) { _methodGraph.IsEmpty(); LastCall.Return (false); SetupResult.For (_methodGraph.InitialBlock) .Return (initialNode); SetupResult.For(_methodGraph.Blocks) .Return(new BasicBlock[] { initialNode, firstBranch, secondBranch, sink }); _methodGraph.GetBasicBlockById (1); LastCall.Return (firstBranch); _methodGraph.GetBasicBlockById (2); LastCall.Return (secondBranch); _methodGraph.GetBasicBlockById (3); LastCall.Return (sink); _methodGraphBuilder.GetResult(); LastCall.Return (_methodGraph); _parameterSymbolTableBuilder.GetResult(); LastCall.Return(_methodPreConditions); } ProblemCollection result = ParseGraph(); Assert.That (TestHelper.ContainsProblemID (c_InjectionCopRuleId, result), Is.True); }