sds-rest 0.1.1
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/History.txt +4 -0
- data/Manifest.txt +30 -0
- data/PostInstall.txt +7 -0
- data/README.rdoc +62 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +77 -0
- data/config/requirements.rb +15 -0
- data/lib/sds-activeresource.rb +183 -0
- data/lib/sds-rest.rb +255 -0
- data/lib/sds-rest/version.rb +10 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/setup.rb +1585 -0
- data/spec/authority_spec.rb +35 -0
- data/spec/blob_spec.rb +53 -0
- data/spec/container_spec.rb +46 -0
- data/spec/entity_spec.rb +118 -0
- data/spec/sdsactiveresource_spec.rb +88 -0
- data/spec/sdsconnection_spec.rb +49 -0
- data/spec/spec_helper.rb +24 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/website/index.html +85 -0
- data/website/index.txt +81 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +48 -0
- metadata +108 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
+
|
4
|
+
class SDSSpec < Test::Unit::TestCase
|
5
|
+
context "A service instance" do
|
6
|
+
setup do
|
7
|
+
@service = SDSRest::Service.new
|
8
|
+
@service.authority = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
should "respond to :create_authority" do
|
12
|
+
assert_respond_to @service, :create_authority
|
13
|
+
end
|
14
|
+
|
15
|
+
should "be able to create an authority" do
|
16
|
+
results = @service.create_authority random
|
17
|
+
assert_instance_of Net::HTTPCreated, results
|
18
|
+
end
|
19
|
+
|
20
|
+
should "respond to :get_authority" do
|
21
|
+
assert_respond_to @service, :get_authority
|
22
|
+
end
|
23
|
+
|
24
|
+
should "be able to get an authority" do
|
25
|
+
authority_name = random
|
26
|
+
|
27
|
+
@service.create_authority authority_name
|
28
|
+
|
29
|
+
results = @service.get_authority authority_name
|
30
|
+
assert_instance_of Net::HTTPOK, results
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/spec/blob_spec.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
+
|
4
|
+
class SSDSSpec < Test::Unit::TestCase
|
5
|
+
context "A service instance" do
|
6
|
+
setup do
|
7
|
+
@service = SDSRest::Service.new
|
8
|
+
@container = random
|
9
|
+
@service.create_container @container
|
10
|
+
end
|
11
|
+
|
12
|
+
should "respond to :create_blob" do
|
13
|
+
assert_respond_to @service, :create_blob
|
14
|
+
end
|
15
|
+
|
16
|
+
should "be able to create a blob" do
|
17
|
+
results = @service.create_blob @container, "test-text", 1
|
18
|
+
assert_instance_of Net::HTTPCreated, results
|
19
|
+
end
|
20
|
+
|
21
|
+
should "respond to :get_blob" do
|
22
|
+
assert_respond_to @service, :get_blob
|
23
|
+
end
|
24
|
+
|
25
|
+
should "be able to get a blob" do
|
26
|
+
@service.create_blob @container, "test-text", 1
|
27
|
+
results = @service.get_blob @container, 1
|
28
|
+
assert_instance_of Net::HTTPOK, results
|
29
|
+
end
|
30
|
+
|
31
|
+
should "respond to :update_blob" do
|
32
|
+
assert_respond_to @service, :update_blob
|
33
|
+
end
|
34
|
+
|
35
|
+
should "be able to update a blob" do
|
36
|
+
@service.create_blob @container, "test-text", 1
|
37
|
+
results = @service.update_blob @container, "test-text2", 1
|
38
|
+
assert_instance_of Net::HTTPOK, results
|
39
|
+
end
|
40
|
+
|
41
|
+
should "respond to :delete_blob" do
|
42
|
+
assert_respond_to @service, :delete_blob
|
43
|
+
end
|
44
|
+
|
45
|
+
should "be able to delete a blob" do
|
46
|
+
@service.create_blob @container, "test-text", 1
|
47
|
+
results = @service.delete_blob @container, 1
|
48
|
+
assert_instance_of Net::HTTPOK, results
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
+
|
4
|
+
class SSDSSpec < Test::Unit::TestCase
|
5
|
+
context "A service instance" do
|
6
|
+
setup do
|
7
|
+
@service = SDSRest::Service.new
|
8
|
+
end
|
9
|
+
|
10
|
+
should "respond to :create_container" do
|
11
|
+
assert_respond_to @service, :create_container
|
12
|
+
end
|
13
|
+
|
14
|
+
should "be able to create a container" do
|
15
|
+
results = @service.create_container random
|
16
|
+
assert_instance_of Net::HTTPCreated, results
|
17
|
+
end
|
18
|
+
|
19
|
+
should "respond to :delete_container" do
|
20
|
+
assert_respond_to @service, :delete_container
|
21
|
+
end
|
22
|
+
|
23
|
+
should "be able to delete a container" do
|
24
|
+
container_name = random
|
25
|
+
|
26
|
+
@service.create_container container_name
|
27
|
+
|
28
|
+
results = @service.delete_container container_name
|
29
|
+
assert_instance_of Net::HTTPOK, results
|
30
|
+
end
|
31
|
+
|
32
|
+
should "respond to :get_container" do
|
33
|
+
assert_respond_to @service, :get_container
|
34
|
+
end
|
35
|
+
|
36
|
+
should "be able to get a container" do
|
37
|
+
container_name = random
|
38
|
+
|
39
|
+
@service.create_container container_name
|
40
|
+
|
41
|
+
results = @service.get_container container_name
|
42
|
+
assert_instance_of Net::HTTPOK, results
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/spec/entity_spec.rb
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'date'
|
3
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
4
|
+
|
5
|
+
class SSDSSpec < Test::Unit::TestCase
|
6
|
+
context "A service instance" do
|
7
|
+
setup do
|
8
|
+
@service = SDSRest::Service.new
|
9
|
+
@container = random
|
10
|
+
@service.create_container @container
|
11
|
+
end
|
12
|
+
|
13
|
+
should "respond to :create_entity" do
|
14
|
+
assert_respond_to @service, :create_entity
|
15
|
+
end
|
16
|
+
|
17
|
+
should "be able to create an entity" do
|
18
|
+
results = @service.create_entity @container, 'car', 1, :make => 'BMW', :model => '3-series'
|
19
|
+
assert_instance_of Net::HTTPCreated, results
|
20
|
+
end
|
21
|
+
|
22
|
+
should "respond to :delete_entity" do
|
23
|
+
assert_respond_to @service, :delete_entity
|
24
|
+
end
|
25
|
+
|
26
|
+
should "be able to delete an entity" do
|
27
|
+
@service.create_entity @container, 'car', 2, :make => 'BMW', :model => '3-series'
|
28
|
+
|
29
|
+
results = @service.delete_entity @container, 2
|
30
|
+
assert_instance_of Net::HTTPOK, results
|
31
|
+
end
|
32
|
+
|
33
|
+
should "respond to :get_entity" do
|
34
|
+
assert_respond_to @service, :get_entity
|
35
|
+
end
|
36
|
+
|
37
|
+
should "be able to get an entity" do
|
38
|
+
@service.create_entity @container, 'car', 3, :make => 'BMW', :model => '3-series'
|
39
|
+
|
40
|
+
results = @service.get_entity @container, 3
|
41
|
+
assert_instance_of Net::HTTPOK, results
|
42
|
+
end
|
43
|
+
|
44
|
+
should "respond to :update_entity" do
|
45
|
+
assert_respond_to @service, :update_entity
|
46
|
+
end
|
47
|
+
|
48
|
+
should "be able to update an entity" do
|
49
|
+
@service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
50
|
+
|
51
|
+
results = @service.update_entity @container, 'car', 4, nil, :make => 'Toyota', :mode => '3-series'
|
52
|
+
assert_instance_of Net::HTTPOK, results
|
53
|
+
end
|
54
|
+
|
55
|
+
should "be able to query" do
|
56
|
+
@service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
57
|
+
|
58
|
+
results = @service.query(@container, 'from c in entities select c')
|
59
|
+
assert_instance_of Net::HTTPOK, results
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
should "be able to conditionally get" do
|
64
|
+
results = @service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
65
|
+
version = results['etag']
|
66
|
+
results = @service.get_entity @container, 4, version
|
67
|
+
assert_instance_of Net::HTTPNotModified, results
|
68
|
+
end
|
69
|
+
|
70
|
+
should "be able to conditionally get an updated entity" do
|
71
|
+
results = @service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
72
|
+
version = results['etag']
|
73
|
+
@service.update_entity @container, 'car', 4, nil, :make => 'Toyota', :model => '3-series'
|
74
|
+
results = @service.get_entity @container, 4, version
|
75
|
+
assert_instance_of Net::HTTPOK, results
|
76
|
+
end
|
77
|
+
|
78
|
+
should "be able to conditionally delete correct version" do
|
79
|
+
results = @service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
80
|
+
version = results['etag']
|
81
|
+
results = @service.delete_entity @container, 4, version
|
82
|
+
assert_instance_of Net::HTTPOK, results
|
83
|
+
end
|
84
|
+
|
85
|
+
should "not be able to conditionally delete wrong version" do
|
86
|
+
results = @service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
87
|
+
version = results['etag']
|
88
|
+
@service.update_entity @container, 'car', 4, nil, :make => 'Toyota', :model => '3-series'
|
89
|
+
results = @service.delete_entity @container, 4, version
|
90
|
+
assert_instance_of Net::HTTPPreconditionFailed, results
|
91
|
+
end
|
92
|
+
|
93
|
+
should "be able to conditionally update correct version" do
|
94
|
+
results = @service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
95
|
+
version = results['etag']
|
96
|
+
results = @service.update_entity @container, 'car', 4, version, :make => 'Toyota', :model => '3-series'
|
97
|
+
assert_instance_of Net::HTTPOK, results
|
98
|
+
end
|
99
|
+
|
100
|
+
should "not be able to conditionally update wrong version" do
|
101
|
+
results = @service.create_entity @container, 'car', 4, :make => 'BMW', :model => '3-series'
|
102
|
+
version = results['etag']
|
103
|
+
@service.update_entity @container, 'car', 4, nil, :make => 'Toyota', :model => '3-series'
|
104
|
+
results = @service.update_entity @container, 'car', 4, version, :make => 'Toyota', :model => '3-series'
|
105
|
+
assert_instance_of Net::HTTPPreconditionFailed, results
|
106
|
+
end
|
107
|
+
|
108
|
+
should "correctly infer type" do
|
109
|
+
assert_equal 'x:string', @service.infer_type('test')
|
110
|
+
assert_equal 'x:decimal', @service.infer_type(12)
|
111
|
+
assert_equal 'x:decimal', @service.infer_type(12.1)
|
112
|
+
assert_equal 'x:boolean', @service.infer_type(true)
|
113
|
+
assert_equal 'x:dateTime', @service.infer_type(DateTime.parse('12/12/2006'))
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
4
|
+
|
5
|
+
class Car < SDSActiveResource::Base
|
6
|
+
#self.site = 'http://infozerktest15.data.beta.mssds.com/infozerk'
|
7
|
+
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
class SDSSpec < Test::Unit::TestCase
|
12
|
+
context "An SDSActiveResource class" do
|
13
|
+
setup do
|
14
|
+
|
15
|
+
@service = SDSRest::Service.new
|
16
|
+
@container = random
|
17
|
+
@service.create_container @container
|
18
|
+
Car.site = 'http://infozerktest12.data.beta.mssds.com/' + @container + "/"
|
19
|
+
Car.user = ENV['username']
|
20
|
+
Car.password = ENV['password']
|
21
|
+
end
|
22
|
+
|
23
|
+
should "be able to save an entity" do
|
24
|
+
car = Car.new
|
25
|
+
car.make = 'Toyota'
|
26
|
+
car.model = '3-series'
|
27
|
+
car.Id = "2"
|
28
|
+
assert_equal car.save, true
|
29
|
+
assert_equal car.Id, car.id
|
30
|
+
end
|
31
|
+
|
32
|
+
should "be able to destroy an entity" do
|
33
|
+
car = get_test_entity
|
34
|
+
assert_instance_of Net::HTTPOK, car.destroy
|
35
|
+
end
|
36
|
+
|
37
|
+
should "be able to update an entity" do
|
38
|
+
car = get_test_entity
|
39
|
+
car.make = 'BMW'
|
40
|
+
car.year = 2007
|
41
|
+
assert_equal car.save, true
|
42
|
+
end
|
43
|
+
|
44
|
+
should "be able to find an entity" do
|
45
|
+
car = get_test_entity
|
46
|
+
foundcar = Car.find(car.Id)
|
47
|
+
assert_not_nil foundcar
|
48
|
+
assert_equal foundcar.Id.to_s, car.Id.to_s
|
49
|
+
assert_equal 2007, foundcar.year
|
50
|
+
assert_equal true, foundcar.for_sale
|
51
|
+
assert_equal DateTime.parse("1/1/2007"), foundcar.created
|
52
|
+
assert_equal 1.4, foundcar.miles
|
53
|
+
end
|
54
|
+
|
55
|
+
should "be able to find all entities" do
|
56
|
+
get_test_entity
|
57
|
+
get_test_entity
|
58
|
+
cars = Car.find(:all)
|
59
|
+
assert_equal cars.length, 2
|
60
|
+
assert_equal cars[0].make, 'toyota'
|
61
|
+
assert_equal cars[0].year, 2007
|
62
|
+
end
|
63
|
+
|
64
|
+
should "be able to query entities" do
|
65
|
+
get_test_entity
|
66
|
+
car = Car.new()
|
67
|
+
car.make = 'ford'
|
68
|
+
car.Id = rand(999999)
|
69
|
+
car.save
|
70
|
+
cars = Car.query('from c in entities where c.Kind == "Car" and c["make"] == "toyota" select c')
|
71
|
+
assert_equal 1, cars.length
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_test_entity
|
77
|
+
car = Car.new()
|
78
|
+
car.make = 'toyota'
|
79
|
+
car.Id = rand(999999)
|
80
|
+
car.year = 2007
|
81
|
+
car.for_sale = true
|
82
|
+
car.created = DateTime.parse("1/1/2007")
|
83
|
+
car.miles = 1.4
|
84
|
+
car.save
|
85
|
+
car
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
4
|
+
|
5
|
+
class SDSSpec < Test::Unit::TestCase
|
6
|
+
context "An SDSActiveResource class" do
|
7
|
+
setup do
|
8
|
+
@connection = SDSActiveResource::SDSConnection.new('http://infozerktest15.data.beta.mssds.com/infozerk')
|
9
|
+
end
|
10
|
+
|
11
|
+
should "respond to get_container" do
|
12
|
+
assert_respond_to @connection, :get_container
|
13
|
+
end
|
14
|
+
|
15
|
+
should "parse containers out of the path" do
|
16
|
+
uri = '/infozerk/12'
|
17
|
+
assert_equal 'infozerk', @connection.get_container(uri)
|
18
|
+
end
|
19
|
+
|
20
|
+
should "respond to get_id" do
|
21
|
+
assert_respond_to @connection, :get_id
|
22
|
+
end
|
23
|
+
|
24
|
+
should "parse ids out of the path" do
|
25
|
+
uri = "/infozerk/car/1"
|
26
|
+
assert_equal '1', @connection.get_id(uri)
|
27
|
+
end
|
28
|
+
should "parse ids out of the path with .xml extension" do
|
29
|
+
uri = "/infozerk/car/1.xml"
|
30
|
+
assert_equal '1', @connection.get_id(uri)
|
31
|
+
end
|
32
|
+
|
33
|
+
should "parse an authority out of the path" do
|
34
|
+
uri = "http://infozerktest15.data.beta.mssds.com/infozerk"
|
35
|
+
assert_equal 'infozerktest15', @connection.get_authority(uri)
|
36
|
+
end
|
37
|
+
|
38
|
+
should "parse a URL out of the path" do
|
39
|
+
uri = "http://infozerktest15.data.beta.mssds.com/infozerk"
|
40
|
+
assert_equal 'data.beta.mssds.com', @connection.get_url(uri)
|
41
|
+
end
|
42
|
+
|
43
|
+
should "parse a URL out of the path with trailing slash" do
|
44
|
+
uri = "http://infozerktest15.data.beta.mssds.com/infozerk/"
|
45
|
+
assert_equal 'data.beta.mssds.com', @connection.get_url(uri)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
RAILS_ROOT = ''
|
2
|
+
RAILS_ENV = ''
|
3
|
+
|
4
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
5
|
+
require 'sds-rest'
|
6
|
+
require 'sds-activeresource'
|
7
|
+
require 'test/unit'
|
8
|
+
require 'rubygems'
|
9
|
+
require 'shoulda'
|
10
|
+
|
11
|
+
# set your connection information for your SSDS account here.
|
12
|
+
# if you have not created an authority you can use the SSDS object to do so
|
13
|
+
ENV['username'] = 'javery'
|
14
|
+
ENV['password'] = "YAnrZWh8a3y7vw9VfF8q"
|
15
|
+
ENV['url'] = "data.beta.mssds.com"
|
16
|
+
ENV['authority'] = 'infozerktest12'
|
17
|
+
|
18
|
+
def random(length=6)
|
19
|
+
chars = 'abcdefghjkmnpqrstuvwxyz'
|
20
|
+
randomstring = ''
|
21
|
+
length.times { |i| randomstring << chars[rand(chars.length)] }
|
22
|
+
randomstring
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
desc 'Release the website and new gem version'
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
3
|
+
puts "Remember to create SVN tag:"
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
+
puts "Suggested comment:"
|
7
|
+
puts "Tagging release #{CHANGES}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
12
|
+
|
13
|
+
task :check_version do
|
14
|
+
unless ENV['VERSION']
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
unless ENV['VERSION'] == VERS
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|