class State
The State
class is a container for both global and per-test state. The test framework keeps one global State
object (in $GLOBAL_STATE). A per-test State
object is created for each test. The per-test object inherits all the global state but can override values if needed. Values set in the per-test class are not persisted beyond the lifetime of a single test.
Attributes
vars[RW]
Public Class Methods
new(baseobj = nil)
click to toggle source
# File lib/State.rb, line 17 def initialize(baseobj = nil) @vars = Hash.new() @validations = Hash.new() @headers = Hash.new @headers['Content-Type'] = 'application/json' @headers['User-Agent'] = 'restest' @baseobj = baseobj end
Public Instance Methods
get(name)
click to toggle source
# File lib/State.rb, line 31 def get(name) if (@vars[name] != nil) return @vars[name] end if (@baseobj != nil) return @baseobj.get(name) end return nil end
headers(mix = nil)
click to toggle source
# File lib/State.rb, line 83 def headers(mix = nil) if (mix != nil) return @headers.merge(mix) else return @headers end end
set(name, value)
click to toggle source
# File lib/State.rb, line 47 def set(name, value) if (@baseobj != nil) @baseobj.set(name, value) else @vars[name] = value end end
set_in_test(name, value)
click to toggle source
# File lib/State.rb, line 69 def set_in_test(name, value) if (@baseobj != nil) @vars[name] = value else die("cannot set_in_test for top-level State (name=#{name}, value=#{value})") end end
set_validate(name, value)
click to toggle source
# File lib/State.rb, line 94 def set_validate(name, value) if (@baseobj != nil) @validations[name] =value else die("cannot set_validate for top-level State (name=#{name}, value=#{value})") end end
to_s()
click to toggle source
# File lib/State.rb, line 166 def to_s if (@baseobj == nil) s = "Base State: " @vars.each_key { |key| s += "#{key}='#{@vars[key]}' " } else s = "Test State: " @vars.each_key { |key| s += "#{key}='#{@vars[key]}' " } s += "(" + @baseobj.to_s + ")" end return s end
unset(name)
click to toggle source
# File lib/State.rb, line 58 def unset(name) if (@baseobj != nil) @baseobj.unset(name) else @vars.delete(name) end end
validate(result)
click to toggle source
# File lib/State.rb, line 108 def validate(result) @validations.each_key { |key| failed = false val = get(key) wanted = @validations[key] wanted =~ /(\S+) (.*)/ op = $1 target = $2 out(1, "validating: [#{key}]: want: [#{op} #{target}], got [#{val}]") if (op == "=") failed = true if (target != val.to_s) elsif (op == "<") failed = true if (val.to_i >= target.to_i) elsif (op == ">") failed = true if (val.to_i <= target.to_i) elsif (op == "is") if (target == "set") failed = true if (val == nil || val.length == 0) elsif (target == "unset") failed = true if (val != nil && val.length > 0) else die("unknown directive for operation 'is': #{target}") end else die("unknown validate operation #{op}") end if (failed) result.error("For [#{key}] expected [#{op} #{target}] but got [#{val}].") $VALIDATIONS_FAIL += 1 else $VALIDATIONS_OK += 1 end } # This is Proofpoint specific and should not be in this class. There's not a good place to put it right # now that doesn't involve copying multiple times, so put it here for now. if (result.code == "500") if (result.body != nil) begin json = JSON.parse(result.body) if (json != nil && json['host'] != nil && json['message'] != nil) result.add_message("Server: [#{json['host']}] said: [#{json['message']}])") end rescue end end end end