rs_service_now 0.0.1 → 0.0.3
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 +15 -0
 - data/.gitignore +16 -14
 - data/Gemfile +4 -4
 - data/README.md +11 -3
 - data/Rakefile +11 -2
 - data/lib/rs_service_now.rb +7 -7
 - data/lib/rs_service_now/ci.rb +2 -10
 - data/lib/rs_service_now/common.rb +23 -0
 - data/lib/rs_service_now/company.rb +2 -10
 - data/lib/rs_service_now/record.rb +26 -1
 - data/lib/rs_service_now/version.rb +1 -1
 - data/spec/helpers.rb +142 -0
 - data/spec/spec_helper.rb +10 -0
 - data/spec/unit/records_spec.rb +186 -0
 - metadata +14 -16
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            !binary "U0hBMQ==":
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: !binary |-
         
     | 
| 
      
 4 
     | 
    
         
            +
                ZWJmYzg5NDk1NTdjMjdkMzBmZmIyYWU2Zjg0YjU5ZjkyMDU1ZTlmMg==
         
     | 
| 
      
 5 
     | 
    
         
            +
              data.tar.gz: !binary |-
         
     | 
| 
      
 6 
     | 
    
         
            +
                YjllMTMwMjc2ZmM2ZmI2ZTg2MjRmMjhkYWM1MTk3YjhlZTgyZjkzYQ==
         
     | 
| 
      
 7 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 8 
     | 
    
         
            +
              metadata.gz: !binary |-
         
     | 
| 
      
 9 
     | 
    
         
            +
                NjlkNjAzZTExMDNlNzZmOWQ4ZGI3ZDY5M2M4NWE4NmRlMWU5ZDQyNWZlYjg5
         
     | 
| 
      
 10 
     | 
    
         
            +
                YjkzNjYzNDAzYTRkM2EzNGNiNGRmODcwMjc1ODE3MGI3NmI3OTY5YWQ4MmVi
         
     | 
| 
      
 11 
     | 
    
         
            +
                OGY3MDA3NDk4NzJhMTBkMDc5NGI3MzIwZDMyY2QxZDdkMGMxNTc=
         
     | 
| 
      
 12 
     | 
    
         
            +
              data.tar.gz: !binary |-
         
     | 
| 
      
 13 
     | 
    
         
            +
                NmQzNzM1OWVjN2JiN2IwZjdkZTU0MDBlMTI3OGZiNzZlODg4OWMyODhjNjM5
         
     | 
| 
      
 14 
     | 
    
         
            +
                YTMxMjljM2ZmMTRkZmZkNmVkNjQ2M2QzOGNhMjhhYTdiMWJkZGI2Njk0MmU0
         
     | 
| 
      
 15 
     | 
    
         
            +
                ZjAyNzdhN2JiYWFjNTRiMmRkN2Q3ODM4ODkxYzcwOTA5NWRjNjI=
         
     | 
    
        data/.gitignore
    CHANGED
    
    | 
         @@ -1,14 +1,16 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /.bundle/
         
     | 
| 
       2 
     | 
    
         
            -
            /.yardoc
         
     | 
| 
       3 
     | 
    
         
            -
            /Gemfile.lock
         
     | 
| 
       4 
     | 
    
         
            -
            /_yardoc/
         
     | 
| 
       5 
     | 
    
         
            -
            /coverage/
         
     | 
| 
       6 
     | 
    
         
            -
            /doc/
         
     | 
| 
       7 
     | 
    
         
            -
            /pkg/
         
     | 
| 
       8 
     | 
    
         
            -
            /spec/reports/
         
     | 
| 
       9 
     | 
    
         
            -
            /tmp/
         
     | 
| 
       10 
     | 
    
         
            -
            *.bundle
         
     | 
| 
       11 
     | 
    
         
            -
            *.so
         
     | 
| 
       12 
     | 
    
         
            -
            *.o
         
     | 
| 
       13 
     | 
    
         
            -
            *.a
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            /.bundle/
         
     | 
| 
      
 2 
     | 
    
         
            +
            /.yardoc
         
     | 
| 
      
 3 
     | 
    
         
            +
            /Gemfile.lock
         
     | 
| 
      
 4 
     | 
    
         
            +
            /_yardoc/
         
     | 
| 
      
 5 
     | 
    
         
            +
            /coverage/
         
     | 
| 
      
 6 
     | 
    
         
            +
            /doc/
         
     | 
| 
      
 7 
     | 
    
         
            +
            /pkg/
         
     | 
| 
      
 8 
     | 
    
         
            +
            /spec/reports/
         
     | 
| 
      
 9 
     | 
    
         
            +
            /tmp/
         
     | 
| 
      
 10 
     | 
    
         
            +
            *.bundle
         
     | 
| 
      
 11 
     | 
    
         
            +
            *.so
         
     | 
| 
      
 12 
     | 
    
         
            +
            *.o
         
     | 
| 
      
 13 
     | 
    
         
            +
            *.a
         
     | 
| 
      
 14 
     | 
    
         
            +
            *.gem
         
     | 
| 
      
 15 
     | 
    
         
            +
            mkmf.log
         
     | 
| 
      
 16 
     | 
    
         
            +
            /.idea
         
     | 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            source 'https://rubygems.org'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            # Specify your gem's dependencies in rs_service_now.gemspec
         
     | 
| 
       4 
     | 
    
         
            -
            gemspec
         
     | 
| 
      
 1 
     | 
    
         
            +
            source 'https://rubygems.org'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Specify your gem's dependencies in rs_service_now.gemspec
         
     | 
| 
      
 4 
     | 
    
         
            +
            gemspec
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -20,17 +20,25 @@ Or install it yourself as: 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
            ## Usage
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       23 
24 
     | 
    
         
             
            sn = RsServiceNow::Company.new user, password, instance
         
     | 
