opensrs 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/console +10 -0
- data/bin/setup +7 -0
- data/lib/opensrs.rb +6 -6
- data/lib/opensrs/response.rb +13 -11
- data/lib/opensrs/server.rb +5 -6
- data/lib/opensrs/version.rb +1 -3
- data/lib/opensrs/xml_processor.rb +0 -2
- data/lib/opensrs/xml_processor/libxml.rb +52 -45
- data/lib/opensrs/xml_processor/nokogiri.rb +43 -41
- data/opensrs.gemspec +9 -11
- metadata +28 -22
- data/spec/opensrs/server_spec.rb +0 -139
- data/spec/opensrs/version_spec.rb +0 -7
- data/spec/opensrs/xml_processor/libxml_spec.rb +0 -253
- data/spec/opensrs/xml_processor/nokogiri_spec.rb +0 -246
- data/spec/spec_helper.rb +0 -23
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 859e3e67b33ab3a4c5f7c071531a409e16048650
         | 
| 4 | 
            +
              data.tar.gz: ca25ef41d7a29a3f8bd1b491a022c4af1135caf1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 783c86e4637b6f6ba6f4c12e4519118e42e3c4e700c2ccf2ad702021ebe569d3a62e419f167827e74176ea1b2892cbd78d6768fcf94f73ee88c4fd8180d093ed
         | 
| 7 | 
            +
              data.tar.gz: 8d271520d7d262eb3c11cf5645d3849e1f03ebfcf727fe4c1f2043d800a9dfdac745dd7d4f7b04d6d2fd9152daa05f7d1c630ade248d6a8f32c6b12b07916503
         | 
    
        data/bin/console
    ADDED
    
    
    
        data/bin/setup
    ADDED
    
    
    
        data/lib/opensrs.rb
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 1 | 
            +
            require "opensrs/xml_processor"
         | 
| 2 | 
            +
            require "opensrs/xml_processor/libxml"
         | 
| 3 | 
            +
            require "opensrs/server"
         | 
| 4 | 
            +
            require "opensrs/response"
         | 
| 5 | 
            +
            require "opensrs/version"
         | 
| 6 6 |  | 
| 7 7 | 
             
            module OpenSRS
         | 
| 8 | 
            -
            end
         | 
| 8 | 
            +
            end
         | 
    
        data/lib/opensrs/response.rb
    CHANGED
    
    | @@ -2,28 +2,30 @@ module OpenSRS | |
| 2 2 | 
             
              class Response
         | 
| 3 3 | 
             
                attr_reader :request_xml, :response_xml
         | 
| 4 4 | 
             
                attr_accessor :response, :success
         | 
| 5 | 
            -
             | 
| 5 | 
            +
             | 
| 6 6 | 
             
                def initialize(parsed_response, request_xml, response_xml)
         | 
| 7 7 | 
             
                  @response     = parsed_response
         | 
| 8 8 | 
             
                  @request_xml  = request_xml
         | 
| 9 9 | 
             
                  @response_xml = response_xml
         | 
| 10 10 | 
             
                  @success      = success?
         | 
| 11 11 | 
             
                end
         | 
| 12 | 
            -
             | 
| 12 | 
            +
             | 
| 13 13 | 
             
                # We need to return the error message unless the
         | 
| 14 14 | 
             
                # response is successful.
         | 
| 15 15 | 
             
                def errors
         | 
| 16 | 
            -
                   | 
| 17 | 
            -
                     | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
                    end
         | 
| 16 | 
            +
                  unless success?
         | 
| 17 | 
            +
                    msg  = @response["response_text"]
         | 
| 18 | 
            +
                    code = @response["response_code"]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    return msg && code ? "#{msg} (Code #{code})" : "Unknown error"
         | 
| 22 21 | 
             
                  end
         | 
| 23 22 | 
             
                end
         | 
| 24 | 
            -
             | 
| 23 | 
            +
             | 
| 24 | 
            +
                # If 'is_success' is returned, the API is letting us know that they
         | 
| 25 | 
            +
                # will explicitly tell us whether something has succeeded or not.
         | 
| 26 | 
            +
                # Otherwise, just assume it is successful.
         | 
| 25 27 | 
             
                def success?
         | 
| 26 | 
            -
                  response["is_success"]  | 
| 28 | 
            +
                  @response["is_success"] && @response["is_success"] == "1" ? true : false
         | 
| 27 29 | 
             
                end
         | 
| 28 30 | 
             
              end
         | 
| 29 | 
            -
            end
         | 
| 31 | 
            +
            end
         | 
    
        data/lib/opensrs/server.rb
    CHANGED
    
    | @@ -19,7 +19,7 @@ module OpenSRS | |
| 19 19 | 
             
                  @password = options[:password]
         | 
| 20 20 | 
             
                  @key      = options[:key]
         | 
| 21 21 | 
             
                  @timeout  = options[:timeout]
         | 
| 22 | 
            -
                  @open_timeout | 
| 22 | 
            +
                  @open_timeout = options[:open_timeout]
         | 
| 23 23 | 
             
                  @logger   = options[:logger]
         | 
| 24 24 | 
             
                end
         | 
| 25 25 |  | 
| @@ -47,7 +47,7 @@ module OpenSRS | |
| 47 47 | 
             
                end
         | 
| 48 48 |  | 
| 49 49 | 
             
                def self.xml_processor=(name)
         | 
| 50 | 
            -
                  require  | 
| 50 | 
            +
                  require "opensrs/xml_processor/#{name.to_s.downcase}"
         | 
| 51 51 | 
             
                  @@xml_processor = OpenSRS::XmlProcessor.const_get("#{name.to_s.capitalize}")
         | 
| 52 52 | 
             
                end
         | 
| 53 53 |  | 
| @@ -56,7 +56,8 @@ module OpenSRS | |
| 56 56 | 
             
                private
         | 
| 57 57 |  | 
| 58 58 | 
             
                def headers(request)
         | 
| 59 | 
            -
                  { | 
| 59 | 
            +
                  {
         | 
| 60 | 
            +
                    "Content-Length"  => request.length.to_s,
         | 
| 60 61 | 
             
                    "Content-Type"    => "text/xml",
         | 
| 61 62 | 
             
                    "X-Username"      => username,
         | 
| 62 63 | 
             
                    "X-Signature"     => signature(request)
         | 
| @@ -64,9 +65,7 @@ module OpenSRS | |
| 64 65 | 
             
                end
         | 
| 65 66 |  | 
| 66 67 | 
             
                def signature(request)
         | 
| 67 | 
            -
                   | 
| 68 | 
            -
                  signature = Digest::MD5.hexdigest(signature + key)
         | 
| 69 | 
            -
                  signature
         | 
| 68 | 
            +
                  Digest::MD5.hexdigest(Digest::MD5.hexdigest(request + key) + key)
         | 
| 70 69 | 
             
                end
         | 
| 71 70 |  | 
| 72 71 | 
             
                def http
         | 
    
        data/lib/opensrs/version.rb
    CHANGED
    
    
| @@ -1,60 +1,67 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              require 'libxml'
         | 
| 3 | 
            +
            rescue LoadError => e
         | 
| 4 | 
            +
              $stderr.puts "Cannot find `libxml` gem. Please install it before using it as the XML processor"
         | 
| 5 | 
            +
              raise e
         | 
| 6 | 
            +
            end
         | 
| 2 7 |  | 
| 3 8 | 
             
            module OpenSRS
         | 
| 4 | 
            -
              class XmlProcessor | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 7 | 
            -
                # First, builds REXML elements for the inputted data. Then, it will
         | 
| 8 | 
            -
                # go ahead and build the entire XML document to send to OpenSRS.
         | 
| 9 | 
            -
                def self.build(data)
         | 
| 10 | 
            -
                  xml = Document.new
         | 
| 11 | 
            -
                  xml.root = envelope = Node.new("OPS_envelope")
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  envelope << header = Node.new("header")
         | 
| 14 | 
            -
                  envelope << body = Node.new("body")
         | 
| 15 | 
            -
                  header   << Node.new("version", "0.9")
         | 
| 16 | 
            -
                  body     << data_block = Node.new("data_block")
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  data_block << encode_data(data, data_block)
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  return xml.to_s
         | 
| 21 | 
            -
                end
         | 
| 9 | 
            +
              class XmlProcessor
         | 
| 10 | 
            +
                class Libxml < OpenSRS::XmlProcessor
         | 
| 11 | 
            +
                  include ::LibXML::XML
         | 
| 22 12 |  | 
| 23 | 
            -
             | 
| 13 | 
            +
                  # First, builds REXML elements for the inputted data. Then, it will
         | 
| 14 | 
            +
                  # go ahead and build the entire XML document to send to OpenSRS.
         | 
| 15 | 
            +
                  def self.build(data)
         | 
| 16 | 
            +
                    xml = Document.new
         | 
| 17 | 
            +
                    xml.root = envelope = Node.new("OPS_envelope")
         | 
| 24 18 |  | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 19 | 
            +
                    envelope << header = Node.new("header")
         | 
| 20 | 
            +
                    envelope << body = Node.new("body")
         | 
| 21 | 
            +
                    header   << Node.new("version", "0.9")
         | 
| 22 | 
            +
                    body     << data_block = Node.new("data_block")
         | 
| 29 23 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
                  dt_array = []
         | 
| 24 | 
            +
                    data_block << encode_data(data, data_block)
         | 
| 32 25 |  | 
| 33 | 
            -
             | 
| 34 | 
            -
                    next if item.empty?
         | 
| 35 | 
            -
                    dt_array[item.attributes["key"].to_i] = decode_data(item)
         | 
| 26 | 
            +
                    return xml.to_s
         | 
| 36 27 | 
             
                  end
         | 
| 37 28 |  | 
| 38 | 
            -
                   | 
| 39 | 
            -
                end
         | 
| 29 | 
            +
                  protected
         | 
| 40 30 |  | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 31 | 
            +
                  def self.data_block_element(response)
         | 
| 32 | 
            +
                    doc = Parser.string(response).parse
         | 
| 33 | 
            +
                    return doc.find("//OPS_envelope/body/data_block/*")
         | 
| 34 | 
            +
                  end
         | 
| 43 35 |  | 
| 44 | 
            -
                  element | 
| 45 | 
            -
                     | 
| 46 | 
            -
             | 
| 36 | 
            +
                  def self.decode_dt_array_data(element)
         | 
| 37 | 
            +
                    dt_array = []
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    element.children.each do |item|
         | 
| 40 | 
            +
                      next if item.empty?
         | 
| 41 | 
            +
                      dt_array[item.attributes["key"].to_i] = decode_data(item)
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    return dt_array
         | 
| 47 45 | 
             
                  end
         | 
| 48 46 |  | 
| 49 | 
            -
                   | 
| 50 | 
            -
             | 
| 47 | 
            +
                  def self.decode_dt_assoc_data(element)
         | 
| 48 | 
            +
                    dt_assoc = {}
         | 
| 51 49 |  | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 50 | 
            +
                    element.children.each do |item|
         | 
| 51 | 
            +
                      next if item.content.strip.empty?
         | 
| 52 | 
            +
                      dt_assoc[item.attributes["key"]] = decode_data(item)
         | 
| 53 | 
            +
                    end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                    return dt_assoc
         | 
| 56 | 
            +
                  end
         | 
| 58 57 |  | 
| 58 | 
            +
                  # Accepts two parameters but uses only one; to keep the interface same as other xml parser classes
         | 
| 59 | 
            +
                  # Is that a side effect of Template pattern?
         | 
| 60 | 
            +
                  #
         | 
| 61 | 
            +
                  def self.new_element(element_name, container)
         | 
| 62 | 
            +
                    return Node.new(element_name.to_s)
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                end
         | 
| 59 66 | 
             
              end
         | 
| 60 | 
            -
            end
         | 
| 67 | 
            +
            end
         | 
| @@ -1,64 +1,66 @@ | |
| 1 1 | 
             
            begin
         | 
| 2 2 | 
             
              require 'nokogiri'
         | 
| 3 3 | 
             
            rescue LoadError => e
         | 
| 4 | 
            -
              $stderr.puts "Cannot find  | 
| 4 | 
            +
              $stderr.puts "Cannot find `nokogiri` gem. Please install it before using it as the XML processor"
         | 
| 5 5 | 
             
              raise e
         | 
| 6 6 | 
             
            end
         | 
| 7 7 |  | 
| 8 8 | 
             
            module OpenSRS
         | 
| 9 | 
            -
              class XmlProcessor | 
| 9 | 
            +
              class XmlProcessor
         | 
| 10 | 
            +
                class Nokogiri < OpenSRS::XmlProcessor
         | 
| 10 11 |  | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 12 | 
            +
                  def self.build(data)
         | 
| 13 | 
            +
                    builder = ::Nokogiri::XML::Builder.new
         | 
| 13 14 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 15 | 
            +
                    envelope   = ::Nokogiri::XML::Node.new("OPS_envelope", builder.doc)
         | 
| 16 | 
            +
                    header     = ::Nokogiri::XML::Node.new("header", builder.doc)
         | 
| 17 | 
            +
                    version    = ::Nokogiri::XML::Node.new("version", builder.doc)
         | 
| 18 | 
            +
                    body       = ::Nokogiri::XML::Node.new("body", builder.doc)
         | 
| 19 | 
            +
                    data_block = ::Nokogiri::XML::Node.new("data_block", builder.doc)
         | 
| 20 | 
            +
                    other_data = encode_data(data, builder.doc)
         | 
| 21 | 
            +
                    version << '0.9'
         | 
| 22 | 
            +
                    header << version
         | 
| 23 | 
            +
                    envelope << header
         | 
| 24 | 
            +
                    builder.doc << envelope
         | 
| 25 | 
            +
                    data_block << other_data
         | 
| 26 | 
            +
                    body << data_block
         | 
| 27 | 
            +
                    envelope << body
         | 
| 28 | 
            +
                    return builder.to_xml
         | 
| 29 | 
            +
                  end
         | 
| 29 30 |  | 
| 30 | 
            -
             | 
| 31 | 
            +
                  protected
         | 
| 31 32 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 33 | 
            +
                  def self.data_block_element(response)
         | 
| 34 | 
            +
                    doc = ::Nokogiri::XML(response)
         | 
| 35 | 
            +
                    return doc.xpath('//OPS_envelope/body/data_block/*')
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  def self.decode_dt_array_data(element)
         | 
| 39 | 
            +
                    dt_array = []
         | 
| 36 40 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 41 | 
            +
                    element.children.each do |item|
         | 
| 42 | 
            +
                      next if item.content.strip.empty?
         | 
| 43 | 
            +
                      dt_array[item.attributes["key"].value.to_i] = decode_data(item.children)
         | 
| 44 | 
            +
                    end
         | 
| 39 45 |  | 
| 40 | 
            -
             | 
| 41 | 
            -
                    next if item.content.strip.empty?
         | 
| 42 | 
            -
                    dt_array[item.attributes["key"].value.to_i] = decode_data(item.children)
         | 
| 46 | 
            +
                    return dt_array
         | 
| 43 47 | 
             
                  end
         | 
| 44 48 |  | 
| 45 | 
            -
                   | 
| 46 | 
            -
             | 
| 49 | 
            +
                  def self.decode_dt_assoc_data(element)
         | 
| 50 | 
            +
                    dt_assoc = {}
         | 
| 47 51 |  | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 52 | 
            +
                    element.children.each do |item|
         | 
| 53 | 
            +
                      next if item.content.strip.empty?
         | 
| 54 | 
            +
                      dt_assoc[item.attributes["key"].value] = decode_data(item.children)
         | 
| 55 | 
            +
                    end
         | 
| 50 56 |  | 
| 51 | 
            -
             | 
| 52 | 
            -
                    next if item.content.strip.empty?
         | 
| 53 | 
            -
                    dt_assoc[item.attributes["key"].value] = decode_data(item.children)
         | 
| 57 | 
            +
                    return dt_assoc
         | 
| 54 58 | 
             
                  end
         | 
| 55 59 |  | 
| 56 | 
            -
                   | 
| 57 | 
            -
             | 
| 60 | 
            +
                  def self.new_element(element_name, container)
         | 
| 61 | 
            +
                    return ::Nokogiri::XML::Node.new(element_name.to_s, container)
         | 
| 62 | 
            +
                  end
         | 
| 58 63 |  | 
| 59 | 
            -
                def self.new_element(element_name, container)
         | 
| 60 | 
            -
                  return ::Nokogiri::XML::Node.new(element_name.to_s, container)
         | 
| 61 64 | 
             
                end
         | 
| 62 | 
            -
             | 
| 63 65 | 
             
              end
         | 
| 64 66 | 
             
            end
         | 
    
        data/opensrs.gemspec
    CHANGED
    
    | @@ -1,15 +1,12 @@ | |
| 1 1 | 
             
            # coding: utf-8
         | 
| 2 | 
            -
             | 
| 3 2 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 4 | 
            -
             | 
| 5 3 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            require 'opensrs/version'
         | 
| 4 | 
            +
            require "opensrs/version"
         | 
| 8 5 |  | 
| 9 6 | 
             
            Gem::Specification.new do |spec|
         | 
| 10 7 |  | 
| 11 8 | 
             
              spec.name          = "opensrs"
         | 
| 12 | 
            -
              spec.version       = OpenSRS:: | 
| 9 | 
            +
              spec.version       = OpenSRS::VERSION
         | 
| 13 10 | 
             
              spec.authors       = [ "Joshua Delsman" ]
         | 
| 14 11 | 
             
              spec.email         = [ "j@srv.im" ]
         | 
| 15 12 | 
             
              spec.summary       = "OpenSRS API for Ruby"
         | 
| @@ -17,17 +14,18 @@ Gem::Specification.new do |spec| | |
| 17 14 | 
             
              spec.homepage      = "https://github.com/voxxit/opensrs"
         | 
| 18 15 | 
             
              spec.license       = "MIT"
         | 
| 19 16 |  | 
| 20 | 
            -
              spec.files         = `git ls-files -z`.split("\x0")
         | 
| 21 | 
            -
              spec. | 
| 22 | 
            -
              spec. | 
| 23 | 
            -
              spec.require_paths = [ | 
| 17 | 
            +
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 18 | 
            +
              spec.bindir        = "exe"
         | 
| 19 | 
            +
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 20 | 
            +
              spec.require_paths = ["lib"]
         | 
| 24 21 |  | 
| 25 22 | 
             
              spec.add_runtime_dependency "libxml-ruby", "~> 2"
         | 
| 26 23 |  | 
| 27 | 
            -
              spec.add_development_dependency "bundler" | 
| 24 | 
            +
              spec.add_development_dependency "bundler"
         | 
| 28 25 | 
             
              spec.add_development_dependency "rake"
         | 
| 29 | 
            -
              spec.add_development_dependency "rspec" | 
| 26 | 
            +
              spec.add_development_dependency "rspec"
         | 
| 30 27 | 
             
              spec.add_development_dependency "shoulda"
         | 
| 31 28 | 
             
              spec.add_development_dependency "nokogiri"
         | 
| 29 | 
            +
              spec.add_development_dependency "pry"
         | 
| 32 30 |  | 
| 33 31 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: opensrs
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Joshua Delsman
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 | 
            -
            bindir:  | 
| 9 | 
            +
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-05-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: libxml-ruby
         | 
| @@ -28,16 +28,16 @@ dependencies: | |
| 28 28 | 
             
              name: bundler
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: ' | 
| 33 | 
            +
                    version: '0'
         | 
| 34 34 | 
             
              type: :development
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 38 | 
            +
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: ' | 
| 40 | 
            +
                    version: '0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: rake
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -56,16 +56,16 @@ dependencies: | |
| 56 56 | 
             
              name: rspec
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - - " | 
| 59 | 
            +
                - - ">="
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '0'
         | 
| 62 62 | 
             
              type: :development
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - - " | 
| 66 | 
            +
                - - ">="
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '0'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: shoulda
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -94,6 +94,20 @@ dependencies: | |
| 94 94 | 
             
                - - ">="
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 96 | 
             
                    version: '0'
         | 
| 97 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            +
              name: pry
         | 
| 99 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            +
                requirements:
         | 
| 101 | 
            +
                - - ">="
         | 
| 102 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            +
                    version: '0'
         | 
| 104 | 
            +
              type: :development
         | 
| 105 | 
            +
              prerelease: false
         | 
| 106 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            +
                requirements:
         | 
| 108 | 
            +
                - - ">="
         | 
| 109 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            +
                    version: '0'
         | 
| 97 111 | 
             
            description: Provides support to utilize the OpenSRS API with Ruby.
         | 
| 98 112 | 
             
            email:
         | 
| 99 113 | 
             
            - j@srv.im
         | 
| @@ -109,6 +123,8 @@ files: | |
| 109 123 | 
             
            - LICENSE.txt
         | 
| 110 124 | 
             
            - README.md
         | 
| 111 125 | 
             
            - Rakefile
         | 
| 126 | 
            +
            - bin/console
         | 
| 127 | 
            +
            - bin/setup
         | 
| 112 128 | 
             
            - lib/opensrs.rb
         | 
| 113 129 | 
             
            - lib/opensrs/response.rb
         | 
| 114 130 | 
             
            - lib/opensrs/server.rb
         | 
| @@ -117,11 +133,6 @@ files: | |
| 117 133 | 
             
            - lib/opensrs/xml_processor/libxml.rb
         | 
| 118 134 | 
             
            - lib/opensrs/xml_processor/nokogiri.rb
         | 
| 119 135 | 
             
            - opensrs.gemspec
         | 
| 120 | 
            -
            - spec/opensrs/server_spec.rb
         | 
| 121 | 
            -
            - spec/opensrs/version_spec.rb
         | 
| 122 | 
            -
            - spec/opensrs/xml_processor/libxml_spec.rb
         | 
| 123 | 
            -
            - spec/opensrs/xml_processor/nokogiri_spec.rb
         | 
| 124 | 
            -
            - spec/spec_helper.rb
         | 
| 125 136 | 
             
            homepage: https://github.com/voxxit/opensrs
         | 
| 126 137 | 
             
            licenses:
         | 
| 127 138 | 
             
            - MIT
         | 
| @@ -146,9 +157,4 @@ rubygems_version: 2.4.5 | |
| 146 157 | 
             
            signing_key: 
         | 
| 147 158 | 
             
            specification_version: 4
         | 
| 148 159 | 
             
            summary: OpenSRS API for Ruby
         | 
| 149 | 
            -
            test_files:
         | 
| 150 | 
            -
            - spec/opensrs/server_spec.rb
         | 
| 151 | 
            -
            - spec/opensrs/version_spec.rb
         | 
| 152 | 
            -
            - spec/opensrs/xml_processor/libxml_spec.rb
         | 
| 153 | 
            -
            - spec/opensrs/xml_processor/nokogiri_spec.rb
         | 
| 154 | 
            -
            - spec/spec_helper.rb
         | 
| 160 | 
            +
            test_files: []
         | 
    
        data/spec/opensrs/server_spec.rb
    DELETED
    
    | @@ -1,139 +0,0 @@ | |
| 1 | 
            -
            describe OpenSRS::Server do
         | 
| 2 | 
            -
              let(:server) { OpenSRS::Server.new }
         | 
| 3 | 
            -
             | 
| 4 | 
            -
              describe '#new' do
         | 
| 5 | 
            -
                it 'allows timeouts to be set' do
         | 
| 6 | 
            -
                  server = OpenSRS::Server.new({ :timeout => 90 })
         | 
| 7 | 
            -
                  server.timeout.should == 90
         | 
| 8 | 
            -
                  server.open_timeout.should be_nil
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                it 'allows open timeouts to be set' do
         | 
| 12 | 
            -
                  server = OpenSRS::Server.new({ :timeout => 90, :open_timeout => 10 })
         | 
| 13 | 
            -
                  server.timeout.should eq(90)
         | 
| 14 | 
            -
                  server.open_timeout.should eq(10)
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                it 'leaves it up to Net::HTTP if no timeouts given' do
         | 
| 18 | 
            -
                  server.timeout.should be_nil
         | 
| 19 | 
            -
                  server.open_timeout.should be_nil
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                it 'allows a logger to be set during initialization' do
         | 
| 23 | 
            -
                  logger = double(:info => '')
         | 
| 24 | 
            -
                  server = OpenSRS::Server.new({ :logger => logger })
         | 
| 25 | 
            -
                  server.logger.should eq(logger)
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              describe ".call" do
         | 
| 30 | 
            -
                let(:response) { double(:body => 'some response') }
         | 
| 31 | 
            -
                let(:header) { {"some" => "header" } }
         | 
| 32 | 
            -
                let(:xml) { '<some xml></some xml>' }
         | 
| 33 | 
            -
                let(:response_xml) { xml }
         | 
| 34 | 
            -
                let(:xml_processor) { double OpenSRS::XmlProcessor }
         | 
| 35 | 
            -
                let(:http) { double(Net::HTTP, :use_ssl= => true, :verify_mode= => true)  }
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                before :each do
         | 
| 38 | 
            -
                  server.stub(:headers).and_return header
         | 
| 39 | 
            -
                  xml_processor.stub(:build).and_return xml
         | 
| 40 | 
            -
                  xml_processor.stub(:parse).and_return response_xml
         | 
| 41 | 
            -
                  server.stub(:xml_processor).and_return xml_processor
         | 
| 42 | 
            -
                  http.stub(:post).and_return response
         | 
| 43 | 
            -
                  Net::HTTP.stub(:new).and_return http
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                it "builds XML request" do
         | 
| 47 | 
            -
                  xml_processor.should_receive(:build).with(:protocol => "XCP", :some => 'option')
         | 
| 48 | 
            -
                  server.call(:some => 'option')
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                it "posts to given path" do
         | 
| 52 | 
            -
                  server.server = URI.parse 'http://with-path.com/endpoint'
         | 
| 53 | 
            -
                  http.should_receive(:post).with('/endpoint', xml, header).and_return double.as_null_object
         | 
| 54 | 
            -
                  server.call
         | 
| 55 | 
            -
                end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                it "parses the response" do
         | 
| 58 | 
            -
                  xml_processor.should_receive(:parse).with(response.body)
         | 
| 59 | 
            -
                  server.call(:some => 'option')
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                it "posts to root path" do
         | 
| 63 | 
            -
                  server.server = URI.parse 'http://root-path.com/'
         | 
| 64 | 
            -
                  http.should_receive(:post).with('/', xml, header).and_return double.as_null_object
         | 
| 65 | 
            -
                  server.call
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                it "defaults path to '/'" do
         | 
| 69 | 
            -
                  server.server = URI.parse 'http://no-path.com'
         | 
| 70 | 
            -
                  http.should_receive(:post).with('/', xml, header).and_return double.as_null_object
         | 
| 71 | 
            -
                  server.call
         | 
| 72 | 
            -
                end
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                it 'allows overriding of default (Net:HTTP) timeouts' do
         | 
| 75 | 
            -
                  server.timeout = 90
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                  http.should_receive(:open_timeout=).with(90)
         | 
| 78 | 
            -
                  http.should_receive(:read_timeout=).with(90)
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  server.call( { :some => 'data' } )
         | 
| 81 | 
            -
                end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                it 'allows overriding of default (Net:HTTP) timeouts' do
         | 
| 84 | 
            -
                  server.timeout = 180
         | 
| 85 | 
            -
                  server.open_timeout = 30
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                  http.should_receive(:read_timeout=).with(180)
         | 
| 88 | 
            -
                  http.should_receive(:open_timeout=).with(180)
         | 
| 89 | 
            -
                  http.should_receive(:open_timeout=).with(30)
         | 
| 90 | 
            -
             | 
| 91 | 
            -
                  server.call( { :some => 'data' } )
         | 
| 92 | 
            -
                end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                it 're-raises Net:HTTP timeouts' do
         | 
| 95 | 
            -
                  http.should_receive(:post).and_raise err = Timeout::Error.new('test')
         | 
| 96 | 
            -
                  expect { server.call }.to raise_exception OpenSRS::TimeoutError
         | 
| 97 | 
            -
                end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                it 'wraps connection errors' do
         | 
| 100 | 
            -
                  http.should_receive(:post).and_raise err = Errno::ECONNREFUSED
         | 
| 101 | 
            -
                  expect { server.call }.to raise_exception OpenSRS::ConnectionError
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                  http.should_receive(:post).and_raise err = Errno::ECONNRESET
         | 
| 104 | 
            -
                  expect { server.call }.to raise_exception OpenSRS::ConnectionError
         | 
| 105 | 
            -
                end
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                describe "logger is present" do
         | 
| 108 | 
            -
                  let(:logger) { OpenSRS::TestLogger.new }
         | 
| 109 | 
            -
                  before :each do
         | 
| 110 | 
            -
                    server.logger = logger
         | 
| 111 | 
            -
                  end
         | 
| 112 | 
            -
             | 
| 113 | 
            -
                  it "should log the request and the response" do
         | 
| 114 | 
            -
                    xml_processor.should_receive(:build).with(:protocol => "XCP", :some => 'option')
         | 
| 115 | 
            -
                    server.call(:some => 'option')
         | 
| 116 | 
            -
                    logger.messages.length.should eq(2)
         | 
| 117 | 
            -
                    logger.messages.first.should match(/\[OpenSRS\] Request XML/)
         | 
| 118 | 
            -
                    logger.messages.first.should match(/<some xml>/)
         | 
| 119 | 
            -
                    logger.messages.last.should match(/\[OpenSRS\] Response XML/)
         | 
| 120 | 
            -
                    logger.messages.last.should match(/some response/)
         | 
| 121 | 
            -
                  end
         | 
| 122 | 
            -
             | 
| 123 | 
            -
                end
         | 
| 124 | 
            -
              end
         | 
| 125 | 
            -
             | 
| 126 | 
            -
              describe "#test xml processor" do
         | 
| 127 | 
            -
                context "on class initialization" do
         | 
| 128 | 
            -
                  it { server.xml_processor.should eql(OpenSRS::XmlProcessor::Libxml) }
         | 
| 129 | 
            -
                end
         | 
| 130 | 
            -
             | 
| 131 | 
            -
                context "on changing xml processor" do
         | 
| 132 | 
            -
                  before(:each) do
         | 
| 133 | 
            -
                    OpenSRS::Server.xml_processor = :nokogiri
         | 
| 134 | 
            -
                  end
         | 
| 135 | 
            -
             | 
| 136 | 
            -
                  it { server.xml_processor.should eql(OpenSRS::XmlProcessor::Nokogiri) }
         | 
| 137 | 
            -
                end
         | 
| 138 | 
            -
              end
         | 
| 139 | 
            -
            end
         | 
| @@ -1,253 +0,0 @@ | |
| 1 | 
            -
            require 'date'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe OpenSRS::XmlProcessor::Libxml do
         | 
| 4 | 
            -
              describe ".build" do
         | 
| 5 | 
            -
                it "should create XML for a nested hash" do
         | 
| 6 | 
            -
                  attributes = {:foo => {:bar => 'baz'}}
         | 
| 7 | 
            -
                  xml = OpenSRS::XmlProcessor::Libxml.build(attributes)
         | 
| 8 | 
            -
                  xml.should eq %{<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<OPS_envelope>\n  <header>\n    <version>0.9</version>\n  </header>\n  <body>\n    <data_block>\n      <dt_assoc>\n        <item key=\"foo\">\n          <dt_assoc>\n            <item key=\"bar\">baz</item>\n          </dt_assoc>\n        </item>\n      </dt_assoc>\n    </data_block>\n  </body>\n</OPS_envelope>\n}
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              describe '.encode_data' do
         | 
| 13 | 
            -
                context "on a 3 element array" do
         | 
| 14 | 
            -
                  before(:each) do
         | 
| 15 | 
            -
                    @e = OpenSRS::XmlProcessor::Libxml.encode_data([1,2,3])
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  it "is a REXML::Element" do
         | 
| 19 | 
            -
                    @e.should be_an_instance_of(LibXML::XML::Node)
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  it "is a dt_array" do
         | 
| 23 | 
            -
                    @e.name.should == 'dt_array'
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  it "has 3 children all called <item>" do
         | 
| 27 | 
            -
                    @e.should have(3).children
         | 
| 28 | 
            -
                    @e.children[0].name.should == "item"
         | 
| 29 | 
            -
                    @e.children[1].name.should == "item"
         | 
| 30 | 
            -
                    @e.children[2].name.should == "item"
         | 
| 31 | 
            -
                  end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                  it "has children with keys 0, 1 and 2" do
         | 
| 34 | 
            -
                    @e.children[0].attributes["key"].should == "0"
         | 
| 35 | 
            -
                    @e.children[1].attributes["key"].should == "1"
         | 
| 36 | 
            -
                    @e.children[2].attributes["key"].should == "2"
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                context "on a hash" do
         | 
| 41 | 
            -
                  before(:each) do
         | 
| 42 | 
            -
                    @e = OpenSRS::XmlProcessor::Libxml.encode_data({:name => "kitteh"})
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                  it "is a REXML::Element" do
         | 
| 46 | 
            -
                    @e.should be_an_instance_of(LibXML::XML::Node)
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                  it "is a dt_assoc" do
         | 
| 50 | 
            -
                    @e.name.should == 'dt_assoc'
         | 
| 51 | 
            -
                  end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                  it "has an <item> child with the right key" do
         | 
| 54 | 
            -
                    @e.should have(1).children
         | 
| 55 | 
            -
                    @e.children[0].name.should == 'item'
         | 
| 56 | 
            -
                    @e.children[0].attributes["key"].should == 'name'
         | 
| 57 | 
            -
                  end
         | 
| 58 | 
            -
                end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                context "on a nested hash" do
         | 
| 61 | 
            -
                  before(:each) do
         | 
| 62 | 
            -
                    @e = OpenSRS::XmlProcessor::Libxml.encode_data({:suggestion => {:maximum => "10"}})
         | 
| 63 | 
            -
                  end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                  it "is a REXML::Element" do
         | 
| 66 | 
            -
                    @e.should be_an_instance_of(LibXML::XML::Node)
         | 
| 67 | 
            -
                  end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                  it "is a dt_assoc" do
         | 
| 70 | 
            -
                    @e.name.should == 'dt_assoc'
         | 
| 71 | 
            -
                  end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                  it "has an <item> child with the correct children" do
         | 
| 74 | 
            -
                    @e.should have(1).children
         | 
| 75 | 
            -
                    suggestion = @e.children[0]
         | 
| 76 | 
            -
                    suggestion.name.should == 'item'
         | 
| 77 | 
            -
                    suggestion.attributes["key"].should == 'suggestion'
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                    suggestion.should have(1).children
         | 
| 80 | 
            -
                    dt_assoc = suggestion.children[0]
         | 
| 81 | 
            -
                    dt_assoc.name.should == 'dt_assoc'
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                    dt_assoc.should have(1).children
         | 
| 84 | 
            -
                    maximum = dt_assoc.children[0]
         | 
| 85 | 
            -
                    maximum.name.should == 'item'
         | 
| 86 | 
            -
                    maximum.attributes["key"].should == 'maximum'
         | 
| 87 | 
            -
                  end
         | 
| 88 | 
            -
                end
         | 
| 89 | 
            -
             | 
| 90 | 
            -
                context "produces a scalar" do
         | 
| 91 | 
            -
                  it "from a string" do
         | 
| 92 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data("cheezburger").to_s.should == "cheezburger"
         | 
| 93 | 
            -
                  end
         | 
| 94 | 
            -
             | 
| 95 | 
            -
                  it "from a string with XML characters" do
         | 
| 96 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data("<smile>").to_s.should == "<smile>"
         | 
| 97 | 
            -
                  end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                  it "from an integer" do
         | 
| 100 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data(12345).to_s.should == "12345"
         | 
| 101 | 
            -
                  end
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                  it "from a date" do
         | 
| 104 | 
            -
                    date = Date.parse("2010/02/12")
         | 
| 105 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data(date).to_s.should == "2010-02-12"
         | 
| 106 | 
            -
                  end
         | 
| 107 | 
            -
             | 
| 108 | 
            -
                  it "from a symbol" do
         | 
| 109 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data(:name).to_s.should == "name"
         | 
| 110 | 
            -
                  end
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                  it "from true or false" do
         | 
| 113 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data(true).to_s.should == "true"
         | 
| 114 | 
            -
                    OpenSRS::XmlProcessor::Libxml.encode_data(false).to_s.should == "false"
         | 
| 115 | 
            -
                  end
         | 
| 116 | 
            -
                end
         | 
| 117 | 
            -
              end
         | 
| 118 | 
            -
             | 
| 119 | 
            -
              describe '.parse' do
         | 
| 120 | 
            -
                it "should handle scalar values" do
         | 
| 121 | 
            -
                  xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 122 | 
            -
                    <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 123 | 
            -
                    <OPS_envelope>
         | 
| 124 | 
            -
                      <header>
         | 
| 125 | 
            -
                        <version>1.0</version>
         | 
| 126 | 
            -
                      </header>
         | 
| 127 | 
            -
                      <body>
         | 
| 128 | 
            -
                        <data_block>
         | 
| 129 | 
            -
                          <dt_scalar>Tom Jones</dt_scalar>
         | 
| 130 | 
            -
                        </data_block>
         | 
| 131 | 
            -
                      </body>
         | 
| 132 | 
            -
                    </OPS_envelope>}
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                  resp = OpenSRS::XmlProcessor::Libxml.parse(xml)
         | 
| 135 | 
            -
                  resp.should == "Tom Jones"
         | 
| 136 | 
            -
                end
         | 
| 137 | 
            -
             | 
| 138 | 
            -
                it "should handle associate arrays with arrays of values" do
         | 
| 139 | 
            -
                  xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 140 | 
            -
                  <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 141 | 
            -
                  <OPS_envelope>
         | 
| 142 | 
            -
                    <header>
         | 
| 143 | 
            -
                      <version>1.0</version>
         | 
| 144 | 
            -
                    </header>
         | 
| 145 | 
            -
                    <body>
         | 
| 146 | 
            -
                      <data_block>
         | 
| 147 | 
            -
                        <dt_assoc>
         | 
| 148 | 
            -
                          <item key='domain_list'>
         | 
| 149 | 
            -
                            <dt_array>
         | 
| 150 | 
            -
                              <item key='0'>ns1.example.com</item>
         | 
| 151 | 
            -
                              <item key='1'>ns2.example.com</item>
         | 
| 152 | 
            -
                              <item key='2'>ns3.example.com</item>
         | 
| 153 | 
            -
                            </dt_array>
         | 
| 154 | 
            -
                          </item>
         | 
| 155 | 
            -
                        </dt_assoc>
         | 
| 156 | 
            -
                      </data_block>
         | 
| 157 | 
            -
                    </body>
         | 
| 158 | 
            -
                  </OPS_envelope>}
         | 
| 159 | 
            -
             | 
| 160 | 
            -
                  resp = OpenSRS::XmlProcessor::Libxml.parse(xml)
         | 
| 161 | 
            -
                  resp["domain_list"].class.should == Array
         | 
| 162 | 
            -
                  resp["domain_list"][0].should == "ns1.example.com"
         | 
| 163 | 
            -
                  resp["domain_list"][1].should == "ns2.example.com"
         | 
| 164 | 
            -
                  resp["domain_list"][2].should == "ns3.example.com"
         | 
| 165 | 
            -
                end
         | 
| 166 | 
            -
             | 
| 167 | 
            -
                it "should handle associative arrays containing other associative arrays" do
         | 
| 168 | 
            -
                  xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 169 | 
            -
                  <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 170 | 
            -
                  <OPS_envelope>
         | 
| 171 | 
            -
                    <header>
         | 
| 172 | 
            -
                      <version>1.0</version>
         | 
| 173 | 
            -
                    </header>
         | 
| 174 | 
            -
                    <body>
         | 
| 175 | 
            -
                      <data_block>
         | 
| 176 | 
            -
                        <dt_assoc>
         | 
| 177 | 
            -
                          <item key="contact_set">
         | 
| 178 | 
            -
                            <dt_assoc>
         | 
| 179 | 
            -
                              <item key='owner'>
         | 
| 180 | 
            -
                                <dt_assoc>
         | 
| 181 | 
            -
                                  <item key='first_name'>Tom</item>
         | 
| 182 | 
            -
                                  <item key='last_name'>Jones</item>
         | 
| 183 | 
            -
                                </dt_assoc>
         | 
| 184 | 
            -
                              </item>
         | 
| 185 | 
            -
                              <item key='tech'>
         | 
| 186 | 
            -
                                <dt_assoc>
         | 
| 187 | 
            -
                                  <item key='first_name'>Anne</item>
         | 
| 188 | 
            -
                                  <item key='last_name'>Smith</item>
         | 
| 189 | 
            -
                                </dt_assoc>
         | 
| 190 | 
            -
                              </item>
         | 
| 191 | 
            -
                            </dt_assoc>
         | 
| 192 | 
            -
                          </item>
         | 
| 193 | 
            -
                        </dt_assoc>
         | 
| 194 | 
            -
                      </data_block>
         | 
| 195 | 
            -
                    </body>
         | 
| 196 | 
            -
                  </OPS_envelope>}
         | 
| 197 | 
            -
             | 
| 198 | 
            -
                  resp = OpenSRS::XmlProcessor::Libxml.parse(xml)
         | 
| 199 | 
            -
             | 
| 200 | 
            -
                  resp["contact_set"]["owner"]["first_name"].should == "Tom"
         | 
| 201 | 
            -
                  resp["contact_set"]["owner"]["last_name"].should == "Jones"
         | 
| 202 | 
            -
                  resp["contact_set"]["tech"]["first_name"].should == "Anne"
         | 
| 203 | 
            -
                  resp["contact_set"]["tech"]["last_name"].should == "Smith"
         | 
| 204 | 
            -
                end
         | 
| 205 | 
            -
             | 
| 206 | 
            -
                context "with a balance enquiry example response" do
         | 
| 207 | 
            -
                  before(:each) do
         | 
| 208 | 
            -
                    xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 209 | 
            -
                      <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 210 | 
            -
                      <OPS_envelope>
         | 
| 211 | 
            -
                        <header>
         | 
| 212 | 
            -
                          <version>0.9</version>
         | 
| 213 | 
            -
                        </header>
         | 
| 214 | 
            -
                        <body>
         | 
| 215 | 
            -
                          <data_block>
         | 
| 216 | 
            -
                            <dt_assoc>
         | 
| 217 | 
            -
                              <item key="protocol">XCP</item>
         | 
| 218 | 
            -
                              <item key="action">REPLY</item>
         | 
| 219 | 
            -
                              <item key="object">BALANCE</item>
         | 
| 220 | 
            -
                              <item key="is_success">1</item>
         | 
| 221 | 
            -
                              <item key="response_code">200</item>
         | 
| 222 | 
            -
                              <item key="response_text">Command successful</item>
         | 
| 223 | 
            -
                              <item key="attributes">
         | 
| 224 | 
            -
                                <dt_assoc>
         | 
| 225 | 
            -
                                  <item key="balance">8549.18</item>
         | 
| 226 | 
            -
                                  <item key="hold_balance">1676.05</item>
         | 
| 227 | 
            -
                                </dt_assoc>
         | 
| 228 | 
            -
                              </item>
         | 
| 229 | 
            -
                            </dt_assoc>
         | 
| 230 | 
            -
                          </data_block>
         | 
| 231 | 
            -
                        </body>
         | 
| 232 | 
            -
                      </OPS_envelope>}
         | 
