tpdata 1.0.12 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,31 @@
1
+ # OS-specific
2
+ .DS_Store
3
+
4
+ # Bundler/Rubygems
5
+ .bundle
6
+ pkg/*
7
+ tags
8
+ Gemfile.lock
9
+ test/tmp/
10
+
11
+ # Versioning
12
+ .rbenv-version
13
+ .rvmrc
14
+
15
+ # Documentation
16
+ _site/*
17
+ .yardoc/
18
+ doc/
19
+
20
+ # Python
21
+ *.pyc
22
+
23
+ # Rubinius
24
+ *.rbc
25
+
26
+ # IDE junk
27
+ .idea/*
28
+ *.iml
29
+
30
+ # Testing
31
+ coverage
data/Gemfile CHANGED
@@ -1,9 +1,2 @@
1
1
  source :rubygems
2
-
3
- gem 'httparty'
4
-
5
- # Testing
6
- group :test do
7
- gem 'rspec'
8
- gem 'rake'
9
- end
2
+ gemspec
data/Manifest.txt CHANGED
@@ -1,3 +1,4 @@
1
+ .gitignore
1
2
  Gemfile
2
3
  Manifest.txt
3
4
  README.md
@@ -13,3 +14,4 @@ spec/lib/data_spec.rb
13
14
  spec/lib/identity_spec.rb
14
15
  spec/spec_helper.rb
15
16
  theplatform.gemspec
17
+ tpdata_version
data/Rakefile CHANGED
@@ -3,8 +3,11 @@
3
3
  require 'rspec/core/rake_task'
4
4
 
5
5
  desc "Run specs"
6
- RSpec::Core::RakeTask.new do |t|
7
- t.pattern = './spec/*/*_spec.rb'
8
- end
6
+ RSpec::Core::RakeTask.new(:spec)
9
7
 
10
8
  task default: :spec
9
+
10
+ task :coverage do |t|
11
+ ENV["COVERAGE"] = 'true'
12
+ Rake::Task[:spec].execute
13
+ end
data/lib/theplatform.rb CHANGED
@@ -1,12 +1,10 @@
1
- $:.unshift( File.dirname( __FILE__ ))
2
-
3
1
  require 'httparty'
4
2
 
5
3
  # Start of wrapper for tpdata
6
4
  module ThePlatform
7
5
 
8
- # Set gem version
9
- VERSION = '1.0.12'
6
+ # Set Version
7
+ VERSION = File.read(File.expand_path("../../tpdata_version",__FILE__)).strip
10
8
 
11
9
  require 'theplatform/configuration'
12
10
  require 'theplatform/services'
@@ -24,20 +24,20 @@ module ThePlatform
24
24
  # List available parameters and values in those params
25
25
  def parameters
26
26
  @values = {}
27
- keys.each { |k| @values.merge! k => get_var("@#{k}") }
27
+ keys.each { |k| @values.merge! k => get_var(k) unless get_var(k) == nil }
28
28
  @values
29
29
  end
30
30
 
31
31
  # Returns true or false if all parameters are set.
32
32
  def parameters?
33
- parameters.values.all?
33
+ parameters.keys == keys
34
34
  end
35
35
 
36
36
  private
37
37
 
38
38
  # Helper to clean up recursive method in #parameters
39
39
  def get_var(var)
40
- self.instance_variable_get(var)
40
+ self.instance_variable_get("@#{var}")
41
41
  end
42
42
 
43
43
  end
@@ -25,7 +25,7 @@ describe ThePlatform::Configuration do
25
25
  it 'should return false if all values are not set' do
26
26
  ThePlatform::Data.schema = nil
27
27
  ThePlatform::Data.parameters[:schema].should == nil
28
- ThePlatform::Data.parameters?.should be false
28
+ ThePlatform::Data.parameters?.should eq false
29
29
  end
30
30
 
31
31
  end
@@ -28,39 +28,133 @@ describe ThePlatform::Data do
28
28
 
29
29
  describe 'requests' do
30
30
 
31
- it 'should return 200' do
32
- ThePlatform.const_get(:SERVICE).keys.each do |endpoint|
33
- ThePlatform::Data.send(endpoint).get('', 'all', schema:'1.0', form:'json').code.should == 200
31
+ it 'should return a HTTParty::Response object' do
32
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
33
+ stub_request(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/")
34
+ .with(:query => hash_including({}))
35
+ .to_return(:status => 200, :body => "", :headers => {})
36
+ ThePlatform::Data.send(service).get('','all',{}).class == HTTParty::Response
34
37
  end
35
38
  end
36
39
 
37
40
  it 'should make a GET against an endpoint' do
38
- ThePlatform.const_get(:SERVICE).keys.each do |endpoint|
39
- ThePlatform::Data.send(endpoint).get('Object', 'all').request.instance_variable_get(:@http_method).should equal Net::HTTP::Get
41
+ object = "Object"
42
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
43
+ WebMock.reset!
44
+ stub_request(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object)
45
+ .with(:query => hash_including({}))
46
+
47
+ ThePlatform::Data.send(service).get(object, 'all')
48
+
49
+ WebMock.should have_requested(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object)
50
+ .with(:query => hash_including({}))
40
51
  end
41
52
  end
42
53
 
43
54
  it 'should make a POST against an endpoint' do
44
- ThePlatform.const_get(:SERVICE).keys.each do |endpoint|
45
- ThePlatform::Data.send(endpoint).post('Object', '{BODY}').request.instance_variable_get(:@http_method).should equal Net::HTTP::Post
55
+ object = "Object"
56
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
57
+ WebMock.reset!
58
+ stub_request(:post, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object)
59
+ .with(:query => hash_including({}))
60
+
61
+ ThePlatform::Data.send(service).post(object, 'all')
62
+
63
+ WebMock.should have_requested(:post, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object)
64
+ .with(:query => hash_including({}))
46
65
  end
47
66
  end
48
67
 
49
68
  it 'should make a PUT against an endpoint' do
50
- ThePlatform.const_get(:SERVICE).keys.each do |endpoint|
51
- ThePlatform::Data.send(endpoint).put('Object', '{BODY}').request.instance_variable_get(:@http_method).should equal Net::HTTP::Put
69
+ object = "Object"
70
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
71
+ WebMock.reset!
72
+ stub_request(:put, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object)
73
+ .with(:query => hash_including({}))
74
+
75
+ ThePlatform::Data.send(service).put(object, 'all')
76
+
77
+ WebMock.should have_requested(:put, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object)
78
+ .with(:query => hash_including({}))
52
79
  end
53
80
  end
54
81
 
55
82
  it 'should make a DELETE against an endpoint' do
56
- ThePlatform.const_get(:SERVICE).keys.each do |endpoint|
57
- ThePlatform::Data.send(endpoint).delete('Object', 'IDS').request.instance_variable_get(:@http_method).should equal Net::HTTP::Delete
83
+ object = "Object"
84
+ objectId = '123'
85
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
86
+ WebMock.reset!
87
+ stub_request(:delete, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object + "/" + objectId)
88
+ .with(:query => hash_including({}))
89
+
90
+ ThePlatform::Data.send(service).delete(object, objectId)
91
+
92
+ WebMock.should have_requested(:delete, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object + "/" + objectId)
93
+ .with(:query => hash_including({}))
58
94
  end
59
95
  end
60
96
 
61
- it 'should be able to use the NOTIFY method' do
62
- ThePlatform.const_get(:SERVICE).keys.each do |endpoint|
63
- ThePlatform::Data.send(endpoint).notify('options').request.instance_variable_get(:@http_method).should equal Net::HTTP::Get
97
+ it 'should perform GET method on the NOTIFY endpoint' do
98
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
99
+ WebMock.reset!
100
+ stub_request(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "notify")
101
+ .with(:query => hash_including({}))
102
+
103
+ ThePlatform::Data.send(service).notify(token:'Nez8Y9ScVDxPxLDmUsg_ESCDYJCJwPBk', size:'10', since:'11111111')
104
+
105
+ WebMock.should have_requested(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'notify')
106
+ .with(:query => hash_including({}))
107
+ end
108
+ end
109
+
110
+ it 'should bubble up any exception' do
111
+ object = "Object"
112
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
113
+ WebMock.reset!
114
+ stub_request(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object)
115
+ .with(:query => hash_including({}))
116
+ .to_raise(Exception)
117
+
118
+ expect{ThePlatform::Data.send(service).get(object, 'all')}.to raise_error(Exception)
119
+
120
+ WebMock.should have_requested(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object)
121
+ .with(:query => hash_including({}))
122
+ end
123
+ end
124
+
125
+ it 'should show the gem name/version number as the User-Agent' do
126
+ object = "Object"
127
+ version = File.read(File.expand_path("../../../tpdata_version",__FILE__)).strip
128
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
129
+ WebMock.reset!
130
+ stub_request(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object)
131
+ .with(:query => hash_including({}))
132
+
133
+ ThePlatform::Data.send(service).get(object, 'all')
134
+
135
+ WebMock.should have_requested(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object)
136
+ .with(:query => hash_including({}), :headers => {"User-Agent" => "tpdata/#{version}"})
137
+ end
138
+ end
139
+
140
+ it 'should make the correct Content-Type request' do
141
+ object = "Object"
142
+ ThePlatform.const_get(:SERVICE).keys.each do |service|
143
+ WebMock.reset!
144
+ content_type = {'atom' => 'application/atom+xml',
145
+ 'rss' => 'application/rss+xml',
146
+ 'json' => 'application/json',
147
+ 'cjson' => 'application/json'}
148
+
149
+ content_type.each do |format|
150
+ stub_request(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + "data/" + object)
151
+ .with(:query => hash_including({}))
152
+
153
+ ThePlatform::Data.send(service).get(object, 'all',form:format[0])
154
+
155
+ WebMock.should have_requested(:get, ThePlatform.const_get(:SERVICE)[service][:endpoint] + 'data/' + object)
156
+ .with(:query => hash_including({form:format[0]}), :headers => {"Content-Type" => format[1]})
157
+ end
64
158
  end
65
159
  end
66
160
 
@@ -2,6 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  describe ThePlatform::Identity do
4
4
 
5
+ # clear webmock stubs before each test
6
+ before(:each) do
7
+ WebMock.reset!
8
+ end
9
+
5
10
  describe 'default attributes' do
6
11
 
7
12
  it 'should include HTTParty methods' do
@@ -12,50 +17,122 @@ describe ThePlatform::Identity do
12
17
 
13
18
  describe "#token" do
14
19
 
15
- it "should return a 200 response" do
16
- ThePlatform::Identity.token(form:'json', schema:'1.0').code.should == 200
20
+ # stub "valid credentials" identity call
21
+ before(:each) do
22
+ # reset anything from previous tests
23
+ WebMock.reset!
24
+
25
+ #setup a normal response
26
+ @duration = ""
27
+ @idleTimeout = ""
28
+ @userName = "user"
29
+ @password = "secret"
30
+ @form = "json"
31
+ @schema = "1.0"
32
+
33
+ @signInURL = ThePlatform::IDENTITY + 'signIn'
34
+
35
+ @query = { "form" => @form,
36
+ "password" => @password,
37
+ "schema" => @schema,
38
+ "username" => @userName,
39
+ "_duration" => @duration }
40
+
41
+ stub_request(:get, @signInURL).with(:query => @query).to_return(:status => 200, :body => {}, :headers => {})
42
+ end
43
+
44
+ it "should call signIn endpoint with parameters" do
45
+ ThePlatform::Identity.token(username: @userName, password: @password, form: @form, schema: @schema, _duration: @duration)
46
+ WebMock.should have_requested(:get, @signInURL)
47
+ .with(:query => hash_including({"username" => @userName,
48
+ "password" => @password,
49
+ "form" => @form,
50
+ "schema" => @schema,
51
+ "_duration" => @duration}))
17
52
  end
18
53
 
19
- it 'should return BAD REQUEST if no schema or form present' do
20
- ThePlatform::Identity.token(test:1, test:2).code.should == 422
54
+ it "should return a HTTParty::Response from the web request" do
55
+ ThePlatform::Identity.token(username: @userName, password: @password, form: @form, schema: @schema, _duration: @duration).class.should == HTTParty::Response
21
56
  end
22
57
 
23
- it 'should have a valid return body' do
24
- ThePlatform::Identity.token(form:'json', schema:'1.0')['description'].should == "No authentication header."
25
- end
58
+ it "should bubble up any exception" do
59
+ stub_request(:any, @signInURL)
60
+ .with(:query => hash_including({}))
61
+ .to_raise(Exception)
26
62
 
27
- it 'should not authenticate an invalid user' do
28
- ThePlatform::Identity.token(form:'json', schema:'1.0', username:'test', password:'pass')['description'].should == "Could not authenticate user test."
63
+ expect {ThePlatform::Identity.token(username: @userName, password: @password, from: @form, schema: @schema)}.to raise_error(Exception)
29
64
  end
65
+
30
66
  end
31
67
 
32
68
  describe "#invalidate!" do
69
+ before(:all) do
70
+ @signOutURL = ThePlatform::IDENTITY + 'signOut'
71
+ end
72
+
73
+ before(:each) do
74
+ WebMock.reset!
75
+
76
+ stub_request(:any, @signOutURL)
77
+ .with(:query => hash_including({}))
78
+ .to_return(:status => 200, :body => {}, :headers => {})
79
+ end
80
+
81
+ it "should call signOut endpoint with parameters" do
82
+ @token = 'foo'
83
+
84
+ ThePlatform::Identity.invalidate!(@token)
33
85
 
34
- it 'should return a 200 response' do
35
- ThePlatform::Identity.invalidate!('omg_i_haz_a_tokenz', form:'json', schema:'1.0').code.should == 200
86
+ WebMock.should have_requested(:get, @signOutURL)
87
+ .with(:query => hash_including({"_token" => @token}))
36
88
  end
37
89
 
38
- it 'should have a valid return body' do
39
- ThePlatform::Identity.invalidate!('omg_i_haz_a_tokenz', form:'json', schema:'1.0').should have_key 'signOutResponse'
90
+ it "should return a HTTParty::Response from the web request" do
91
+ ThePlatform::Identity.invalidate!(@token).class.should == HTTParty::Response
92
+ end
93
+
94
+ it "should bubble up any exception" do
95
+ stub_request(:any, @signOutURL)
96
+ .with(:query => hash_including({}))
97
+ .to_raise(Exception)
98
+
99
+ expect {ThePlatform::Identity.invalidate!(@token)}.to raise_error(Exception)
40
100
  end
41
101
 
42
102
  end
43
103
 
44
104
  describe "#count" do
105
+ before(:all) do
106
+ @getTokenCountURL = ThePlatform::IDENTITY + 'getTokenCount'
107
+ end
108
+
109
+ before(:each) do
110
+ WebMock.reset!
45
111
 
46
- it "should return a 200 response" do
47
- ThePlatform::Identity.count(form:'json', schema:'1.0').code.should == 200
112
+ stub_request(:any, @getTokenCountURL)
113
+ .with(:query => hash_including({}))
114
+ .to_return(:status => 200, :body => {}, :headers => {})
48
115
  end
49
116
 
50
- it 'should return a BAD REQUEST if no schema or form are present' do
51
- ThePlatform::Identity.count(test:1, test:2).code.should == 422
117
+ it "should call getTokenCount endpoint with parameters" do
118
+ ThePlatform::Identity.count(foo: 'bar')
119
+
120
+ WebMock.should have_requested(:get, @getTokenCountURL)
121
+ .with(:query => hash_including({"foo" => 'bar'}))
52
122
  end
53
123
 
54
- it 'should fail if auth is invalid' do
55
- ThePlatform::Identity.count(form:'json', schema:'1.0', username:'test', password:'pass')['description'].should == "Could not authenticate user test."
124
+ it "should return a HTTParty::Response from the web request" do
125
+ ThePlatform::Identity.count({}).class.should == HTTParty::Response
126
+ end
127
+
128
+ it "should bubble up any exception" do
129
+ stub_request(:any, @getTokenCountURL)
130
+ .with(:query => hash_including({}))
131
+ .to_raise(Exception)
132
+
133
+ expect {ThePlatform::Identity.count(foo:'bar')}.to raise_error(Exception)
56
134
  end
57
135
 
58
136
  end
59
137
 
60
138
  end
61
-
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,26 @@
1
1
  require 'rubygems'
2
2
  require 'rspec'
3
+ require 'webmock/rspec'
4
+ require 'json'
5
+
6
+ RSpec.configure do |config|
7
+ config.order = 'random'
8
+ end
9
+
10
+ if ENV["COVERAGE"] == 'true'
11
+ require 'simplecov'
12
+
13
+ # add legacy rcov output (so Jenkins/Sonor play well)
14
+ require 'simplecov-rcov'
15
+ class SimpleCov::Formatter::MergedFormatter
16
+ def format(result)
17
+ SimpleCov::Formatter::HTMLFormatter.new.format(result)
18
+ SimpleCov::Formatter::RcovFormatter.new.format(result)
19
+ end
20
+ end
21
+ SimpleCov.formatter = SimpleCov::Formatter::MergedFormatter
22
+
23
+ SimpleCov.start
24
+ end
3
25
 
4
26
  require File.expand_path("../../lib/theplatform", __FILE__)
data/theplatform.gemspec CHANGED
@@ -1,11 +1,10 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require './lib/theplatform.rb'
1
+ version = File.read(File.expand_path("../tpdata_version",__FILE__)).strip
3
2
 
4
3
  Gem::Specification.new do |s|
5
4
  s.name = 'tpdata'
6
- s.version = ThePlatform::VERSION
5
+ s.version = version
7
6
  s.date = '2012-10-03'
8
- s.authors = ['Ben Woodall']
7
+ s.authors = ['Ben Woodall, Bryan Stenson']
9
8
  s.email = 'mail@benwoodall.com'
10
9
  s.homepage = 'http://github.com/benwoody/tpdata'
11
10
 
@@ -18,8 +17,12 @@ Gem::Specification.new do |s|
18
17
 
19
18
  s.extra_rdoc_files = ["README.md"]
20
19
 
21
- s.add_runtime_dependency 'httparty', "~> 0.9.0"
20
+ s.add_dependency 'httparty', "~> 0.9.0"
22
21
  s.add_development_dependency 'rake'
23
22
  s.add_development_dependency 'rspec'
24
23
  s.add_development_dependency 'yard'
24
+ s.add_development_dependency 'webmock'
25
+ s.add_development_dependency 'simplecov'
26
+ s.add_development_dependency 'simplecov-rcov'
27
+
25
28
  end
data/tpdata_version ADDED
@@ -0,0 +1 @@
1
+ 1.1.0
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tpdata
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Ben Woodall
8
+ - Ben Woodall, Bryan Stenson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
@@ -13,7 +13,7 @@ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &81513660 !ruby/object:Gem::Requirement
16
+ requirement: &84022590 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.9.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *81513660
24
+ version_requirements: *84022590
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &81512720 !ruby/object:Gem::Requirement
27
+ requirement: &84022240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *81512720
35
+ version_requirements: *84022240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &81509950 !ruby/object:Gem::Requirement
38
+ requirement: &84021660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *81509950
46
+ version_requirements: *84021660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &81509500 !ruby/object:Gem::Requirement
49
+ requirement: &84021210 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,40 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *81509500
57
+ version_requirements: *84021210
58
+ - !ruby/object:Gem::Dependency
59
+ name: webmock
60
+ requirement: &84020820 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *84020820
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: &84044910 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *84044910
80
+ - !ruby/object:Gem::Dependency
81
+ name: simplecov-rcov
82
+ requirement: &84043620 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *84043620
58
91
  description: Tpdata gem is a wrapper for the RESTful interface for thePlatform for
59
92
  Media's Data Services.
60
93
  email: mail@benwoodall.com
@@ -63,6 +96,7 @@ extensions: []
63
96
  extra_rdoc_files:
64
97
  - README.md
65
98
  files:
99
+ - .gitignore
66
100
  - Gemfile
67
101
  - Manifest.txt
68
102
  - README.md
@@ -78,6 +112,7 @@ files:
78
112
  - spec/lib/identity_spec.rb
79
113
  - spec/spec_helper.rb
80
114
  - theplatform.gemspec
115
+ - tpdata_version
81
116
  homepage: http://github.com/benwoody/tpdata
82
117
  licenses: []
83
118
  post_install_message: