rainforest-client 0.0.10

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 67f3f0495908c60093c5dcd1df844643a51d064a
4
+ data.tar.gz: 6e2d86568a94f96bf25dfcf85acefe5b6dd40f25
5
+ SHA512:
6
+ metadata.gz: 8fd7080807a7dd2a5656d3031f106bbecb36edf547141b0fbe8d595a6ebc39cbcf778704290fb9e23f8c9813aae692fe43310ad5ca2a29595b1fe3917289ee81
7
+ data.tar.gz: bb592ed884c0b1f4c645f46c2a140ece3af78d0f7905569542840c7e952035741a521220f14afe3dfea9c7b4e0183791fcd88dad5cf375b63777f7166c470358
data/.gitignore ADDED
@@ -0,0 +1,34 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swo
15
+ *.swp
16
+
17
+ ## PROJECT::GENERAL
18
+ config/mixpanel.yml
19
+ coverage
20
+ rdoc
21
+ pkg
22
+ doc
23
+ .yardoc
24
+
25
+ ## PROJECT::SPECIFIC
26
+ test/
27
+ tmp/
28
+
29
+ ## Bundler/Gems
30
+ *.gem
31
+ .bundle
32
+ Gemfile.lock
33
+ pkg/*
34
+ bin/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ rainforest-client
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.0.0-p247
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rainforest-cli.gemspec
4
+ gemspec
5
+
6
+ group :test do
7
+ gem "rspec"
8
+ end
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ [![Build Status](https://travis-ci.org/kureikain/rainforest-gem.png)](https://travis-ci.org/kureikain/rainforest-gem)
2
+
3
+ # Rainforest-client
4
+
5
+ API Client for RainForest
6
+
7
+ ## Installation
8
+
9
+ $ gem install rainforest-client
10
+
11
+ or if you use a Gemfile
12
+
13
+ gem 'rainforest_client'
14
+
15
+ or you can use direcly from github
16
+
17
+ gem 'rainforest-client',
18
+ :git => 'https://github.com/kureikain/rainforest-gem',
19
+ :branch => 'master'
20
+
21
+ ## Usage
22
+
23
+ You can access end-point directly, via request method and receive JSON data back. Or use resource wrapper.
24
+
25
+ ### Access API directly
26
+
27
+ require 'rubygems'
28
+ require 'rainforest-client'
29
+
30
+ Rainforest::Client.api_key="1f98f025af50d0d6732e79625abb5a06"
31
+
32
+ api = Rainforest::Client.new
33
+ payload = {tests: [2286]}
34
+
35
+ runs = api.request('runs', payload)
36
+ puts runs
37
+
38
+ # Or to get runs
39
+ runs = api.request('runs', payload, :get)
40
+ puts runs
41
+
42
+ # Get a particular resource
43
+
44
+ runs = api.request('runs/2286', nil, :get)
45
+ puts runs
46
+
47
+ ### Or via object/resource wrapper
48
+
49
+ runs = Rainforest::Runs.new
50
+ puts runs.retrieve
51
+
52
+ puts runs.retrieve 4208898
53
+ puts runs.delete
54
+
55
+ # These are not implemented yet
56
+ test = Rainforest::Tests.new
57
+ test.create
58
+
59
+ puts runs.retrieve 4208898
60
+
61
+ ## Test
62
+ $ rake spec
63
+
64
+ ## Changelog
65
+
66
+ ### v0.0.2
67
+ * Separate API client and resource
68
+ * Add error handle via parsing response from API endpoint
69
+
70
+ ### v0.0.1
71
+ * Experimental
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rubygems'
3
+ require 'rake'
4
+
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ require 'rspec/core/rake_task'
8
+
9
+ desc 'Run all default tests'
10
+ RSpec::Core::RakeTask.new(:spec) do |spec|
11
+ #spec.pattern = 'spec/**/*_spec.rb'
12
+ spec.rspec_opts = ['--format doc --color']
13
+ end
14
+
15
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
16
+ spec.pattern = 'spec/**/*_spec.rb'
17
+ spec.rcov = true
18
+ end
19
+
20
+ task :spec
21
+ task :default => :spec
@@ -0,0 +1,70 @@
1
+ require "rainforest/client/version"
2
+ require "rainforest/resource/base"
3
+ require "rainforest/resource/runs"
4
+ require "httparty"
5
+ require "json"
6
+
7
+ module Rainforest
8
+ class ConfigurationError < StandardError; end
9
+
10
+ class Client
11
+ @@api_key = nil
12
+ API_END_POINT = 'https://app.rainforestqa.com/api/1/'
13
+
14
+ def self.api_key=(api_key)
15
+ @@api_key = api_key
16
+ end
17
+ def self.api_key
18
+ @@api_key
19
+ end
20
+
21
+ def initialize
22
+ end
23
+
24
+ # More information about resource at: https://app.rainforestqa.com/docs
25
+ def build_request_uri(resource)
26
+ _resource = resource.split('/')[0]
27
+ raise ArgumentError, 'resource is invalid' unless ['auth', 'clients', 'runs', 'tests', 'environments', 'pricing_plan'].include? _resource
28
+ return "#{API_END_POINT}#{resource}"
29
+ end
30
+
31
+ def request(cmd, payload, method = :post)
32
+ raise Rainforest::ConfigurationError, "Client token is missing" if @@api_key == nil
33
+
34
+ url = build_request_uri(cmd)
35
+ payload = payload.to_json if payload.class == Hash
36
+
37
+ if [:get, :post, :put, :delete].include? method
38
+ case method
39
+ when :get
40
+ response = HTTParty.get url, {
41
+ body: payload,
42
+ headers: {"CLIENT_TOKEN" => @@api_key, "Content-type" => "application/json"}
43
+ }
44
+ when :post
45
+ response = HTTParty.post url, {
46
+ body: payload,
47
+ headers: {"CLIENT_TOKEN" => @@api_key, "Content-type" => "application/json"}
48
+ }
49
+ when :put
50
+ response = HTTParty.put url, {
51
+ body: payload,
52
+ headers: {"CLIENT_TOKEN" => @@api_key, "Content-type" => "application/json"}
53
+ }
54
+ when :delete
55
+ response = HTTParty.delete url, {
56
+ body: payload,
57
+ headers: {"CLIENT_TOKEN" => @@api_key, "Content-type" => "application/json"}
58
+ }
59
+ end
60
+ body = JSON.parse(response.body)
61
+ if body.include? 'error'
62
+ raise body['error']
63
+ end
64
+ return JSON.parse(response.body)
65
+ end
66
+ raise ArgumentError, "Invalid Method. We support only: :get, :post, :put, :delete"
67
+ end
68
+
69
+ end
70
+ end
@@ -0,0 +1,5 @@
1
+ module Rainforest
2
+ class Client
3
+ VERSION = "0.0.10"
4
+ end
5
+ end
@@ -0,0 +1,40 @@
1
+ require "json"
2
+
3
+ module Rainforest
4
+ class Resource
5
+
6
+ def initialize(hash=nil)
7
+ if hash.class == Hash
8
+ hash.each do |k,v|
9
+ self.instance_variable_set("@#{k}", v)
10
+ end
11
+ end
12
+ @api_client = Rainforest::Client.new
13
+
14
+ end
15
+
16
+ # Get resource
17
+ def retrieve(id=nil)
18
+ if id.is_a? Integer
19
+ object = self.class.name.split('::')[-1].downcase + '/' + id.to_s
20
+ @api_client.request(object, nil, :get)
21
+ else
22
+ object = self.class.name.split('::')[-1].downcase + '/' + id.to_s
23
+ @api_client.request(object, nil, :get)
24
+ end
25
+ end
26
+
27
+ # Create resource
28
+ def create
29
+ end
30
+
31
+ # Delete resource
32
+ def delete
33
+ end
34
+
35
+ # @TODO
36
+ def update
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ require "json"
2
+
3
+ module Rainforest
4
+ class Runs < Resource
5
+ attr_accessor :id,
6
+ :created_at,
7
+ :environment_id,
8
+ :test_count,
9
+ :state_log,
10
+ :state,
11
+ :result,
12
+ :expected_wait_time,
13
+ :browsers,
14
+ :requested_tests
15
+
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ require "rainforest/client"
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rainforest/client/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rainforest-client"
8
+ spec.version = Rainforest::Client::VERSION
9
+ spec.authors = ["Simon Mathieu", "Russell Smith", "kureikain"]
10
+ spec.email = ["simon@rainforestqa.com", "russ@rainforestqa.com"]
11
+ spec.description = %q{API Client for RainforestQA}
12
+ spec.summary = %q{API Client for RainforestQA}
13
+ spec.homepage = "https://www.rainforestqa.com/"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_dependency "httparty"
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ end
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+ require 'ostruct'
3
+
4
+ describe Rainforest::Client do
5
+ # Should keep this API key for tets only
6
+ let(:api_key) { '1f98f025af50d0d6732e79625abb5a06'}
7
+ subject do
8
+ Rainforest::Client.new
9
+ end
10
+
11
+ it "should create a new instance" do
12
+ subject.should be_an_instance_of Rainforest::Client
13
+ end
14
+
15
+ it 'should update API key' do
16
+ Rainforest::Client.api_key = api_key
17
+ Rainforest::Client.api_key.should == api_key
18
+ end
19
+
20
+ describe '#build_request_uri' do
21
+ it "should throw error with nil resource" do
22
+ expect { subject.build_request_uri}.to raise_error ArgumentError
23
+ end
24
+
25
+ it "should throw error with empty resource" do
26
+ expect { subject.build_request_uri(' ')}.to raise_error ArgumentError
27
+ end
28
+
29
+ it "should throw error with invalid resource" do
30
+ expect { subject.build_request_uri('unknow resource')}.to raise_error ArgumentError
31
+ end
32
+
33
+ it "build correct end point" do
34
+ subject.build_request_uri('runs').should == 'https://app.rainforestqa.com/api/1/runs'
35
+ end
36
+ end
37
+
38
+ describe '#request' do
39
+ context "with invalid param" do
40
+ it "should raise error without an API token" do
41
+ Rainforest::Client.api_key = nil
42
+ expect { subject.request('runs', {}, :get)}.to raise_error Rainforest::ConfigurationError
43
+ end
44
+ it "should raise error with input argument" do
45
+ Rainforest::Client.api_key = api_key
46
+ expect { subject.request('lopruns', {}, :invalid)}.to raise_error ArgumentError
47
+ end
48
+ end
49
+
50
+ context "with valid param" do
51
+ before(:each) do
52
+ Rainforest::Client.api_key = api_key
53
+ end
54
+
55
+ it "should retrieve all runs" do
56
+ payload = {tests: [2286]}
57
+ uri = subject.build_request_uri('runs')
58
+ HTTParty.stub(:get).with(uri, {body: "{}", headers: {"CLIENT_TOKEN" => api_key, "Content-type" => "application/json"}}) do
59
+ OpenStruct.new({body: '[{"id":4337,"object":"Run","created_at":"2013-11-16T08:30:36Z","environment_id":1235,"test_count":1,"state_log":[{"created_at":"2013-11-16T08:30:46Z","event":"validate_run!","from":"queued","id":11846764,"state_column":"state","stateful_id":4337,"stateful_type":"Run","to":"validating","transitioned_at":"2013-11-16T08:30:46Z","updated_at":"2013-11-16T08:30:46Z"},{"created_at":"2013-11-16T08:30:46Z","event":"validated!","from":"validating","id":11846763,"state_column":"state","stateful_id":4337,"stateful_type":"Run","to":"in_progress","transitioned_at":"2013-11-16T08:30:46Z","updated_at":"2013-11-16T08:30:46Z"}],"state":"in_progress","result":"no_result","expected_wait_time":5400.0,"browsers":[{"name":"chrome","state":"enabled"},{"name":"firefox","state":"enabled"},{"name":"ie8","state":"enabled"},{"name":"ie9","state":"enabled"},{"name":"safari","state":"enabled"}],"requested_tests":[2286]},{"id":4270,"object":"Run","created_at":"2013-11-14T05:47:46Z","environment_id":1235,"test_count":1,"state_log":[{"created_at":"2013-11-14T06:06:54Z","event":"complete!","from":"in_progress","id":11780317,"state_column":"state","stateful_id":4270,"stateful_type":"Run","to":"complete","transitioned_at":"2013-11-14T06:06:54Z","updated_at":"2013-11-14T06:06:54Z"},{"created_at":"2013-11-14T06:06:44Z","event":"failed!","from":"no_result","id":11780303,"state_column":"result","stateful_id":4270,"stateful_type":"Run","to":"failed","transitioned_at":"2013-11-14T06:06:44Z","updated_at":"2013-11-14T06:06:44Z"},{"created_at":"2013-11-14T06:06:43Z","event":"failed!","from":"no_result","id":11780301,"state_column":"result","stateful_id":4270,"stateful_type":"Run","to":"failed","transitioned_at":"2013-11-14T06:06:43Z","updated_at":"2013-11-14T06:06:43Z"},{"created_at":"2013-11-14T05:48:05Z","event":"validate_run!","from":"queued","id":11779865,"state_column":"state","stateful_id":4270,"stateful_type":"Run","to":"validating","transitioned_at":"2013-11-14T05:48:05Z","updated_at":"2013-11-14T05:48:05Z"},{"created_at":"2013-11-14T05:48:05Z","event":"validated!","from":"validating","id":11779864,"state_column":"state","stateful_id":4270,"stateful_type":"Run","to":"in_progress","transitioned_at":"2013-11-14T05:48:05Z","updated_at":"2013-11-14T05:48:05Z"}],"state":"complete","result":"failed","expected_wait_time":5400.0,"browsers":[{"name":"chrome","state":"enabled"},{"name":"firefox","state":"enabled"},{"name":"ie8","state":"enabled"},{"name":"ie9","state":"enabled"},{"name":"safari","state":"enabled"}],"requested_tests":[2286]},{"id":4269,"object":"Run","created_at":"2013-11-14T05:30:51Z","environment_id":1235,"test_count":1,"state_log":[{"created_at":"2013-11-14T05:54:29Z","event":"complete!","from":"in_progress","id":11780079,"state_column":"state","stateful_id":4269,"stateful_type":"Run","to":"complete","transitioned_at":"2013-11-14T05:54:29Z","updated_at":"2013-11-14T05:54:29Z"},{"created_at":"2013-11-14T05:48:01Z","event":"failed!","from":"failed","id":11779840,"state_column":"result","stateful_id":4269,"stateful_type":"Run","to":"failed","transitioned_at":"2013-11-14T05:48:01Z","updated_at":"2013-11-14T05:48:01Z"},{"created_at":"2013-11-14T05:36:19Z","event":"failed!","from":"no_result","id":11779597,"state_column":"result","stateful_id":4269,"stateful_type":"Run","to":"failed","transitioned_at":"2013-11-14T05:36:19Z","updated_at":"2013-11-14T05:36:19Z"},{"created_at":"2013-11-14T05:36:18Z","event":"failed!","from":"no_result","id":11779595,"state_column":"result","stateful_id":4269,"stateful_type":"Run","to":"failed","transitioned_at":"2013-11-14T05:36:18Z","updated_at":"2013-11-14T05:36:18Z"},{"created_at":"2013-11-14T05:31:05Z","event":"validate_run!","from":"queued","id":11779400,"state_column":"state","stateful_id":4269,"stateful_type":"Run","to":"validating","transitioned_at":"2013-11-14T05:31:05Z","updated_at":"2013-11-14T05:31:05Z"},{"created_at":"2013-11-14T05:31:05Z","event":"validated!","from":"validating","id":11779399,"state_column":"state","stateful_id":4269,"stateful_type":"Run","to":"in_progress","transitioned_at":"2013-11-14T05:31:05Z","updated_at":"2013-11-14T05:31:05Z"}],"state":"complete","result":"failed","expected_wait_time":5400.0,"browsers":[{"name":"chrome","state":"enabled"},{"name":"firefox","state":"enabled"},{"name":"ie8","state":"enabled"},{"name":"ie9","state":"enabled"},{"name":"safari","state":"enabled"}],"requested_tests":[2285]}]'})
60
+ end
61
+ runs = subject.request('runs', {}, :get)
62
+ expect(runs.count).to eq(3)
63
+ expect(runs[0]['id']).to eq(4337)
64
+ expect(runs[0]['object']).to eq('Run')
65
+ end
66
+
67
+ it "should create a run" do
68
+ payload = {tests: [2286]}
69
+ uri = subject.build_request_uri('runs')
70
+ HTTParty.stub(:post).with(uri, {body: payload.to_json, headers: {"CLIENT_TOKEN" => api_key, "Content-type" => "application/json"}}) do
71
+ OpenStruct.new({:body=> '{"id":4338,"object":"Run","created_at":"2013-11-16T09:03:19Z","environment_id":1235,"test_count":0,"state_log":[],"state":"queued","result":"no_result","expected_wait_time":5400.0,"browsers":[{"name":"chrome","state":"disabled"},{"name":"firefox","state":"disabled"},{"name":"ie8","state":"disabled"},{"name":"ie9","state":"disabled"},{"name":"safari","state":"disabled"}],"requested_tests":[2286]}'})
72
+ end
73
+ runs = subject.request('runs', payload, :post)
74
+ expect(runs['id']).to eq(4338)
75
+ expect(runs['object']).to eq('Run')
76
+ end
77
+
78
+ it "should abort a run" do
79
+ run_id = 4338
80
+ payload = {:run => run_id}
81
+ uri = subject.build_request_uri('runs/4338')
82
+ HTTParty.stub(:delete).with(uri, {body: payload.to_json, headers: {"CLIENT_TOKEN" => api_key, "Content-type" => "application/json"}}) do
83
+ OpenStruct.new({:body=> '{"id":4338,"object":"Run","created_at":"2013-11-16T09:03:19Z","environment_id":1235,"test_count":1,"state_log":[{"created_at":"2013-11-16T09:14:13Z","event":"abort!","from":"in_progress","id":11847319,"state_column":"state","stateful_id":4338,"stateful_type":"Run","to":"aborted","transitioned_at":"2013-11-16T09:14:13Z","updated_at":"2013-11-16T09:14:13Z"},{"created_at":"2013-11-16T09:03:39Z","event":"validate_run!","from":"queued","id":11847142,"state_column":"state","stateful_id":4338,"stateful_type":"Run","to":"validating","transitioned_at":"2013-11-16T09:03:39Z","updated_at":"2013-11-16T09:03:39Z"},{"created_at":"2013-11-16T09:03:39Z","event":"validated!","from":"validating","id":11847141,"state_column":"state","stateful_id":4338,"stateful_type":"Run","to":"in_progress","transitioned_at":"2013-11-16T09:03:39Z","updated_at":"2013-11-16T09:03:39Z"}],"state":"aborted","result":"no_result","expected_wait_time":5400.0,"browsers":[{"name":"chrome","state":"enabled"},{"name":"firefox","state":"enabled"},{"name":"ie8","state":"enabled"},{"name":"ie9","state":"enabled"},{"name":"safari","state":"enabled"}],"requested_tests":[2286]}'})
84
+ end
85
+ runs = subject.request('runs/4338', payload, :delete)
86
+ expect(runs['id']).to eq(4338)
87
+ expect(runs['state']).to eq('aborted')
88
+ expect(runs['state_log'][0]['to']).to eq('aborted')
89
+ end
90
+ end
91
+ end
92
+
93
+ end
@@ -0,0 +1,13 @@
1
+ require "rainforest_client"
2
+
3
+ RSpec.configure do |config|
4
+ config.treat_symbols_as_metadata_keys_with_true_values = true
5
+ config.run_all_when_everything_filtered = true
6
+ config.filter_run :focus
7
+
8
+ # Run specs in random order to surface order dependencies. If you find an
9
+ # order dependency and want to debug it, you can fix the order by providing
10
+ # the seed, which is printed after each run.
11
+ # --seed 1234
12
+ config.order = 'random'
13
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rainforest-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.10
5
+ platform: ruby
6
+ authors:
7
+ - Simon Mathieu
8
+ - Russell Smith
9
+ - kureikain
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-11-16 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: httparty
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: bundler
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '1.3'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.3'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rake
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ description: API Client for RainforestQA
58
+ email:
59
+ - simon@rainforestqa.com
60
+ - russ@rainforestqa.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - .rspec
67
+ - .ruby-gemset
68
+ - .ruby-version
69
+ - .travis.yml
70
+ - Gemfile
71
+ - README.md
72
+ - Rakefile
73
+ - lib/rainforest/client.rb
74
+ - lib/rainforest/client/version.rb
75
+ - lib/rainforest/resource/base.rb
76
+ - lib/rainforest/resource/runs.rb
77
+ - lib/rainforest_client.rb
78
+ - rainforest-client.gemspec
79
+ - spec/rainforest/client_spec.rb
80
+ - spec/spec_helper.rb
81
+ homepage: https://www.rainforestqa.com/
82
+ licenses:
83
+ - MIT
84
+ metadata: {}
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubyforge_project:
101
+ rubygems_version: 2.1.5
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: API Client for RainforestQA
105
+ test_files:
106
+ - spec/rainforest/client_spec.rb
107
+ - spec/spec_helper.rb