| 233 | 
            -
             | 
| 234 | 
            -
                    @resp = OpenSRS::XmlProcessor::Libxml.parse(xml)
         | 
| 235 | 
            -
                  end
         | 
| 236 | 
            -
             | 
| 237 | 
            -
                  it "produces a hash" do
         | 
| 238 | 
            -
                    @resp.should be_an_instance_of(Hash)
         | 
| 239 | 
            -
                  end
         | 
| 240 | 
            -
             | 
| 241 | 
            -
                  it "has top level keys" do
         | 
| 242 | 
            -
                    @resp["protocol"].should == "XCP"
         | 
| 243 | 
            -
                    @resp["action"].should == "REPLY"
         | 
| 244 | 
            -
                    @resp["object"].should == "BALANCE"
         | 
| 245 | 
            -
                  end
         | 
| 246 | 
            -
             | 
| 247 | 
            -
                  it "has second level keys" do
         | 
| 248 | 
            -
                    @resp["attributes"]["balance"].should == "8549.18"
         | 
| 249 | 
            -
                    @resp["attributes"]["hold_balance"].should == "1676.05"
         | 
| 250 | 
            -
                  end
         | 
| 251 | 
            -
                end
         | 
| 252 | 
            -
              end
         | 
| 253 | 
            -
            end
         | 
