nsisam 0.6.4 → 0.7.0

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.
data/Gemfile CHANGED
@@ -4,6 +4,7 @@ source "http://rubygems.org"
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
  gem "json"
6
6
  gem "sinatra"
7
+ gem "webmock", github: "douglascamata/webmock"
7
8
 
8
9
  # Add dependencies to develop your gem here.
9
10
  # Include everything needed to run rake, tests, features, etc.
@@ -11,6 +12,6 @@ group :development do
11
12
  gem "rake"
12
13
  gem "yard"
13
14
  gem "rspec", "~> 2.8.0"
14
- gem "bundler", "~> 1.1.0"
15
+ gem "bundler", "~> 1.2.0"
15
16
  gem "jeweler", "~> 1.8.3"
16
17
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.4
1
+ 0.7.0
@@ -1,25 +1,36 @@
1
1
  require 'json'
2
2
  require 'base64'
3
3
  require File.dirname(__FILE__) + '/response'
4
+ require 'webmock'
5
+ include WebMock::API
6
+ WebMock.allow_net_connect!
7
+
4
8
 
5
9
  module NSISam
6
10
  class FakeClient
7
11
 
8
12
  attr_accessor :expire
13
+ attr_reader :host, :port
9
14
 
10
- def initialize
15
+ def initialize(host="localhost", port="8888")
11
16
  @storage = {}
17
+ @host = host
18
+ @port = port
12
19
  end
13
20
 
14
21
  def store(data)
15
- key = Time.now.to_i.to_s
22
+ key = Time.now.nsec.to_s
16
23
  @storage[key] = JSON.load(data.to_json) unless @expire
24
+ if data.kind_of?(Hash) and data.has_key?(:file) and data.has_key?(:filename)
25
+ stub_request(:get, "http://#{@host}:#{@port}/file/#{key}").to_return(body: Base64.decode64(data[:file]))
26
+ end
17
27
  Response.new 'key' => key, 'checksum' => 0
18
28
  end
19
29
 
20
- def store_file(file, type=:file)
30
+ def store_file(file, filename, type=:file)
21
31
  key = Time.now.to_i.to_s
22
- @storage[key] = {type.to_s => Base64.encode64(file)}.to_json unless @expire
32
+ @storage[key] = {type.to_s => Base64.encode64(file), filename: filename}.to_json unless @expire
33
+ stub_request(:get, "http://#{@host}:#{@port}/file/#{key}").to_return(body: file)
23
34
  Response.new "key" => key, "checksum" => 0
24
35
  end
25
36
 
@@ -54,12 +65,21 @@ module NSISam
54
65
  if @expire
55
66
  @storage.delete(key)
56
67
  else
57
- @storage[key] = value
68
+ @storage[key] = value
58
69
  end
59
- Response.new 'key' => key, 'checksum' => 0
70
+ Response.new 'key' => key, 'checksum' => 0
60
71
  else
61
72
  raise NSISam::Errors::Client::KeyNotFoundError
62
73
  end
63
74
  end
75
+
76
+ def update_file(key, file, filename)
77
+ hash = {file: file, filename: filename}
78
+ @storage[key] = hash
79
+ remove_request_stub(:get, "http://#{@host}:#{@port}/file/#{key}")
80
+ stub_request(:get, "http://#{@host}:#{@port}/file/#{key}").to_return(body: file)
81
+ Response.new "key" => key, "checksum" => 0
82
+ end
83
+
64
84
  end
65
85
  end
data/nsisam.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "nsisam"
8
- s.version = "0.6.4"
8
+ s.version = "0.7.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Douglas Camata"]
12
- s.date = "2012-09-06"
12
+ s.date = "2012-09-26"
13
13
  s.description = "A simple gem to access a SAM node. For more info about SAM\n visit www.github.com/nsi-iff/sam_buildout."
14
14
  s.email = "d.camata@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -55,27 +55,30 @@ Gem::Specification.new do |s|
55
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
56
  s.add_runtime_dependency(%q<json>, [">= 0"])
57
57
  s.add_runtime_dependency(%q<sinatra>, [">= 0"])
58
+ s.add_runtime_dependency(%q<webmock>, [">= 0"])
58
59
  s.add_development_dependency(%q<rake>, [">= 0"])
59
60
  s.add_development_dependency(%q<yard>, [">= 0"])
60
61
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
61
- s.add_development_dependency(%q<bundler>, ["~> 1.1.0"])
62
+ s.add_development_dependency(%q<bundler>, ["~> 1.2.0"])
62
63
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
63
64
  else
64
65
  s.add_dependency(%q<json>, [">= 0"])
65
66
  s.add_dependency(%q<sinatra>, [">= 0"])
67
+ s.add_dependency(%q<webmock>, [">= 0"])
66
68
  s.add_dependency(%q<rake>, [">= 0"])
67
69
  s.add_dependency(%q<yard>, [">= 0"])
68
70
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
69
- s.add_dependency(%q<bundler>, ["~> 1.1.0"])
71
+ s.add_dependency(%q<bundler>, ["~> 1.2.0"])
70
72
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
71
73
  end
