sauce_whisk 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6717ade4669ce3a554eb06382fe85c019b2d1e1c
4
- data.tar.gz: 9e39048eec377e8815d9f9a2ab19375f708fcebb
3
+ metadata.gz: b58bf72d04b598a6481cf55f18f9e2e56303907a
4
+ data.tar.gz: 41b817b03dce1171362b43ac3de941da0e1ed7f1
5
5
  SHA512:
6
- metadata.gz: b6e0d5c49ff04e5435c950c753f65803759c97dd5ad34df0819b8b91db81ffbde05a4536ac6e7dccaa838a16c9d66fc00f67a0520e6be8b77d1b3480229ff399
7
- data.tar.gz: 575a488d8d8f5e40aad0f3343e095e2118c13aa7fc05742d58cb0a507c343c5afd18bcb0e9d32edb876d332ae58970ff1ce7561aee2ac29b37eab5523235e03e
6
+ metadata.gz: c06d53dc011a497b69825bc1cb2916765b146f5d03f85f510a8b48035959a0a6b5807bb2351b70ebf1506fa73c6c3d3f8e1ea9722312dbf360dd8ec61da087cb
7
+ data.tar.gz: a4ba5f66c7751d18e3dac1078e2aaed243d4c9ff31762d4f8d6926562f863708574eb4a6f017faed815256a37ad497a400a6ad5b9212c322b0be7074cb74e57a
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.1.1
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "pry"
3
+ gem 'pry'
4
4
  gem 'psych', '~> 2.0.0'
5
5
 
6
6
  gemspec