| @@ -1,246 +0,0 @@ | |
| 1 | 
            -
            require 'date'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            class OrderedHash < Hash
         | 
| 4 | 
            -
            end
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            describe OpenSRS::XmlProcessor::Nokogiri do
         | 
| 7 | 
            -
              describe ".build" do
         | 
| 8 | 
            -
                it "should create XML for a nested hash" do
         | 
| 9 | 
            -
                  attributes = {:foo => {:bar => 'baz'}}
         | 
| 10 | 
            -
                  xml = OpenSRS::XmlProcessor::Nokogiri.build(attributes)
         | 
| 11 | 
            -
                  xml.should eq %{<?xml version=\"1.0\"?>\n<OPS_envelope>\n  <header>\n    <version>0.9</version>\n  </header>\n  <body>\n    <data_block>\n      <dt_assoc>\n        <item key=\"foo\">\n          <dt_assoc>\n            <item key=\"bar\">baz</item>\n          </dt_assoc>\n        </item>\n      </dt_assoc>\n    </data_block>\n  </body>\n</OPS_envelope>\n}
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              describe '.encode_data' do
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                before(:each) do
         | 
| 18 | 
            -
                  @builder = ::Nokogiri::XML::Builder.new
         | 
| 19 | 
            -
                  @doc     = @builder.doc
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                context "on a 3 element array" do
         | 
| 23 | 
            -
                  before(:each) do
         | 
| 24 | 
            -
                    @e = OpenSRS::XmlProcessor::Nokogiri.encode_data([1,2,3], @doc)
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  it { @e.should be_an_instance_of(::Nokogiri::XML::Element) }
         | 
| 28 | 
            -
                  it { @e.name.should eql('dt_array') }
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  it { @e.should have(3).children }
         | 
| 31 | 
            -
                  it { @e.children[0].name.should eql("item") }
         | 
| 32 | 
            -
                  it { @e.children[1].name.should eql("item") }
         | 
| 33 | 
            -
                  it { @e.children[2].name.should eql("item") }
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                  it { @e.children[0].attributes["key"].value.should eql("0") }
         | 
| 36 | 
            -
                  it { @e.children[1].attributes["key"].value.should eql("1") }
         | 
| 37 | 
            -
                  it { @e.children[2].attributes["key"].value.should eql("2") }
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                context "on a hash" do
         | 
| 41 | 
            -
                  before(:each) do
         | 
| 42 | 
            -
                    @e = OpenSRS::XmlProcessor::Nokogiri.encode_data({:name => "kitteh"}, @doc)
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                  it { @e.should be_an_instance_of(::Nokogiri::XML::Element) }
         | 
| 46 | 
            -
                  it { @e.name.should eql('dt_assoc') }
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  it { @e.should have(1).children }
         | 
| 49 | 
            -
                  it { @e.children[0].name.should eql('item') }
         | 
| 50 | 
            -
                  it { @e.children[0].attributes["key"].value.should eql('name') }
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                context "on a hash subclass" do
         | 
| 54 | 
            -
                  before(:each) do
         | 
| 55 | 
            -
                    ohash = OrderedHash.new
         | 
| 56 | 
            -
                    ohash[:name] = 'kitten'
         | 
| 57 | 
            -
                    @e = OpenSRS::XmlProcessor::Nokogiri.encode_data(ohash, @doc)
         | 
| 58 | 
            -
                  end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                  it { @e.should be_an_instance_of(::Nokogiri::XML::Element) }
         | 
| 61 | 
            -
                  it { @e.name.should eql('dt_assoc') }
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                  it { @e.should have(1).children }
         | 
| 64 | 
            -
                  it { @e.children[0].name.should eql('item') }
         | 
| 65 | 
            -
                  it { @e.children[0].attributes["key"].value.should eql('name') }
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
                context "on a nested hash" do
         | 
| 70 | 
            -
                  before(:each) do
         | 
| 71 | 
            -
                    @e          = OpenSRS::XmlProcessor::Nokogiri.encode_data({:suggestion => {:maximum => "10"}}, @doc)
         | 
| 72 | 
            -
                    @suggestion = @e.children[0]
         | 
| 73 | 
            -
                    @dt_assoc   = @suggestion.children[0]
         | 
| 74 | 
            -
                  end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                  it { @e.should be_an_instance_of(::Nokogiri::XML::Element) }
         | 
| 77 | 
            -
                  it { @e.name.should == 'dt_assoc' }
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                  context "<item> child" do
         | 
| 80 | 
            -
                    it { @e.should have(1).children }
         | 
| 81 | 
            -
                    it { @suggestion.name.should eql('item') }
         | 
| 82 | 
            -
                    it { @suggestion.attributes["key"].value.should eql('suggestion') }
         | 
| 83 | 
            -
                  end
         | 
| 84 | 
            -
             | 
| 85 | 
            -
                  context "suggesion children" do
         | 
| 86 | 
            -
                    it { @suggestion.should have(1).children }
         | 
| 87 | 
            -
                    it { @dt_assoc.name.should eql('dt_assoc') }
         | 
| 88 | 
            -
                  end
         | 
| 89 | 
            -
             | 
| 90 | 
            -
                  context "dt_assoc children" do
         | 
| 91 | 
            -
                    before(:each) do
         | 
| 92 | 
            -
                      @maximum = @dt_assoc.children[0]
         | 
| 93 | 
            -
                    end
         | 
| 94 | 
            -
                    it { @dt_assoc.should have(1).children }
         | 
| 95 | 
            -
                    it { @maximum.name.should eql('item') }
         | 
| 96 | 
            -
                    it { @maximum.attributes["key"].value.should eql('maximum') }
         | 
| 97 | 
            -
                  end
         | 
| 98 | 
            -
                end
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                context "produces a scalar" do
         | 
| 101 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data("cheezburger").to_s.should eql("cheezburger") }
         | 
| 102 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data("<smile>").to_s.should eql("<smile>") }
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data(12345).to_s.should eql("12345") }
         | 
| 105 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data(Date.parse("2010/02/12")).to_s.should eql("2010-02-12") }
         | 
| 106 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data(:name).to_s.should eql("name") }
         | 
| 107 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data(true).to_s.should eql("true") }
         | 
| 108 | 
            -
                  it { OpenSRS::XmlProcessor::Nokogiri.encode_data(false).to_s.should eql("false") }
         | 
| 109 | 
            -
                end
         | 
| 110 | 
            -
              end
         | 
| 111 | 
            -
             | 
| 112 | 
            -
              describe '.parse' do
         | 
| 113 | 
            -
             | 
| 114 | 
            -
                context "when scaler values" do
         | 
| 115 | 
            -
                  before(:each) do
         | 
| 116 | 
            -
                    xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 117 | 
            -
                      <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 118 | 
            -
                      <OPS_envelope>
         | 
| 119 | 
            -
                        <header>
         | 
| 120 | 
            -
                          <version>1.0</version>
         | 
| 121 | 
            -
                        </header>
         | 
| 122 | 
            -
                        <body>
         | 
| 123 | 
            -
                          <data_block>
         | 
| 124 | 
            -
                            <dt_scalar>Tom Jones</dt_scalar>
         | 
| 125 | 
            -
                          </data_block>
         | 
| 126 | 
            -
                        </body>
         | 
| 127 | 
            -
                      </OPS_envelope>}
         | 
| 128 | 
            -
                    @response = OpenSRS::XmlProcessor::Nokogiri.parse(xml)
         | 
| 129 | 
            -
                  end
         | 
| 130 | 
            -
             | 
| 131 | 
            -
                  it { @response.should eql("Tom Jones") }
         | 
| 132 | 
            -
                end
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                context "when associative arrays with arrays of values" do
         | 
| 135 | 
            -
                  before(:each) do
         | 
| 136 | 
            -
                    xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 137 | 
            -
                    <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 138 | 
            -
                    <OPS_envelope>
         | 
| 139 | 
            -
                      <header>
         | 
| 140 | 
            -
                        <version>1.0</version>
         | 
| 141 | 
            -
                      </header>
         | 
| 142 | 
            -
                      <body>
         | 
| 143 | 
            -
                        <data_block>
         | 
| 144 | 
            -
                          <dt_assoc>
         | 
| 145 | 
            -
                            <item key='domain_list'>
         | 
| 146 | 
            -
                              <dt_array>
         | 
| 147 | 
            -
                                <item key='0'>ns1.example.com</item>
         | 
| 148 | 
            -
                                <item key='1'>ns2.example.com</item>
         | 
| 149 | 
            -
                                <item key='2'>ns3.example.com</item>
         | 
| 150 | 
            -
                              </dt_array>
         | 
| 151 | 
            -
                            </item>
         | 
| 152 | 
            -
                          </dt_assoc>
         | 
| 153 | 
            -
                        </data_block>
         | 
| 154 | 
            -
                      </body>
         | 
| 155 | 
            -
                    </OPS_envelope>}
         | 
| 156 | 
            -
             | 
| 157 | 
            -
                    @response = OpenSRS::XmlProcessor::Nokogiri.parse(xml)
         | 
| 158 | 
            -
                  end
         | 
| 159 | 
            -
             | 
| 160 | 
            -
                  it { @response["domain_list"].class.should eql(Array) }
         | 
| 161 | 
            -
                  it { @response["domain_list"][0].should eql("ns1.example.com") }
         | 
| 162 | 
            -
                  it { @response["domain_list"][1].should eql("ns2.example.com") }
         | 
| 163 | 
            -
                  it { @response["domain_list"][2].should eql("ns3.example.com") }
         | 
| 164 | 
            -
                end
         | 
| 165 | 
            -
             | 
| 166 | 
            -
                context "when associative arrays containing other associative arrays" do
         | 
| 167 | 
            -
                  before(:each) do
         | 
