Sha256: ec002c87aa7605d6bff9e9dd67ae323345d692caab6963a9ccc8807b5bfbcc4b

Contents?: true

Size: 1.06 KB

Versions: 8

Compression:

Stored size: 1.06 KB

Contents

require 'fileutils'
require 'net/http'

module Vault::Test
  module SpecHelpers
    extend self

    def usage_json
      vault_spec('usage.json')
    end

    def statement_json
      vault_spec('statement.json')
    end

    # Memoizes return value so we don't keep making a request to download the
    # spec.
    def vault_spec(filename)
      return cache[filename] if cache[filename]
      cache[filename] = read_spec(filename)
    end

    def reset_vault_specs!
      @@cache = {}
    end

    protected

    def cache
      @@cache ||= {}
    end

    def url(name)
      "http://vault-specs.herokuapp.com/#{name}"
    end

    def file(name)
      "./test/support/#{name}"
    end

    # Uses JSON at URL when it can, but will use the cached statement when it
    # can't.
    def read_spec(name)
      data = ::Net::HTTP.get(URI.parse(url(name)))
      FileUtils.mkdir_p(File.dirname(file(name)))
      File.open(file(name), 'w') { |f| f << data }
      data
    rescue => e
      $stderr.puts "#{e.message} -> Using cached #{name}"
      File.read(file(name))
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
vault-test-tools-1.1.0 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-1.0.0 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-0.4.2 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-0.3.9 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-0.3.8 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-0.3.7 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-0.3.6 lib/vault-test-tools/spec_helpers.rb
vault-test-tools-0.3.5 lib/vault-test-tools/spec_helpers.rb