| 
      
 25 
     | 
    
         
            +
            ```
         
     | 
| 
       24 
26 
     | 
    
         | 
| 
       25 
27 
     | 
    
         
             
            ### Retrieve
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
            Get every field from matching records. This is a quick way to retrieve any number of records, 250 at a time.
         
     | 
| 
       27 
29 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
            Using an encodedQuery. This can be easily retrieved by conducting a search in Service-Now, right clicking the very end of the search string and selecting "Copy query"
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       29 
33 
     | 
    
         
             
            sn.request :encoded_query => "active=true"
         
     | 
| 
      
 34 
     | 
    
         
            +
            ```
         
     | 
| 
       30 
35 
     | 
    
         | 
| 
       31 
36 
     | 
    
         
             
            ### Export
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
            Retrieve a data export from Service-Now. Should be more efficient than Retrieve as by default it can export 10000 records at a time, instead of 250. This is experimental at the moment that has not been thoroughly tested.
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       33 
40 
     | 
    
         
             
            sn.export :encoded_query => "active=true"
         
     | 
| 
      
 41 
     | 
    
         
            +
            ```
         
     | 
| 
       34 
42 
     | 
    
         | 
| 
       35 
43 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       36 
44 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,2 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require "bundler/gem_tasks"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require "bundler/gem_tasks"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            desc "Run the tests"
         
     | 
| 
      
 5 
     | 
    
         
            +
            RSpec::Core::RakeTask.new(:spec) do |t|
         
     | 
| 
      
 6 
     | 
    
         
            +
              t.rspec_opts = ['--color', '-f d']
         
     | 
| 
      
 7 
     | 
    
         
            +
              t.pattern = 'spec/*/*_spec.rb'
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            task :default => [:spec_prep, :spec, :spec_clean]
         
     | 
    
        data/lib/rs_service_now.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            require "rs_service_now 
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            module RsServiceNow
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            [ 'version', 'record', 'common', 'company', 'ci' ].each do |file|
         
     | 
| 
      
 2 
     | 
    
         
            +
              require "rs_service_now/#{file}"
         
     | 
| 
      
 3 
     | 
    
         
            +
            end
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module RsServiceNow
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rs_service_now/ci.rb
    CHANGED
    
    | 
         @@ -1,11 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class RsServiceNow::Ci < RsServiceNow:: 
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
              def request encoded_query
         
     | 
| 
       5 
     | 
    
         
            -
                self._request TABLE, encoded_query
         
     | 
| 
       6 
     | 
    
         
            -
              end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              def export encoded_query, max_export = 10000
         
     | 
| 
       9 
     | 
    
         
            -
                self._export TABLE, encoded_query, max_export
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
      
 1 
     | 
    
         
            +
            class RsServiceNow::Ci < RsServiceNow::Common
         
     | 
| 
      
 2 
     | 
    
         
            +
              create_methods 'cmdb_ci'
         
     | 
| 
       11 
3 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class RsServiceNow::Common < RsServiceNow::Record
         
     | 
| 
      
 2 
     | 
    
         
            +
              def self.create_methods table
         
     | 
| 
      
 3 
     | 
    
         
            +
                define_method('get') do |sys_id|
         
     | 
| 
      
 4 
     | 
    
         
            +
                  self._get table, sys_id
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                define_method('export') do |encoded_query, max_export = 10000|
         
     | 
| 
      
 8 
     | 
    
         
            +
                  self._export table, encoded_query, max_export
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                define_method('request') do |encoded_query|
         
     | 
| 
      
 12 
     | 
    
         
            +
                  self._request table, encoded_query
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                define_method('insert') do |parameters|
         
     | 
| 
      
 16 
     | 
    
         
            +
                  self._insert table, parameters
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                define_method('update') do |parameters|
         
     | 
| 
      
 20 
     | 
    
         
            +
                  self._update table, parameters
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,11 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class RsServiceNow::Company < RsServiceNow:: 
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
              def request encoded_query
         
     | 
| 
       5 
     | 
    
         
            -
                self._request TABLE, encoded_query
         
     | 
| 
       6 
     | 
    
         
            -
              end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              def export encoded_query, max_export = 10000
         
     | 
| 
       9 
     | 
    
         
            -
                self._export TABLE, encoded_query, max_export
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
      
 1 
     | 
    
         
            +
            class RsServiceNow::Company < RsServiceNow::Common
         
     | 
| 
      
 2 
     | 
    
         
            +
              create_methods 'core_company'
         
     | 
| 
       11 
3 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4,10 +4,11 @@ require 'active_support/core_ext/hash/conversions' 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            class RsServiceNow::Record
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              def initialize user, password, instance
         
     | 
| 
      
 7 
     | 
    
         
            +
              def initialize user, password, instance, proxy = nil
         
     | 
| 
       8 
8 
     | 
    
         
             
                @user = user
         
     | 
| 
       9 
9 
     | 
    
         
             
                @password = password
         
     | 
| 
       10 
10 
     | 
    
         
             
                @url = "https://#{instance}.service-now.com"
         
     | 
| 
      
 11 
     | 
    
         
            +
                @proxy = proxy
         
     | 
| 
       11 
12 
     | 
    
         
             
              end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
              def _request table, encoded_query
         
     | 
| 
         @@ -67,12 +68,36 @@ class RsServiceNow::Record 
     | 
|
| 
       67 
68 
     | 
    
         
             
                response.hash[:envelope][:body][:get_keys_response]
         
     | 
| 
       68 
69 
     | 
    
         
             
              end
         
     | 
| 
       69 
70 
     | 
    
         | 
| 
      
 71 
     | 
    
         
            +
              def _get table, sys_id
         
     | 
| 
      
 72 
     | 
    
         
            +
                client = setup_client table
         
     | 
| 
      
 73 
     | 
    
         
            +
                response = client.call(:get, :message => {:sys_id => sys_id})
         
     | 
| 
      
 74 
     | 
    
         
            +
                response.hash[:envelope][:body][:get_response]
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       70 
77 
     | 
    
         
             
              def setup_client table
         
     | 
| 
       71 
78 
     | 
    
         
             
                Savon.client do |globals|
         
     | 
| 
       72 
79 
     | 
    
         
             
                  globals.wsdl "#{@url}/#{table}.do?WSDL"
         
     | 
| 
       73 
80 
     | 
    
         
             
                  globals.basic_auth [@user, @password]
         
     | 
| 
       74 
81 
     | 
    
         
             
                  globals.convert_request_keys_to :none
         
     | 
| 
       75 
82 
     | 
    
         
             
                  globals.namespace_identifier :u
         
     | 
| 
      
 83 
     | 
    
         
            +
                  if @proxy
         
     | 
| 
      
 84 
     | 
    
         
            +
                    globals.proxy @proxy
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
              end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              def _insert table, parameters
         
     | 
| 
      
 90 
     | 
    
         
            +
                client = setup_client table
         
     | 
| 
      
 91 
     | 
    
         
            +
                response = client.call(:insert, :message => parameters)
         
     | 
| 
      
 92 
     | 
    
         
            +
                response.hash[:envelope][:body][:insert_response][:sys_id]
         
     | 
| 
      
 93 
     | 
    
         
            +
              end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
              def _update table, parameters
         
     | 
| 
      
 96 
     | 
    
         
            +
                if parameters[:sys_id].nil?
         
     | 
| 
      
 97 
     | 
    
         
            +
                  raise "You must supply the sys_id of the record to update"
         
     | 
| 
       76 
98 
     | 
    
         
             
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                client = setup_client table
         
     | 
| 
      
 101 
     | 
    
         
            +
                client.call(:update, :message => parameters)
         
     | 
| 
       77 
102 
     | 
    
         
             
              end
         
     | 
| 
       78 
103 
     | 
    
         
             
            end
         
     | 
    
        data/spec/helpers.rb
    ADDED
    
    | 
         @@ -0,0 +1,142 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'nokogiri'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module ServiceNowHelpers
         
     | 
| 
      
 4 
     | 
    
         
            +
              def make_multiple_xml start, max_export
         
     | 
| 
      
 5 
     | 
    
         
            +
                xml_doc = Nokogiri::XML(make_record_xml)
         
     | 
| 
      
 6 
     | 
    
         
            +
                index_array = (start..(max_export - 1)).to_a
         
     | 
| 
      
 7 
     | 
    
         
            +
                (index_array.length - 1).times do |num|
         
     | 
| 
      
 8 
     | 
    
         
            +
                  xml_doc.at('core_company').add_next_sibling(xml_doc.at('core_company').dup)
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                xml_doc.xpath('//xml/core_company/sys_id').each_with_index do |id, index|
         
     | 
| 
      
 12 
     | 
    
         
            +
                  id.children = "deadbeefdeadbeefdeadbeefdead#{index_array[index]}"
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                xml_doc.to_xml
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def make_record_xml
         
     | 
| 
      
 19 
     | 
    
         
            +
                <<EOF
         
     | 
| 
      
 20 
     | 
    
         
            +
            <xml>
         
     | 
| 
      
 21 
     | 
    
         
            +
            <core_company>
         
     | 
| 
      
 22 
     | 
    
         
            +
            <apple_icon/>
         
     | 
| 
      
 23 
     | 
    
         
            +
            <banner_image/>
         
     | 
| 
      
 24 
     | 
    
         
            +
            <banner_text></banner_text>
         
     | 
| 
      
 25 
     | 
    
         
            +
            <city/>
         
     | 
| 
      
 26 
     | 
    
         
            +
            <color_scheme/>
         
     | 
| 
      
 27 
     | 
    
         
            +
            <contact/>
         
     | 
| 
      
 28 
     | 
    
         
            +
            <country/>
         
     | 
| 
      
 29 
     | 
    
         
            +
            <customer>true</customer>
         
     | 
| 
      
 30 
     | 
    
         
            +
            <discount/>
         
     | 
| 
      
 31 
     | 
    
         
            +
            <fax_phone/>
         
     | 
| 
      
 32 
     | 
    
         
            +
            <fiscal_year/>
         
     | 
| 
      
 33 
     | 
    
         
            +
            <lat_long_error/>
         
     | 
| 
      
 34 
     | 
    
         
            +
            <latitude/>
         
     | 
| 
      
 35 
     | 
    
         
            +
            <longitude/>
         
     | 
| 
      
 36 
     | 
    
         
            +
            <manufacturer>false</manufacturer>
         
     | 
| 
      
 37 
     | 
    
         
            +
            <market_cap>0</market_cap>
         
     | 
| 
      
 38 
     | 
    
         
            +
            <name>ACME</name>
         
     | 
| 
      
 39 
     | 
    
         
            +
            <num_employees/>
         
     | 
| 
      
 40 
     | 
    
         
            +
            <parent/>
         
     | 
| 
      
 41 
     | 
    
         
            +
            <phone/>
         
     | 
| 
      
 42 
     | 
    
         
            +
            <primary>false</primary>
         
     | 
| 
      
 43 
     | 
    
         
            +
            <profits>0</profits>
         
     | 
| 
      
 44 
     | 
    
         
            +
            <publicly_traded>false</publicly_traded>
         
     | 
| 
      
 45 
     | 
    
         
            +
            <rank_tier/>
         
     | 
| 
      
 46 
     | 
    
         
            +
            <revenue_per_year>0</revenue_per_year>
         
     | 
| 
      
 47 
     | 
    
         
            +
            <state/>
         
     | 
| 
      
 48 
     | 
    
         
            +
            <stock_price/>
         
     | 
| 
      
 49 
     | 
    
         
            +
            <stock_symbol/>
         
     | 
| 
      
 50 
     | 
    
         
            +
            <street/>
         
     | 
| 
      
 51 
     | 
    
         
            +
            <sys_created_by>acme_administrator</sys_created_by>
         
     | 
| 
      
 52 
     | 
    
         
            +
            <sys_created_on>2015-02-01 22:52:00</sys_created_on>
         
     | 
| 
      
 53 
     | 
    
         
            +
            <sys_domain_number>3.14</sys_domain_number>
         
     | 
| 
      
 54 
     | 
    
         
            +
            <sys_id>deadbeefdeadbeefdeadbeefdeadbeef</sys_id>
         
     | 
| 
      
 55 
     | 
    
         
            +
            <sys_mod_count>28</sys_mod_count>
         
     | 
| 
      
 56 
     | 
    
         
            +
            <sys_updated_by>acme_administrator</sys_updated_by>
         
     | 
| 
      
 57 
     | 
    
         
            +
            <sys_updated_on>2015-02-01 22:52:00</sys_updated_on>
         
     | 
| 
      
 58 
     | 
    
         
            +
            <theme/>
         
     | 
| 
      
 59 
     | 
    
         
            +
            <vendor>false</vendor>
         
     | 
| 
      
 60 
     | 
    
         
            +
            <vendor_manager/>
         
     | 
| 
      
 61 
     | 
    
         
            +
            <vendor_type/>
         
     | 
| 
      
 62 
     | 
    
         
            +
            <website/>
         
     | 
| 
      
 63 
     | 
    
         
            +
            <zip/>
         
     | 
| 
      
 64 
     | 
    
         
            +
            </core_company>
         
     | 
| 
      
 65 
     | 
    
         
            +
            </xml>
         
     | 
| 
      
 66 
     | 
    
         
            +
            EOF
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
              def make_record_hash suffix = "beef"
         
     | 
| 
      
 70 
     | 
    
         
            +
                {
         
     | 
| 
      
 71 
     | 
    
         
            +
                  "apple_icon"=>nil,
         
     | 
| 
      
 72 
     | 
    
         
            +
                  "banner_image"=>nil,
         
     | 
| 
      
 73 
     | 
    
         
            +
                  "banner_text"=>nil,
         
     | 
| 
      
 74 
     | 
    
         
            +
                  "city"=>nil,
         
     | 
| 
      
 75 
     | 
    
         
            +
                  "color_scheme"=>nil,
         
     | 
| 
      
 76 
     | 
    
         
            +
                  "contact"=>nil,
         
     | 
| 
      
 77 
     | 
    
         
            +
                  "country"=>nil,
         
     | 
| 
      
 78 
     | 
    
         
            +
                  "customer"=>"true",
         
     | 
| 
      
 79 
     | 
    
         
            +
                  "discount"=>nil,
         
     | 
| 
      
 80 
     | 
    
         
            +
                  "fax_phone"=>nil,
         
     | 
| 
      
 81 
     | 
    
         
            +
                  "fiscal_year"=>nil,
         
     | 
| 
      
 82 
     | 
    
         
            +
                  "lat_long_error"=>nil,
         
     | 
| 
      
 83 
     | 
    
         
            +
                  "latitude"=>nil,
         
     | 
| 
      
 84 
     | 
    
         
            +
                  "longitude"=>nil,
         
     | 
| 
      
 85 
     | 
    
         
            +
                  "manufacturer"=>"false",
         
     | 
| 
      
 86 
     | 
    
         
            +
                  "market_cap"=>"0",
         
     | 
| 
      
 87 
     | 
    
         
            +
                  "name"=>"ACME",
         
     | 
| 
      
 88 
     | 
    
         
            +
                  "num_employees"=>nil,
         
     | 
| 
      
 89 
     | 
    
         
            +
                  "parent"=>nil,
         
     | 
| 
      
 90 
     | 
    
         
            +
                  "phone"=>nil,
         
     | 
| 
      
 91 
     | 
    
         
            +
                  "primary"=>"false",
         
     | 
| 
      
 92 
     | 
    
         
            +
                  "profits"=>"0",
         
     | 
| 
      
 93 
     | 
    
         
            +
                  "publicly_traded"=>"false",
         
     | 
| 
      
 94 
     | 
    
         
            +
                  "rank_tier"=>nil,
         
     | 
| 
      
 95 
     | 
    
         
            +
                  "revenue_per_year"=>"0",
         
     | 
| 
      
 96 
     | 
    
         
            +
                  "state"=>nil,
         
     | 
| 
      
 97 
     | 
    
         
            +
                  "stock_price"=>nil,
         
     | 
| 
      
 98 
     | 
    
         
            +
                  "stock_symbol"=>nil,
         
     | 
| 
      
 99 
     | 
    
         
            +
                  "street"=>nil,
         
     | 
| 
      
 100 
     | 
    
         
            +
                  "sys_created_by"=>"acme_administrator",
         
     | 
| 
      
 101 
     | 
    
         
            +
                  "sys_created_on"=>"2015-02-01 22:52:00",
         
     | 
| 
      
 102 
     | 
    
         
            +
                  "sys_domain_number"=>"3.14",
         
     | 
| 
      
 103 
     | 
    
         
            +
                  "sys_id"=>"deadbeefdeadbeefdeadbeefdead#{suffix}",
         
     | 
| 
      
 104 
     | 
    
         
            +
                  "sys_mod_count"=>"28",
         
     | 
| 
      
 105 
     | 
    
         
            +
                  "sys_updated_by"=>"acme_administrator",
         
     | 
| 
      
 106 
     | 
    
         
            +
                  "sys_updated_on"=>"2015-02-01 22:52:00",
         
     | 
| 
      
 107 
     | 
    
         
            +
                  "theme"=>nil,
         
     | 
| 
      
 108 
     | 
    
         
            +
                  "vendor"=>"false",
         
     | 
| 
      
 109 
     | 
    
         
            +
                  "vendor_manager"=>nil,
         
     | 
| 
      
 110 
     | 
    
         
            +
                  "vendor_type"=>nil,
         
     | 
| 
      
 111 
     | 
    
         
            +
                  "website"=>nil,
         
     | 
| 
      
 112 
     | 
    
         
            +
                  "zip"=>nil
         
     | 
| 
      
 113 
     | 
    
         
            +
                }
         
     | 
| 
      
 114 
     | 
    
         
            +
              end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
              def make_insert_response_xml
         
     | 
| 
      
 117 
     | 
    
         
            +
                <<EOF
         
     | 
| 
      
 118 
     | 
    
         
            +
            <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:inc="http://www.service-now.com/incident">
         
     | 
| 
      
 119 
     | 
    
         
            +
               <soapenv:Header/>
         
     | 
| 
      
 120 
     | 
    
         
            +
               <soapenv:Body>
         
     | 
| 
      
 121 
     | 
    
         
            +
                  <inc:insertResponse>
         
     | 
| 
      
 122 
     | 
    
         
            +
                     <inc:sys_id>deadbeefdeadbeefdeadbeefdeadbeef</inc:sys_id>
         
     | 
| 
      
 123 
     | 
    
         
            +
                     <inc:number>1</inc:number>
         
     | 
| 
      
 124 
     | 
    
         
            +
                  </inc:insertResponse>
         
     | 
| 
      
 125 
     | 
    
         
            +
               </soapenv:Body>
         
     | 
| 
      
 126 
     | 
    
         
            +
            </soapenv:Envelope>
         
     | 
| 
      
 127 
     | 
    
         
            +
            EOF
         
     | 
| 
      
 128 
     | 
    
         
            +
              end
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
              def make_insert_response_hash
         
     | 
| 
      
 131 
     | 
    
         
            +
                { 
         
     | 
| 
      
 132 
     | 
    
         
            +
                  :envelope => { 
         
     | 
| 
      
 133 
     | 
    
         
            +
                    :body => { 
         
     | 
| 
      
 134 
     | 
    
         
            +
                      :insert_response => {
         
     | 
| 
      
 135 
     | 
    
         
            +
                        :sys_id => "deadbeefdeadbeefdeadbeefdeadbeef",
         
     | 
| 
      
 136 
     | 
    
         
            +
                        :number => 1,
         
     | 
| 
      
 137 
     | 
    
         
            +
                      }
         
     | 
| 
      
 138 
     | 
    
         
            +
                    }
         
     | 
| 
      
 139 
     | 
    
         
            +
                  }
         
     | 
| 
      
 140 
     | 
    
         
            +
                }
         
     | 
| 
      
 141 
     | 
    
         
            +
              end
         
     | 
| 
      
 142 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
| 
         @@ -0,0 +1,186 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module RsServiceNow
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe Record do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:subject) { RsServiceNow::Record.new "user", "supersekrit", "reporting" }
         
     | 
| 
      
 6 
     | 
    
         
            +
                let(:max_export) { 100 }
         
     | 
| 
      
 7 
     | 
    
         
            +
                let(:single_record_hash) { make_record_hash }
         
     | 
| 
      
 8 
     | 
    
         
            +
                let(:single_record_xml) { make_record_xml }
         
     | 
| 
      
 9 
     | 
    
         
            +
                let(:encoded_query) { 'active=true' }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                describe '#_request' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  let(:dummy_client) { Object.new }
         
     | 
| 
      
 13 
     | 
    
         
            +
                  let(:dummy_response) { Object.new }
         
     | 
| 
      
 14 
     | 
    
         
            +
                  let(:multi_record_hash) { (0..251).collect { single_record_hash } }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 17 
     | 
    
         
            +
                    allow( subject ).to receive(:setup_client).and_return(dummy_client)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  context 'single result' do
         
     | 
| 
      
 21 
     | 
    
         
            +
                    let(:dummy_response_hash) { {:envelope => {:body => {:get_records_response => {:get_records_result => single_record_hash } } } } }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                    before :each do
         
     | 
| 
      
 24 
     | 
    
         
            +
                      allow( subject ).to receive(:get_keys).and_return({:count => "1"})
         
     | 
| 
      
 25 
     | 
    
         
            +
                      allow( dummy_response ).to receive(:hash).and_return(dummy_response_hash)
         
     | 
| 
      
 26 
     | 
    
         
            +
                      allow( dummy_client ).to receive(:call).and_return(dummy_response)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                    it 'should return an array with one hash' do
         
     | 
| 
      
 30 
     | 
    
         
            +
                      expect( subject._request 'core_company', encoded_query ).to be == [single_record_hash]
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  context 'multiple results' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                    let(:dummy_response_hash) { {:envelope => {:body => {:get_records_response => {:get_records_result => multi_record_hash } } } } }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    before :each do
         
     | 
| 
      
 38 
     | 
    
         
            +
                      allow( subject ).to receive(:get_keys).and_return({:count => "251"})
         
     | 
| 
      
 39 
     | 
    
         
            +
                      allow( dummy_response ).to receive(:hash).and_return(dummy_response_hash)
         
     | 
| 
      
 40 
     | 
    
         
            +
                      allow( dummy_client ).to receive(:call).and_return(dummy_response)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    it 'should get records 250 at a time' do
         
     | 
| 
      
 44 
     | 
    
         
            +
                      expect( dummy_client ).to receive(:call).with(:get_records, :message => {:__encoded_query => encoded_query, :__first_row => 0, :__last_row => 250}).ordered
         
     | 
| 
      
 45 
     | 
    
         
            +
                      expect( dummy_client ).to receive(:call).with(:get_records, :message => {:__encoded_query => encoded_query, :__first_row => 250, :__last_row => 500}).ordered
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                      subject._request 'core_company', encoded_query
         
     | 
| 
      
 48 
     | 
    
         
            +
                    end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                    it 'should return an array of hashes containing each entry' do
         
     | 
| 
      
 51 
     | 
    
         
            +
                      expect( subject._request 'core_company', encoded_query ) == [multi_record_hash]
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                describe '#_export' do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  let(:dummy_open) { Object.new }
         
     | 
| 
      
 59 
     | 
    
         
            +
                  let(:multi_record_hash) { (0..251).map { |n| make_record_hash n } }
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  context 'single result' do
         
     | 
| 
      
 62 
     | 
    
         
            +
                    let(:export_url) { "https://reporting.service-now.com/core_company.do?XML&sysparm_order_by=sys_id&sysparm_query=#{CGI.escape(encoded_query + '^')}sys_id#{CGI.escape('>=') + "deadbeefdeadbeefdeadbeefdeadbeef"}&sysparm_record_count=#{max_export}" }
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                    before :each do
         
     | 
| 
      
 65 
     | 
    
         
            +
                      allow( subject ).to receive(:get_keys).and_return({:count => "1", :sys_id => "deadbeefdeadbeefdeadbeefdeadbeef"})
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                    it 'should use the first sys_id in the first query' do
         
     | 
| 
      
 69 
     | 
    
         
            +
                      expect( subject ).to receive(:open).with(
         
     | 
| 
      
 70 
     | 
    
         
            +
                                              export_url,
         
     | 
| 
      
 71 
     | 
    
         
            +
                                              :http_basic_authentication => ["user", "supersekrit"]
         
     | 
| 
      
 72 
     | 
    
         
            +
                                           ).and_return(dummy_open)
         
     | 
| 
      
 73 
     | 
    
         
            +
                      allow( dummy_open ).to receive(:read).and_return(single_record_xml)
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                      subject._export 'core_company', encoded_query, max_export
         
     | 
| 
      
 76 
     | 
    
         
            +
                    end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                    it 'should return an array with one hash' do
         
     | 
| 
      
 79 
     | 
    
         
            +
                      allow( subject ).to receive(:open).and_return(dummy_open)
         
     | 
| 
      
 80 
     | 
    
         
            +
                      allow( dummy_open ).to receive(:read).and_return(single_record_xml)
         
     | 
| 
      
 81 
     | 
    
         
            +
                      expect( subject._export 'core_company', encoded_query, max_export ).to be == [single_record_hash]
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
                  end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                  context 'multiple results' do
         
     | 
| 
      
 86 
     | 
    
         
            +
                    let(:multi_xml_return0) { make_multiple_xml 0, 100 }
         
     | 
| 
      
 87 
     | 
    
         
            +
                    let(:multi_xml_return1) { make_multiple_xml 100, 200 }
         
     | 
| 
      
 88 
     | 
    
         
            +
                    let(:multi_xml_return2) { make_multiple_xml 200, 252 }
         
     | 
| 
      
 89 
     | 
    
         
            +
                    let(:sys_ids) { (0..299).map { |num| "deadbeefdeadbeefdeadbeefdead#{num}" }.join(',') }
         
     | 
| 
      
 90 
     | 
    
         
            +
                    let(:export_url0) { "https://reporting.service-now.com/core_company.do?XML&sysparm_order_by=sys_id&sysparm_query=#{CGI.escape(encoded_query + '^')}sys_id#{CGI.escape('>=') + "deadbeefdeadbeefdeadbeefdead0"}&sysparm_record_count=#{max_export}" }
         
     | 
| 
      
 91 
     | 
    
         
            +
                    let(:export_url1) { "https://reporting.service-now.com/core_company.do?XML&sysparm_order_by=sys_id&sysparm_query=#{CGI.escape(encoded_query + '^')}sys_id#{CGI.escape('>=') + "deadbeefdeadbeefdeadbeefdead100"}&sysparm_record_count=#{max_export}" }
         
     | 
| 
      
 92 
     | 
    
         
            +
                    let(:export_url2) { "https://reporting.service-now.com/core_company.do?XML&sysparm_order_by=sys_id&sysparm_query=#{CGI.escape(encoded_query + '^')}sys_id#{CGI.escape('>=') + "deadbeefdeadbeefdeadbeefdead200"}&sysparm_record_count=#{max_export}" }
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                    before :each do
         
     | 
| 
      
 95 
     | 
    
         
            +
                      allow( subject ).to receive(:get_keys).and_return({:count => "251", :sys_id => sys_ids})
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                    end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                    it 'should get records 100 at a time using sys_ids as the index' do
         
     | 
| 
      
 100 
     | 
    
         
            +
                      expect( subject ).to receive(:open).with(export_url0, :http_basic_authentication => ["user", "supersekrit"]).and_return(dummy_open)
         
     | 
| 
      
 101 
     | 
    
         
            +
                      expect( subject ).to receive(:open).with(export_url1, :http_basic_authentication => ["user", "supersekrit"]).and_return(dummy_open)
         
     | 
| 
      
 102 
     | 
    
         
            +
                      expect( subject ).to receive(:open).with(export_url2, :http_basic_authentication => ["user", "supersekrit"]).and_return(dummy_open)
         
     | 
| 
      
 103 
     | 
    
         
            +
                      allow( dummy_open ).to receive(:read).and_return(multi_xml_return0, multi_xml_return1, multi_xml_return2)
         
     | 
| 
      
 104 
     | 
    
         
            +
                      subject._export 'core_company', encoded_query, max_export
         
     | 
| 
      
 105 
     | 
    
         
            +
                    end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                    it 'should parse the xml and return an array of hashes' do
         
     | 
| 
      
 108 
     | 
    
         
            +
                      allow( subject ).to receive(:open).and_return(dummy_open)
         
     | 
| 
      
 109 
     | 
    
         
            +
                      allow( dummy_open ).to receive(:read).and_return(multi_xml_return0, multi_xml_return1, multi_xml_return2)
         
     | 
| 
      
 110 
     | 
    
         
            +
                      expect( subject._export 'core_company', encoded_query, max_export ).to be == multi_record_hash
         
     | 
| 
      
 111 
     | 
    
         
            +
                    end
         
     | 
| 
      
 112 
     | 
    
         
            +
                  end
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                describe '#get' do
         
     | 
| 
      
 117 
     | 
    
         
            +
                  let(:dummy_client) { Object.new }
         
     | 
| 
      
 118 
     | 
    
         
            +
                  let(:dummy_response) { Object.new }
         
     | 
| 
      
 119 
     | 
    
         
            +
                  let(:get_response) { make_record_hash }
         
     | 
| 
      
 120 
     | 
    
         
            +
                  let(:dummy_response_hash) { {:envelope => {:body => {:get_response => get_response } } } }
         
     | 
| 
      
 121 
     | 
    
         
            +
                  let(:sys_id) { "deadbeefdeadbeefdeadbeefdeadbeef" }
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 124 
     | 
    
         
            +
                    allow( subject ).to receive(:setup_client).and_return(dummy_client)
         
     | 
| 
      
 125 
     | 
    
         
            +
                    allow( dummy_response ).to receive(:hash).and_return(dummy_response_hash)
         
     | 
| 
      
 126 
     | 
    
         
            +
                    allow( dummy_client ).to receive(:call).and_return(dummy_response)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
                  it 'should return a hash' do
         
     | 
| 
      
 130 
     | 
    
         
            +
                    expect( dummy_client ).to receive(:call).with(:get, :message => {:sys_id => sys_id})
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                    expect( subject._get("core_company", sys_id) ).to be == get_response
         
     | 
| 
      
 133 
     | 
    
         
            +
                  end
         
     | 
| 
      
 134 
     | 
    
         
            +
                end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                describe '#_insert' do
         
     | 
| 
      
 137 
     | 
    
         
            +
                  let(:dummy_client) { Object.new }
         
     | 
| 
      
 138 
     | 
    
         
            +
                  let(:dummy_response) { Object.new }
         
     | 
| 
      
 139 
     | 
    
         
            +
                  let(:insert_response) { make_insert_response_hash }
         
     | 
| 
      
 140 
     | 
    
         
            +
                  let(:insert_request) { 
         
     | 
| 
      
 141 
     | 
    
         
            +
                    {
         
     | 
| 
      
 142 
     | 
    
         
            +
                      :active => true,
         
     | 
| 
      
 143 
     | 
    
         
            +
                      :assigned_to => "me",
         
     | 
| 
      
 144 
     | 
    
         
            +
                      :cmdb_ci => "router1",
         
     | 
| 
      
 145 
     | 
    
         
            +
                      :severity => 1,
         
     | 
| 
      
 146 
     | 
    
         
            +
                      :urgency => 1,
         
     | 
| 
      
 147 
     | 
    
         
            +
                    }
         
     | 
| 
      
 148 
     | 
    
         
            +
                  }
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 151 
     | 
    
         
            +
                    allow( subject ).to receive(:setup_client).and_return(dummy_client)
         
     | 
| 
      
 152 
     | 
    
         
            +
                    allow( dummy_response ).to receive(:hash).and_return(insert_response)
         
     | 
| 
      
 153 
     | 
    
         
            +
                    allow( dummy_client ).to receive(:call).and_return(dummy_response)
         
     | 
| 
      
 154 
     | 
    
         
            +
                  end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
                  it 'should return a sys_id' do
         
     | 
| 
      
 157 
     | 
    
         
            +
                    expect( dummy_client ).to receive(:call).with(:insert, :message => insert_request)
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                    expect( subject._insert("incident", insert_request) ).to be == "deadbeefdeadbeefdeadbeefdeadbeef"
         
     | 
| 
      
 160 
     | 
    
         
            +
                  end
         
     | 
| 
      
 161 
     | 
    
         
            +
                end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                describe '#_update' do
         
     | 
| 
      
 164 
     | 
    
         
            +
                        let(:dummy_client) { Object.new }
         
     | 
| 
      
 165 
     | 
    
         
            +
                  let(:dummy_response) { Object.new }
         
     | 
| 
      
 166 
     | 
    
         
            +
                  let(:update_response) { make_insert_response_hash }
         
     | 
| 
      
 167 
     | 
    
         
            +
                  let(:update_request) { 
         
     | 
| 
      
 168 
     | 
    
         
            +
                    {
         
     | 
| 
      
 169 
     | 
    
         
            +
                      :active => true,
         
     | 
| 
      
 170 
     | 
    
         
            +
                    }
         
     | 
| 
      
 171 
     | 
    
         
            +
                  }
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 174 
     | 
    
         
            +
                    allow( subject ).to receive(:setup_client).and_return(dummy_client)
         
     | 
| 
      
 175 
     | 
    
         
            +
                    allow( dummy_response ).to receive(:hash).and_return(update_response)
         
     | 
| 
      
 176 
     | 
    
         
            +
                    allow( dummy_client ).to receive(:call).and_return(dummy_response)
         
     | 
| 
      
 177 
     | 
    
         
            +
                  end
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                  it 'should update the record' do
         
     | 
| 
      
 180 
     | 
    
         
            +
                    expect( dummy_client ).to receive(:call).with(:insert, :message => update_request)
         
     | 
| 
      
 181 
     | 
    
         
            +
                    subject._insert("incident", update_request)
         
     | 
| 
      
 182 
     | 
    
         
            +
                  end
         
     | 
| 
      
 183 
     | 
    
         
            +
                end
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
              end
         
     | 
| 
      
 186 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,20 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rs_service_now
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.3
         
     | 
| 
       6 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       8 
7 
     | 
    
         
             
            - nemski
         
     | 
| 
       9 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-03-23 00:00:00.000000000 Z
         
     | 
| 
       13 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
       16 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
     | 
    
         
            -
                none: false
         
     | 
| 
       18 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
17 
     | 
    
         
             
                - - ~>
         
     | 
| 
       20 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -22,7 +20,6 @@ dependencies: 
     | 
|
| 
       22 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       23 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       25 
     | 
    
         
            -
                none: false
         
     | 
| 
       26 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       27 
24 
     | 
    
         
             
                - - ~>
         
     | 
| 
       28 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -30,7 +27,6 @@ dependencies: 
     | 
|
| 
       30 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       31 
28 
     | 
    
         
             
              name: rake
         
     | 
| 
       32 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       33 
     | 
    
         
            -
                none: false
         
     | 
| 
       34 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       35 
31 
     | 
    
         
             
                - - ~>
         
     | 
| 
       36 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -38,7 +34,6 @@ dependencies: 
     | 
|
| 
       38 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       39 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       40 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       41 
     | 
    
         
            -
                none: false
         
     | 
| 
       42 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       43 
38 
     | 
    
         
             
                - - ~>
         
     | 
| 
       44 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -46,7 +41,6 @@ dependencies: 
     | 
|
| 
       46 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       47 
42 
     | 
    
         
             
              name: savon
         
     | 
| 
       48 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       49 
     | 
    
         
            -
                none: false
         
     | 
| 
       50 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       51 
45 
     | 
    
         
             
                - - ~>
         
     | 
| 
       52 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -54,7 +48,6 @@ dependencies: 
     | 
|
| 
       54 
48 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       55 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       56 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       57 
     | 
    
         
            -
                none: false
         
     | 
| 
       58 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
52 
     | 
    
         
             
                - - ~>
         
     | 
| 
       60 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -62,7 +55,6 @@ dependencies: 
     | 
|
| 
       62 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       63 
56 
     | 
    
         
             
              name: activesupport
         
     | 
| 
       64 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
     | 
    
         
            -
                none: false
         
     | 
| 
       66 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       67 
59 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
       68 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -70,7 +62,6 @@ dependencies: 
     | 
|
| 
       70 
62 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       71 
63 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       72 
64 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       73 
     | 
    
         
            -
                none: false
         
     | 
| 
       74 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       75 
66 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
       76 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -89,33 +80,40 @@ files: 
     | 
|
| 
       89 
80 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       90 
81 
     | 
    
         
             
            - lib/rs_service_now.rb
         
     | 
| 
       91 
82 
     | 
    
         
             
            - lib/rs_service_now/ci.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/rs_service_now/common.rb
         
     | 
| 
       92 
84 
     | 
    
         
             
            - lib/rs_service_now/company.rb
         
     | 
| 
       93 
85 
     | 
    
         
             
            - lib/rs_service_now/record.rb
         
     | 
| 
       94 
86 
     | 
    
         
             
            - lib/rs_service_now/version.rb
         
     | 
| 
       95 
87 
     | 
    
         
             
            - rs_service_now.gemspec
         
     | 
| 
      
 88 
     | 
    
         
            +
            - spec/helpers.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - spec/unit/records_spec.rb
         
     | 
| 
       96 
91 
     | 
    
         
             
            homepage: https://github.com/nemski/rs_service_now
         
     | 
| 
       97 
92 
     | 
    
         
             
            licenses:
         
     | 
| 
       98 
93 
     | 
    
         
             
            - BSD
         
     | 
| 
      
 94 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
       99 
95 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       100 
96 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       101 
97 
     | 
    
         
             
            require_paths:
         
     | 
| 
       102 
98 
     | 
    
         
             
            - lib
         
     | 
| 
       103 
99 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       104 
     | 
    
         
            -
              none: false
         
     | 
| 
       105 
100 
     | 
    
         
             
              requirements:
         
     | 
| 
       106 
101 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       107 
102 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       108 
103 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       109 
104 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       110 
     | 
    
         
            -
              none: false
         
     | 
| 
       111 
105 
     | 
    
         
             
              requirements:
         
     | 
| 
       112 
106 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       113 
107 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       114 
108 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       115 
109 
     | 
    
         
             
            requirements: []
         
     | 
| 
       116 
110 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       117 
     | 
    
         
            -
            rubygems_version:  
     | 
| 
      
 111 
     | 
    
         
            +
            rubygems_version: 2.4.6
         
     | 
| 
       118 
112 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       119 
     | 
    
         
            -
            specification_version:  
     | 
| 
      
 113 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
       120 
114 
     | 
    
         
             
            summary: A Ruby Soap ServiceNow interface.
         
     | 
| 
       121 
     | 
    
         
            -
            test_files: 
     | 
| 
      
 115 
     | 
    
         
            +
            test_files:
         
     | 
| 
      
 116 
     | 
    
         
            +
            - spec/helpers.rb
         
     | 
| 
      
 117 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - spec/unit/records_spec.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            has_rdoc: 
         
     |