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.
@@ -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
@@ -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
@@ -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