| 168 | 
            -
                    xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 169 | 
            -
                    <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 170 | 
            -
                    <OPS_envelope>
         | 
| 171 | 
            -
                      <header>
         | 
| 172 | 
            -
                        <version>1.0</version>
         | 
| 173 | 
            -
                      </header>
         | 
| 174 | 
            -
                      <body>
         | 
| 175 | 
            -
                        <data_block>
         | 
| 176 | 
            -
                          <dt_assoc>
         | 
| 177 | 
            -
                            <item key="contact_set">
         | 
| 178 | 
            -
                              <dt_assoc>
         | 
| 179 | 
            -
                                <item key='owner'>
         | 
| 180 | 
            -
                                  <dt_assoc>
         | 
| 181 | 
            -
                                    <item key='first_name'>Tom</item>
         | 
| 182 | 
            -
                                    <item key='last_name'>Jones</item>
         | 
| 183 | 
            -
                                  </dt_assoc>
         | 
| 184 | 
            -
                                </item>
         | 
| 185 | 
            -
                                <item key='tech'>
         | 
| 186 | 
            -
                                  <dt_assoc>
         | 
| 187 | 
            -
                                    <item key='first_name'>Anne</item>
         | 
| 188 | 
            -
                                    <item key='last_name'>Smith</item>
         | 
| 189 | 
            -
                                  </dt_assoc>
         | 
| 190 | 
            -
                                </item>
         | 
| 191 | 
            -
                              </dt_assoc>
         | 
| 192 | 
            -
                            </item>
         | 
| 193 | 
            -
                          </dt_assoc>
         | 
| 194 | 
            -
                        </data_block>
         | 
| 195 | 
            -
                      </body>
         | 
| 196 | 
            -
                    </OPS_envelope>}
         | 
| 197 | 
            -
             | 
| 198 | 
            -
                    @response = OpenSRS::XmlProcessor::Nokogiri.parse(xml)
         | 
| 199 | 
            -
                  end
         | 
| 200 | 
            -
                  it { @response["contact_set"]["owner"]["first_name"].should eql("Tom") }
         | 
| 201 | 
            -
                  it { @response["contact_set"]["owner"]["last_name"].should eql("Jones") }
         | 
| 202 | 
            -
                  it { @response["contact_set"]["tech"]["first_name"].should eql("Anne") }
         | 
| 203 | 
            -
                  it { @response["contact_set"]["tech"]["last_name"].should eql("Smith") }
         | 
| 204 | 
            -
                end
         | 
| 205 | 
            -
             | 
| 206 | 
            -
                context "with a balance enquiry example response" do
         | 
| 207 | 
            -
                  before(:each) do
         | 
| 208 | 
            -
                    xml = %{<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
         | 
| 209 | 
            -
                      <!DOCTYPE OPS_envelope SYSTEM 'ops.dtd'>
         | 
| 210 | 
            -
                      <OPS_envelope>
         | 
| 211 | 
            -
                        <header>
         | 
| 212 | 
            -
                          <version>0.9</version>
         | 
| 213 | 
            -
                        </header>
         | 
| 214 | 
            -
                        <body>
         | 
| 215 | 
            -
                          <data_block>
         | 
| 216 | 
            -
                            <dt_assoc>
         | 
| 217 | 
            -
                              <item key="protocol">XCP</item>
         | 
| 218 | 
            -
                              <item key="action">REPLY</item>
         | 
| 219 | 
            -
                              <item key="object">BALANCE</item>
         | 
| 220 | 
            -
                              <item key="is_success">1</item>
         | 
| 221 | 
            -
                              <item key="response_code">200</item>
         | 
| 222 | 
            -
                              <item key="response_text">Command successful</item>
         | 
| 223 | 
            -
                              <item key="attributes">
         | 
| 224 | 
            -
                                <dt_assoc>
         | 
| 225 | 
            -
                                  <item key="balance">8549.18</item>
         | 
| 226 | 
            -
                                  <item key="hold_balance">1676.05</item>
         | 
| 227 | 
            -
                                </dt_assoc>
         | 
| 228 | 
            -
                              </item>
         | 
| 229 | 
            -
                            </dt_assoc>
         | 
| 230 | 
            -
                          </data_block>
         | 
| 231 | 
            -
                        </body>
         | 
| 232 | 
            -
                      </OPS_envelope>}
         | 
| 233 | 
            -
             | 
| 234 | 
            -
                    @response = OpenSRS::XmlProcessor::Nokogiri.parse(xml)
         | 
| 235 | 
            -
                  end
         | 
| 236 | 
            -
             | 
| 237 | 
            -
                  it { @response.should be_an_instance_of(Hash) }
         | 
| 238 | 
            -
                  it { @response["protocol"].should eql("XCP") }
         | 
| 239 | 
            -
                  it { @response["action"].should eql("REPLY") }
         | 
| 240 | 
            -
                  it { @response["object"].should eql("BALANCE") }
         | 
| 241 | 
            -
                  it { @response["attributes"]["balance"].should eql("8549.18") }
         | 
| 242 | 
            -
                  it { @response["attributes"]["hold_balance"].should eql("1676.05") }
         | 
| 243 | 
            -
             | 
| 244 | 
            -
                end
         | 
| 245 | 
            -
              end
         | 
| 246 | 
            -
            end
         | 
    
        data/spec/spec_helper.rb
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            require 'bundler/setup'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            Bundler.setup
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            require 'opensrs'
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            RSpec.configure do |config|
         | 
| 8 | 
            -
              # config for rspec!
         | 
| 9 | 
            -
            end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            class OpenSRS::TestLogger
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              attr_reader :messages
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              def initialize
         | 
| 16 | 
            -
                @messages = []
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              def info(message)
         | 
| 20 | 
            -
                messages << message
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            end
         |