72
74
  else
73
75
  s.add_dependency(%q<json>, [">= 0"])
74
76
  s.add_dependency(%q<sinatra>, [">= 0"])
77
+ s.add_dependency(%q<webmock>, [">= 0"])
75
78
  s.add_dependency(%q<rake>, [">= 0"])
76
79
  s.add_dependency(%q<yard>, [">= 0"])
77
80
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
78
- s.add_dependency(%q<bundler>, ["~> 1.1.0"])
81
+ s.add_dependency(%q<bundler>, ["~> 1.2.0"])
79
82
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
80
83
  end
81
84
  end
@@ -1,4 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'net/http'
2
3
 
3
4
  describe "NSISam::FakeClient" do
4
5
  before :all do
@@ -13,7 +14,7 @@ describe "NSISam::FakeClient" do
13
14
  end
14
15
 
15
16
  it "can store a file" do
16
- response = @nsisam.store_file("some file not in base64")
17
+ response = @nsisam.store_file("some file not in base64", 'dumb.txt')
17
18
  response.should_not be_nil
18
19
  response.key.should_not be_nil
19
20
  response.checksum.should_not be_nil
@@ -43,7 +44,7 @@ describe "NSISam::FakeClient" do
43
44
  end
44
45
 
45
46
  it "can retrieve a stored file" do
46
- resp = @nsisam.store_file("file not in base64")
47
+ resp = @nsisam.store_file("file not in base64", 'dumb.txt')
47
48
  response = @nsisam.get_file(resp.key)
48
49
  response.data.should_not be_nil
49
50
  end
@@ -55,4 +56,43 @@ describe "NSISam::FakeClient" do
55
56
  @nsisam.get(response.key).data.should == "updated"
56
57
  response.checksum.should_not be_nil
57
58
  end
59
+
60
+ context "can host files" do
61
+ it "stored by #store_file" do
62
+ response = @nsisam.store_file("file not in base64", 'dumb.txt')
63
+ response.key.should_not be_nil
64
+ request = Net::HTTP.get_response(URI.parse("http://#{@nsisam.host}:#{@nsisam.port}/file/#{response.key}"))
65
+ request.body.should == "file not in base64"
66
+ end
67
+
68
+ it "stored by #store in a dict with file and filename" do
69
+ data = {file: Base64.encode64('a file'), filename: 'dumb.txt'}
70
+ response = @nsisam.store(data)
71
+ request = Net::HTTP.get_response(URI.parse("http://#{@nsisam.host}:#{@nsisam.port}/file/#{response.key}"))
72
+ request.body.should == "a file"
73
+ end
74
+
75
+ it "should update the hosted file when the file is updated through #store" do
76
+ data = {file: Base64.encode64('a file'), filename: 'dumb.txt'}
77
+ response = @nsisam.store(data)
78
+ request = Net::HTTP.get_response(URI.parse("http://#{@nsisam.host}:#{@nsisam.port}/file/#{response.key}"))
79
+ request.body.should == "a file"
80
+
81
+ data = {file: Base64.encode64('another file'), filename: 'dumb.txt'}
82
+ response = @nsisam.store(data)
83
+ request = Net::HTTP.get_response(URI.parse("http://#{@nsisam.host}:#{@nsisam.port}/file/#{response.key}"))
84
+ request.body.should == "another file"
85
+ end
86
+
87
+ it "should update the hosted file when the file is updated through #store_file" do
88
+ response = @nsisam.store_file('a file', 'dumb.txt')
89
+ request = Net::HTTP.get_response(URI.parse("http://#{@nsisam.host}:#{@nsisam.port}/file/#{response.key}"))
90
+ request.body.should == "a file"
91
+
92
+ response = @nsisam.update_file(response.key, 'another file', 'dumb.txt')
93
+ request = Net::HTTP.get_response(URI.parse("http://#{@nsisam.host}:#{@nsisam.port}/file/#{response.key}"))
94
+ request.body.should == "another file"
95
+ end
96
+ end
97
+
58
98
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nsisam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-06 00:00:00.000000000 Z
12
+ date: 2012-09-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: webmock
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: rake
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +114,7 @@ dependencies:
98
114
  requirements:
99
115
  - - ~>
100
116
  - !ruby/object:Gem::Version
101
- version: 1.1.0
117
+ version: 1.2.0
102
118
  type: :development
103
119
  prerelease: false
104
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +122,7 @@ dependencies:
106
122
  requirements:
107
123
  - - ~>
108
124
  - !ruby/object:Gem::Version
109
- version: 1.1.0
125
+ version: 1.2.0
110
126
  - !ruby/object:Gem::Dependency
111
127
  name: jeweler
112
128
  requirement: !ruby/object:Gem::Requirement
@@ -172,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
188
  version: '0'
173
189
  segments:
174
190
  - 0
175
- hash: 1859438398968231153
191
+ hash: 2819258548481392356
176
192
  required_rubygems_version: !ruby/object:Gem::Requirement
177
193
  none: false
178
194
  requirements: