msf_matchers.rb 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. $:.unshift(File.join((File.dirname(__FILE__))))
  2. require 'regexr'
  3. module MsfTest
  4. module MsfMatchers
  5. class ContainACompleteTest
  6. def initialize()
  7. @r = Regexr.new(true)
  8. end
  9. def matches?(data)
  10. @data = data
  11. return @r.verify_start_and_end(@data, "meterpreter_functional_test_start", "meterpreter_functional_test_end")
  12. end
  13. def failure_message
  14. "Beginning or end was incorrect."
  15. end
  16. def negative_failure_message
  17. "Expected to find a no beginning or end, but it matched."
  18. end
  19. end
  20. def contain_a_complete_test
  21. ContainACompleteTest.new
  22. end
  23. class ContainAllSuccesses
  24. def initialize(successes = [])
  25. @successes = successes
  26. @r = Regexr.new(true)
  27. end
  28. def matches?(data)
  29. @data = data
  30. @string = @r.find_strings_that_dont_exist_in_data(@data, @successes)
  31. return true if !@string
  32. nil
  33. end
  34. def failure_message
  35. "expected all successes, but didn't find '#{@string}'"
  36. end
  37. def negative_failure_message
  38. "expected to miss successes but found'm all :("
  39. end
  40. # alias :have_all_successes :contain_all_successes
  41. end
  42. def contain_all_successes(successes = [])
  43. ContainAllSuccesses.new(successes)
  44. end
  45. class ContainNoFailuresExcept
  46. def initialize(failures = [], exceptions = [])
  47. @failures = failures
  48. @exceptions = exceptions
  49. @r = Regexr.new(true)
  50. end
  51. def matches?(data)
  52. @data = data
  53. @string = @r.find_strings_that_exist_in_data_except(@data, @failures, @exceptions)
  54. return true if !@string
  55. nil
  56. end
  57. def failure_message
  58. "expected no failure to be found, but found this: '#{@string}'"
  59. end
  60. def negative_falure_message
  61. "expected to find failures, but didn't find any :("
  62. end
  63. # alias :have_no_failures :contain_no_failures
  64. end
  65. def contain_no_failures_except(failures = [], exceptions = [])
  66. ContainNoFailuresExcept.new(failures, exceptions)
  67. end
  68. end
  69. end