Parent

Class/Module Index [+]

Quicksearch

Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::WinConstManager::UnitTest

Public Instance Methods

test_add_const() click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb, line 59
def test_add_const
        target_key = 'VALID_KEY'
        target_value = 23

        const_manager = WinConstManager.new

        const_manager.add_const(target_key, target_value)

        assert_equal(target_value, const_manager.parse(target_key),
                "add_const should add a constant/value pair that can be trieved with parse")

end
test_initialization() click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb, line 72
def test_initialization
        target_key = 'VALID_KEY'
        target_value = 23

        const_manager = WinConstManager.new(target_key => target_value)

        assert_equal(target_value, const_manager.parse(target_key),
                "upon initialization, should add any provided constants.")
end
test_is_parseable() click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb, line 34
def test_is_parseable
        const_manager = WinConstManager.new

        first_key = 'SOME_NUMBER'
        second_key = 'SOME_OTHER_NUMBER'
        boolean_logic = first_key + ' | ' + second_key

        # XXX: Should check (un)parseability before adding constants too?

        const_manager.add_const(first_key, 43123)
        const_manager.add_const(second_key, 234)

        assert(const_manager.is_parseable(boolean_logic),
                "is_parseable should consider boolean logic statements parseable")

        assert(const_manager.is_parseable(first_key),
                "is_parseable should consider constants parseable")

        assert(! const_manager.is_parseable(5),
                "is_parseable should not consider non-string keys as parseable")

        assert(! const_manager.is_parseable('| FOO |'),
                "is_parseable should not consider malformed boolean expressions parseable")
end
test_parse() click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb, line 82
def test_parse
        target_key = 'VALID_KEY'
        target_value = 23
        invalid_key = 8

        const_manager = WinConstManager.new

        const_manager.add_const(target_key, target_value)

        assert_equal(target_value, const_manager.parse(target_key),
                "parse should retrieve the corresponding value when a key is provided")

        # From API: "should not throw an exception given an invalid key"
        assert_nothing_thrown do
                const_manager.parse(invalid_key)
        end

        assert_equal(nil, const_manager.parse(invalid_key),
                "parse should return nil when an invalid key is provided")

        x_key = 'X'
        x_value = 228
        y_key = 'Y'
        y_value = 15

        boolean_logic = x_key + ' | ' + y_key
        target_boolean_logic_result = x_value | y_value

        const_manager.add_const(x_key, x_value)
        const_manager.add_const(y_key, y_value)

        assert_equal(target_boolean_logic_result, const_manager.parse(boolean_logic),
                "parse should evaluate boolean expressions consisting of OR")
end
test_select_const_names() click to toggle source
# File lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb, line 15
def test_select_const_names
        const_manager = WinConstManager.new

        names = %(W WW WWW)

        names.each do |name|
                const_manager.add_const(name, 23)
        end

        assert(const_manager.select_const_names(23).sort == names,
                'select_const_names should return all names for given value')

        const_manager.add_const('Skidoo!', 23)

        assert(const_manager.select_const_names(23, /^\w{1,3}$/).sort == names,
                'select_const_names should filter names with provided regex')
        
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.