data/README.md CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  SauceWhisk provides an "ActiveRecord" style client for the [Sauce Labs](http://www.saucelabs.com) RESTful API. If you're not using the [Sauce Gem](https://rubygems.org/gems/sauce) and you want a nice way to interact with our API, give this a try.
4
4
 
5
- [![Build Status](https://travis-ci.org/DylanLacey/sauce_whisk.png)](https://travis-ci.org/DylanLacey/sauce_whisk)
5
+ [![Build Status](https://travis-ci.org/saucelabs/sauce_whisk.svg?branch=v0.0.12)](https://travis-ci.org/saucelabs/sauce_whisk)
6
+ [![Dependency Status](https://gemnasium.com/saucelabs/sauce_whisk.svg)](https://gemnasium.com/saucelabs/sauce_whisk)
6
7
 
7
8
  ## Installation
8
9
 
@@ -255,6 +256,32 @@ SauceWhisk.logger = my_logger
255
256
 
256
257
  SauceWhisk.logger defaults to STDOUT.
257
258
 
259
+ ### Storage
260
+
261
+ Create a new [storage object](http://saucelabs.com/docs/rest#storage):
262
+
263
+ ```ruby
264
+ storage = SauceWhisk::Storage.new username: 'my_user_name', key: '00', debug: true
265
+ ```
266
+
267
+ If the environment variables SAUCE_USERNAME and SAUCE_ACCESS_KEY are set then:
268
+
269
+ ```ruby
270
+ storage = SauceStorage.new debug: true
271
+ ```
272
+
273
+ List all files in storage.
274
+
275
+ ```ruby
276
+ storage.files
277
+ ```
278
+
279
+ Upload a file.
280
+
281
+ ```ruby
282
+ storage.upload '/tmp/sauce/test.zip'
283
+ ```
284
+
258
285
  ## Contributing
259
286
 
260
287
  1. Fork the [sauce-labs version](https://github.com/saucelabs/sauce_whisk) of this repository
data/Rakefile CHANGED
@@ -1,10 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'rspec/core/rake_task'
3
2
 
4
3
  Bundler::GemHelper.install_tasks
5
4
 
6
- task :default => :test
7
- Rake::TestTask.new do |t|
8
- t.test_files = FileList['spec/lib/*_spec.rb']
9
- t.test_files = FileList['spec/*_spec.rb']
10
- end
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ # If these are nil then the tests will fail
8
+ ENV['SAUCE_USERNAME'] ||= 'test_user'
9
+ ENV['SAUCE_ACCESS_KEY'] ||= 'test_key'
10
+
11
+ task :default => :spec
@@ -1,4 +1,10 @@
1
1
  # Major Version 0
2
+ ### 0.0.13
3
+ * Sauce storage support added (Thanks @bootstraponline)
4
+ * Various gem build quality fixes (Thanks @bootstraponline)
5
+ ### 0.0.12
6
+ * Added additional minute types
7
+
2
8
  ### 0.0.8
3
9
  * Correctly read Sauce Config
4
10
 
@@ -5,6 +5,7 @@ require "sauce_whisk/assets"
5
5
  require "sauce_whisk/tunnels"
6
6
  require "sauce_whisk/info"
7
7
  require "sauce_whisk/accounts"
8
+ require "sauce_whisk/storage"
8
9
 
9
10
  require 'yaml'
10
11
 
@@ -0,0 +1,42 @@
1
+ require 'rubygems'
2
+ require 'restclient'
3
+ require 'json'
4
+
5
+ module SauceWhisk
6
+ class Storage
7
+ attr_reader :username, :key, :url, :debug
8
+
9
+ def initialize opts={}
10
+ @username = opts.fetch :username, ENV['SAUCE_USERNAME']
11
+ @key = opts.fetch :key, ENV['SAUCE_ACCESS_KEY']
12
+ @url = "https://#{@username}:#{@key}@saucelabs.com/rest/v1/storage/#{@username}"
13
+ @debug = opts.fetch :debug, false
14
+ end
15
+
16
+ def upload file_path
17
+ file_name = File.basename file_path
18
+ file = File.new file_path
19
+ local_md5 = Digest::MD5.hexdigest File.read file_path
20
+
21
+ self.files.each do |file|
22
+ if file['md5'] == local_md5
23
+ puts 'File already uploaded' if @debug
24
+ return true
25
+ end
26
+ end
27
+
28
+ url = "#{@url}/#{file_name}?overwrite=true"
29
+ remote_md5 = JSON.parse(RestClient.post url, file, content_type: 'application/octet-stream')['md5']
30
+ if @debug
31
+ puts "Uploaded #{file_path}"
32
+ puts " local_md5: #{local_md5}"
33
+ puts "remote_md5: #{remote_md5}"
34
+ end
35
+ local_md5 == remote_md5
36
+ end
37
+
38
+ def files
39
+ JSON.parse(RestClient.get @url)['files']
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module SauceWhisk
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -4,24 +4,25 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'sauce_whisk/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.name = "sauce_whisk"
8
- gem.version = SauceWhisk::VERSION
9
- gem.authors = ["Dylan Lacey"]
10
- gem.email = ["github@dylanlacey.com"]
11
- gem.description = "A Wrapper for the Sauce Labs REST API."
12
- gem.summary = "Sauce_Whisk lets you mix extra data into your Sauce test results!\nFetch and update Job details, screenshots, videos and logs."
13
- gem.homepage = "http://www.github.com/dylanlacey/sauce_whisk"
7
+ gem.name = 'sauce_whisk'
8
+ gem.version = SauceWhisk::VERSION
9
+ gem.authors = ['Dylan Lacey']
10
+ gem.email = ['github@dylanlacey.com']
11
+ gem.description = 'A Wrapper for the Sauce Labs REST API.'
12
+ gem.summary = "Sauce_Whisk lets you mix extra data into your Sauce test results!\nFetch and update Job details, screenshots, videos and logs."
13
+ gem.homepage = 'http://www.github.com/dylanlacey/sauce_whisk'
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ["lib"]
18
+ gem.require_paths = ['lib']
19
19
 
20
- gem.license = "MIT"
20
+ gem.license = 'MIT'
21
21
 
22
- gem.add_runtime_dependency "rest-client"
23
- gem.add_development_dependency "vcr"
24
- gem.add_development_dependency "webmock"
25
- gem.add_development_dependency "rspec"
26
- gem.add_development_dependency "rake"
22
+ gem.add_runtime_dependency 'rest-client', '~> 1.6.7'
23
+ gem.add_runtime_dependency 'json', '~> 1.8.1'
24
+ gem.add_development_dependency 'vcr', '~> 2.9.0'
25
+ gem.add_development_dependency 'webmock', '~> 1.17.4'
26
+ gem.add_development_dependency 'rspec', '~> 2.14.1'
27
+ gem.add_development_dependency 'rake', '~> 10.2.2'
27
28
  end
@@ -161416,8 +161416,8 @@ http_interactions:
161416
161416
  __read_body_previously_called: true
161417
161417
  args:
161418
161418
  :method: :get
161419
- :url: https://saucelabs.com/rest/v1/dylanatsauce/jobs/aaaaaaaaaaaaaaaa/assets/0000screenshot.png
161420
- :user: dylanatsauce
161419
+ :url: https://saucelabs.com/rest/v1/<SAUCE_USERNAME>/jobs/aaaaaaaaaaaaaaaa/assets/0000screenshot.png
161420
+ :user: <SAUCE_USERNAME>
161421
161421
  :password: 8f5210dd-f0cf-477f-b720-9f721a9679a4
161422
161422
  code: 404
161423
161423
  http_version:
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://<SAUCE_USERNAME>:<SAUCE_ACCESS_KEY>@saucelabs.com/rest/v1/storage/<SAUCE_USERNAME>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx/0.7.62
23
+ Date:
24
+ - Sat, 29 Mar 2014 23:50:52 GMT
25
+ Content-Type:
26
+ - application/json
27
+ Connection:
28
+ - keep-alive
29
+ Content-Length:
30
+ - '493'
31
+ Pragma:
32
+ - no-cache
33
+ Cache-Control:
34
+ - no-cache
35
+ X-Frame-Options:
36
+ - DENY
37
+ Set-Cookie:
38
+ - csrf_token=fed54bee6a2bf22dee60aac2da8b31f2; expires="Sun, 30-Mar-2014 00:00:52
39
+ GMT"; Max-Age=600; Path=/
40
+ - metrics=974bf180a3b44fef145643d9e5ba3d14a8ba13903a6e72303142445a86006cd55cb03290;
41
+ Path=/
42
+ body:
43
+ encoding: UTF-8
44
+ string: '{"files": [{"size": 4, "mtime": 1396136952.426505, "name": "temp.apk20140329-19108-1usvvg1",
45
+ "md5": "8d777f385d3dfec8815d20f7496026dc"}, {"size": 3084871, "mtime": 1396061123.5402322,
46
+ "name": "api.apk", "md5": "97abfd70c91d78110499fab2c4ac1cf5"}, {"size": 364743,
47
+ "mtime": 1396135230.241059, "name": "UICatalog6.1.app.zip", "md5": "e59c57d7406118dc6160cd8caa2a7cc5"},
48
+ {"size": 4, "mtime": 1396136951.9545088, "name": "temp.apk20140329-19108-e6ddx",
49
+ "md5": "8d777f385d3dfec8815d20f7496026dc"}]}'
50
+ http_version:
51
+ recorded_at: Sat, 29 Mar 2014 23:50:52 GMT
52
+ recorded_with: VCR 2.9.0
@@ -270,13 +270,13 @@ http_interactions:
270
270
  __read_body_previously_called: true
271
271
  args:
272
272
  :method: :post
273
- :url: https://saucelabs.com/rest/v1/dylanatsauce/tunnels
273
+ :url: https://saucelabs.com/rest/v1/<SAUCE_USERNAME>/tunnels
274
274
  :content_type: application/json
275
275
  :headers:
276
276
  Content-Length: 85
277
277
  :payload: '{"tunnel_identifier":"bees","ssh_port":9123,"use_caching_proxy":false,"use_kgp":true}'
278
- :user: dylanatsauce
279
- :password: 8f5210dd-f0cf-477f-b720-9f721a9679a4
278
+ :user: <SAUCE_USERNAME>
279
+ :password: <SAUCE_ACCESS_KEY>
280
280
  code: 200
281
281
  http_version:
282
282
  recorded_at: Tue, 30 Jul 2013 08:46:35 GMT
@@ -80,13 +80,13 @@ http_interactions:
80
80
  __read_body_previously_called: true
81
81
  args:
82
82
  :method: :post
83
- :url: https://saucelabs.com/rest/v1/dylanatsauce/tunnels
83
+ :url: https://saucelabs.com/rest/v1/<SAUCE_USERNAME>/tunnels
84
84
  :content_type: application/json
85
85
  :headers:
86
86
  Content-Length: 85
87
87
  :payload: '{"tunnel_identifier":"bees","ssh_port":9123,"use_caching_proxy":false,"use_kgp":true}'
88
- :user: dylanatsauce
89
- :password: 8f5210dd-f0cf-477f-b720-9f721a9679a4
88
+ :user: <SAUCE_USERNAME>
89
+ :password: <SAUCE_ACCESS_KEY>
90
90
  code: 200
91
91
  http_version:
92
92
  recorded_at: Tue, 30 Jul 2013 08:46:35 GMT
@@ -168,9 +168,9 @@ http_interactions:
168
168
  __read_body_previously_called: true
169
169
  args:
170
170
  :method: :get
171
- :url: https://saucelabs.com/rest/v1/dylanatsauce/tunnels/4824d6b282e04d1184daff5401a52e1e
172
- :user: dylanatsauce
173
- :password: 8f5210dd-f0cf-477f-b720-9f721a9679a4
171
+ :url: https://saucelabs.com/rest/v1/<SAUCE_USERNAME>/tunnels/4824d6b282e04d1184daff5401a52e1e
172
+ :user: <SAUCE_USERNAME>
173
+ :password: <SAUCE_ACCESS_KEY>
174
174
  code: 200
175
175
  http_version:
176
176
  recorded_at: Thu, 01 Aug 2013 03:28:18 GMT
@@ -252,9 +252,9 @@ http_interactions:
252
252
  __read_body_previously_called: true
253
253
  args:
254
254
  :method: :get
255
- :url: https://saucelabs.com/rest/v1/dylanatsauce/tunnels/4824d6b282e04d1184daff5401a52e1e
256
- :user: dylanatsauce
257
- :password: 8f5210dd-f0cf-477f-b720-9f721a9679a4
255
+ :url: https://saucelabs.com/rest/v1/<SAUCE_USERNAME>/tunnels/4824d6b282e04d1184daff5401a52e1e
256
+ :user: <SAUCE_USERNAME>
257
+ :password: <SAUCE_ACCESS_KEY>
258
258
  code: 200
259
259
  http_version:
260
260
  recorded_at: Thu, 01 Aug 2013 06:31:36 GMT
@@ -336,9 +336,9 @@ http_interactions:
336
336
  __read_body_previously_called: true
337
337
  args:
338
338
  :method: :get
339
- :url: https://saucelabs.com/rest/v1/dylanatsauce/tunnels/4824d6b282e04d1184daff5401a52e1e
340
- :user: dylanatsauce
341
- :password: 8f5210dd-f0cf-477f-b720-9f721a9679a4
339
+ :url: https://saucelabs.com/rest/v1/<SAUCE_USERNAME>/tunnels/4824d6b282e04d1184daff5401a52e1e
340
+ :user: <SAUCE_USERNAME>
341
+ :password: <SAUCE_ACCESS_KEY>
342
342
  code: 200
343
343
  http_version:
344
344
  recorded_at: Thu, 01 Aug 2013 06:32:36 GMT
@@ -2,6 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe SauceWhisk::Assets do
4
4
  let(:auth) {"#{ENV["SAUCE_USERNAME"]}:#{ENV["SAUCE_ACCESS_KEY"]}"}
5
+ let(:user) {ENV["SAUCE_USERNAME"]}
5
6
 
6
7
  describe "#fetch", :vcr => {:cassette_name => "assets"} do
7
8
  let(:job_id) {"bd9c43dd6b5549f1b942d1d581d98cac"}
@@ -10,7 +11,7 @@ describe SauceWhisk::Assets do
10
11
  it "fetches an asset for the requested job" do
11
12
  SauceWhisk::Assets.fetch job_id, asset_name
12
13
 
13
- assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job_id}/assets/#{asset_name}"
14
+ assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/#{user}/jobs/#{job_id}/assets/#{asset_name}"
14
15
  end
15
16
 
16
17
  it "returns an asset" do
@@ -2,6 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe SauceWhisk::Job do
4
4
  let(:job) {SauceWhisk::Job.new}
5
+ let(:user) {ENV["SAUCE_USERNAME"]}
5
6
  subject {SauceWhisk::Job.new}
6
7
 
7
8
  it {should respond_to :id}
@@ -71,7 +72,7 @@ describe SauceWhisk::Job do
71
72
 
72
73
  it "Calls the correct REST API method", :vcr => {:cassette_name => "jobs"} do
73
74
  subject.stop
74
- assert_requested :put, "https://#{ENV["SAUCE_USERNAME"]}:#{ENV["SAUCE_ACCESS_KEY"]}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{subject.id}/stop"
75
+ assert_requested :put, "https://#{user}:#{ENV["SAUCE_ACCESS_KEY"]}@saucelabs.com/rest/v1/#{user}/jobs/#{subject.id}/stop"
75
76
  end
76
77
  end
77
78
 
@@ -2,6 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe SauceWhisk::Jobs do
4
4
  let(:auth) {"#{ENV["SAUCE_USERNAME"]}:#{ENV["SAUCE_ACCESS_KEY"]}"}
5
+ let(:user) {ENV["SAUCE_USERNAME"]}
5
6
  describe "#all", :vcr => {:cassette_name => 'jobs'} do
6
7
 
7
8
  it "should return an enumerable" do
@@ -23,7 +24,7 @@ describe SauceWhisk::Jobs do
23
24
  it "passes a test status to the REST api" do
24
25
  job_id = "bd9c43dd6b5549f1b942d1d581d98cac"
25
26
  SauceWhisk::Jobs.change_status job_id, true
26
- assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job_id}", :body => pass_string, :content_type => "application/json"
27
+ assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/#{user}/jobs/#{job_id}", :body => pass_string, :content_type => "application/json"
27
28
  end
28
29
  end
29
30
 
@@ -50,7 +51,7 @@ describe SauceWhisk::Jobs do
50
51
  job_id = "bd9c43dd6b5549f1b942d1d581d98cac"
51
52
  job = SauceWhisk::Job.new({:id => job_id})
52
53
  SauceWhisk::Jobs.save (job)
53
- assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job.id}", :body => anything, :content_type => "application/json"
54
+ assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/#{user}/jobs/#{job.id}", :body => anything, :content_type => "application/json"
54
55
  end
55
56
 
56
57
  it "only sends updated information" do
@@ -59,7 +60,7 @@ describe SauceWhisk::Jobs do
59
60
  job.name = "Updated Name"
60
61
  SauceWhisk::Jobs.save (job)
61
62
  expected_body = {:name => "Updated Name"}.to_json
62
- assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job.id}", :body => expected_body, :content_type => "application/json"
63
+ assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/#{user}/jobs/#{job.id}", :body => expected_body, :content_type => "application/json"
63
64
  end
64
65
  end
65
66
 
@@ -79,7 +80,7 @@ describe SauceWhisk::Jobs do
79
80
  describe "##stop", :vcr => {:cassette_name => "jobs"} do
80
81
  it "calls the API correctly" do
81
82
  SauceWhisk::Jobs.stop "3edc8fe6d52645bf931b1003da65af1f"
82
- assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/3edc8fe6d52645bf931b1003da65af1f/stop", :content_type => "application/json"
83
+ assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/#{user}/jobs/3edc8fe6d52645bf931b1003da65af1f/stop", :content_type => "application/json"
83
84
  end
84
85
 
85
86
  it "does something interesting when the job is already stopped" do
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe SauceWhisk::Storage, :vcr => { :cassette_name => 'storage' } do
4
+ before do
5
+ @file_name = 'temp.apk'
6
+ @temp_file = Tempfile.new @file_name
7
+
8
+ begin
9
+ @temp_file.write 'data'
10
+ ensure
11
+ @temp_file.close
12
+ end
13
+ end
14
+
15
+ after do
16
+ @temp_file.unlink
17
+ end
18
+
19
+ it 'uploads a file with username and key' do
20
+ storage = SauceWhisk::Storage.new username: ENV['SAUCE_USERNAME'], key: ENV['SAUCE_ACCESS_KEY']
21
+ storage.upload @temp_file
22
+ end
23
+
24
+ it 'uploads a file with implicit auth' do
25
+ storage = SauceWhisk::Storage.new
26
+ storage.upload @temp_file
27
+ end
28
+
29
+ it 'lists all uploaded files' do
30
+ storage = SauceWhisk::Storage.new
31
+ files = storage.files
32
+ expect(files.length).to be > 1
33
+
34
+ upload_successful = files.any? do |file|
35
+ file['name'].include?(@file_name)
36
+ end
37
+ expect(upload_successful).to be true
38
+ end
39
+ end
@@ -2,11 +2,12 @@ require "spec_helper"
2
2
 
3
3
  describe SauceWhisk::Tunnels, :vcr => {:cassette_name => "tunnels"} do
4
4
  let(:auth) {"#{ENV["SAUCE_USERNAME"]}:#{ENV["SAUCE_ACCESS_KEY"]}"}
5
+ let(:user) {ENV["SAUCE_USERNAME"]}
5
6
 
6
7
  describe "##all" do
7
8
  it "lists all tunnels a user has open" do
8
9
  SauceWhisk::Tunnels.all
9
- assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/tunnels"
10
+ assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/#{user}/tunnels"
10
11
  end
11
12
 
12
13
  it "returns nothing when no tunnels are found", :vcr => {:cassette_name => "no_tunnels", :exclusive => true} do
@@ -35,7 +36,7 @@ describe SauceWhisk::Tunnels, :vcr => {:cassette_name => "tunnels"} do
35
36
  let(:job_id) {"fcf7b980037b4a37aa5ff19808e46da7"}
36
37
  it "fetches a single instance of a tunnel" do
37
38
  SauceWhisk::Tunnels.fetch job_id
38
- assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/tunnels/#{job_id}"
39
+ assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/#{user}/tunnels/#{job_id}"
39
40
  end
40
41
 
41
42
  it "returns instances of Tunnel" do
@@ -52,7 +53,7 @@ describe SauceWhisk::Tunnels, :vcr => {:cassette_name => "tunnels"} do
52
53
  it "calls the correct API method" do
53
54
  tunnel_id = "7a4815f52407435581517ffd4d71c3a7"
54
55
  SauceWhisk::Tunnels.stop tunnel_id
55
- assert_requested :delete, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/tunnels/#{tunnel_id}"
56
+ assert_requested :delete, "https://#{auth}@saucelabs.com/rest/v1/#{user}/tunnels/#{tunnel_id}"
56
57
  end
57
58
  end
58
59
 
@@ -60,7 +61,7 @@ describe SauceWhisk::Tunnels, :vcr => {:cassette_name => "tunnels"} do
60
61
  let(:params) {{:tunnel_identifier => "bees", :ssh_port => 9123, :use_caching_proxy => false, :use_kgp => true}}
61
62
  it "calls the correct API method" do
62
63
  SauceWhisk::Tunnels.open params
63
- assert_requested(:post, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/tunnels",:body => params.to_json)
64
+ assert_requested(:post, "https://#{auth}@saucelabs.com/rest/v1/#{user}/tunnels",:body => params.to_json)
64
65
  end
65
66
 
66
67
  it "returns an instance of tunnel" do
@@ -78,7 +79,7 @@ describe SauceWhisk::Tunnels, :vcr => {:cassette_name => "tunnels"} do
78
79
  t_id = requested_tunnel.id
79
80
 
80
81
  # There are 3 failing and 1 passing examples in the fixture
81
- assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/tunnels/#{t_id}", :times => 4
82
+ assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/#{user}/tunnels/#{t_id}", :times => 4
82
83
  end
83
84
 
84
85
  it "throws an exception if the timeout is exceeded" do
metadata CHANGED
@@ -1,85 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sauce_whisk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Lacey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-27 00:00:00.000000000 Z
11
+ date: 2014-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.6.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.6.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.1
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: vcr
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '0'
47
+ version: 2.9.0
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ">="
52
+ - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '0'
54
+ version: 2.9.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: webmock
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ">="
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
61
+ version: 1.17.4
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ">="
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '0'
68
+ version: 1.17.4
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ">="
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: 2.14.1
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ">="
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: 2.14.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">="
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: 10.2.2
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ">="
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: 10.2.2
83
97
  description: A Wrapper for the Sauce Labs REST API.
84
98
  email:
85
99
  - github@dylanlacey.com
@@ -91,6 +105,7 @@ files:
91
105
  - ".rspec"
92
106
  - ".ruby-gemset"
93
107
  - ".ruby-version"
108
+ - ".travis.yml"
94
109
  - Gemfile
95
110
  - LICENSE.txt
96
111
  - README.md
@@ -102,6 +117,7 @@ files:
102
117
  - lib/sauce_whisk/info.rb
103
118
  - lib/sauce_whisk/jobs.rb
104
119
  - lib/sauce_whisk/rest_request_builder.rb
120
+ - lib/sauce_whisk/storage.rb
105
121
  - lib/sauce_whisk/tunnels.rb
106
122
  - lib/sauce_whisk/version.rb
107
123
  - sauce_whisk.gemspec
@@ -112,6 +128,7 @@ files:
112
128
  - spec/fixtures/vcr_cassettes/no_jobs.yml
113
129
  - spec/fixtures/vcr_cassettes/no_tunnels.yml
114
130
  - spec/fixtures/vcr_cassettes/rest_request.yml
131
+ - spec/fixtures/vcr_cassettes/storage.yml
115
132
  - spec/fixtures/vcr_cassettes/tunnels.yml
116
133
  - spec/fixtures/vcr_cassettes/tunnels_with_wait.yml
117
134
  - spec/lib/sauce_whisk/account_spec.rb
@@ -123,6 +140,7 @@ files:
123
140
  - spec/lib/sauce_whisk/jobs_spec.rb
124
141
  - spec/lib/sauce_whisk/rest_request_builder_spec.rb
125
142
  - spec/lib/sauce_whisk/sauce_whisk_spec.rb
143
+ - spec/lib/sauce_whisk/storage_spec.rb
126
144
  - spec/lib/sauce_whisk/subaccounts_spec.rb
127
145
  - spec/lib/sauce_whisk/tunnel_spec.rb
128
146
  - spec/lib/sauce_whisk/tunnels_spec.rb
@@ -160,6 +178,7 @@ test_files:
160
178
  - spec/fixtures/vcr_cassettes/no_jobs.yml
161
179
  - spec/fixtures/vcr_cassettes/no_tunnels.yml
162
180
  - spec/fixtures/vcr_cassettes/rest_request.yml
181
+ - spec/fixtures/vcr_cassettes/storage.yml
163
182
  - spec/fixtures/vcr_cassettes/tunnels.yml
164
183
  - spec/fixtures/vcr_cassettes/tunnels_with_wait.yml
165
184
  - spec/lib/sauce_whisk/account_spec.rb
@@ -171,6 +190,7 @@ test_files:
171
190
  - spec/lib/sauce_whisk/jobs_spec.rb
172
191
  - spec/lib/sauce_whisk/rest_request_builder_spec.rb
173
192
  - spec/lib/sauce_whisk/sauce_whisk_spec.rb
193
+ - spec/lib/sauce_whisk/storage_spec.rb
174
194
  - spec/lib/sauce_whisk/subaccounts_spec.rb
175
195
  - spec/lib/sauce_whisk/tunnel_spec.rb
176
196
  - spec/lib/sauce_whisk/tunnels_spec.rb