rcap 1.1.1 → 1.2.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/CHANGELOG.rdoc +6 -0
- data/README.rdoc +1 -1
- data/lib/rcap.rb +6 -0
- data/lib/rcap/alert.rb +9 -0
- data/lib/rcap/cap_1_0/alert.rb +1 -1
- data/lib/rcap/cap_1_0/circle.rb +1 -1
- data/lib/rcap/cap_1_0/resource.rb +5 -4
- data/lib/rcap/cap_1_1/alert.rb +1 -1
- data/lib/rcap/cap_1_1/resource.rb +23 -5
- data/lib/rcap/cap_1_2/alert.rb +1 -1
- data/lib/rcap/cap_1_2/resource.rb +27 -9
- data/lib/rcap/validations.rb +1 -1
- data/lib/rcap/version.rb +1 -1
- data/rcap.gemspec +3 -2
- data/spec/cap_1_0/resource_spec.rb +9 -3
- data/spec/cap_1_1/resource_spec.rb +32 -3
- data/spec/cap_1_2/resource_spec.rb +32 -3
- data/spec/spec_helper.rb +1 -1
- metadata +14 -3
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= Change Log
|
2
2
|
|
3
|
+
== 1.2.0 - 17 July 2011
|
4
|
+
|
5
|
+
* CAP 1.1 and CAP 1.2 - Resource#dereference_uri! fetches data from Resource#uri and sets Resource#deref_uri
|
6
|
+
* Resource#deref_uri= will also automatically set size and calculate SHA1 digest
|
7
|
+
* Resources correctly deal with size on import and export
|
8
|
+
|
3
9
|
== 1.1.1 - 25 June 2011
|
4
10
|
|
5
11
|
* Documentation and code cleanup
|
data/README.rdoc
CHANGED
data/lib/rcap.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# System and require libs
|
1
2
|
require 'date'
|
2
3
|
require 'assistance'
|
3
4
|
require 'uuidtools'
|
@@ -5,6 +6,10 @@ require 'yaml'
|
|
5
6
|
require 'json'
|
6
7
|
require 'rexml/document'
|
7
8
|
require 'rexml/formatters/pretty'
|
9
|
+
require 'open-uri'
|
10
|
+
require 'base64'
|
11
|
+
require 'digest/sha1'
|
12
|
+
# RCAP
|
8
13
|
require 'rcap/version'
|
9
14
|
require 'rcap/utilities'
|
10
15
|
require 'rcap/validations'
|
@@ -39,4 +44,5 @@ require 'rcap/cap_1_2/circle'
|
|
39
44
|
require 'rcap/cap_1_2/polygon'
|
40
45
|
require 'rcap/cap_1_2/geocode'
|
41
46
|
require 'rcap/cap_1_2/area'
|
47
|
+
# Configuration
|
42
48
|
require 'config'
|
data/lib/rcap/alert.rb
CHANGED
@@ -5,6 +5,9 @@ module RCAP
|
|
5
5
|
YAML_CAP_VERSION_KEY = "CAP Version"
|
6
6
|
JSON_CAP_VERSION_KEY = "cap_version"
|
7
7
|
|
8
|
+
# Initialise a RCAP Alert from a XML document. The namespace of the
|
9
|
+
# document is inspected and a CAP_1_0::Alert, CAP_1_1::Alert
|
10
|
+
# or CAP_1_2::Alert is instantiated.
|
8
11
|
def self.from_xml( xml, namespace_key = XMLNS_KEY )
|
9
12
|
xml_document = REXML::Document.new( xml )
|
10
13
|
|
@@ -19,6 +22,9 @@ module RCAP
|
|
19
22
|
|
20
23
|
end
|
21
24
|
|
25
|
+
# Initialise a RCAP Alert from a YAML document produced by
|
26
|
+
# CAP_1_2::Alert#to_yaml. The version of the document is inspected and a
|
27
|
+
# CAP_1_0::Alert, CAP_1_1::Alert or CAP_1_2::Alert is instantiated.
|
22
28
|
def self.from_yaml( yaml )
|
23
29
|
yaml_data = YAML.load( yaml )
|
24
30
|
|
@@ -32,6 +38,9 @@ module RCAP
|
|
32
38
|
end
|
33
39
|
end
|
34
40
|
|
41
|
+
# Initialise a RCAP Alert from a JSON document produced by
|
42
|
+
# CAP_1_2::Alert#to_json. The version of the document is inspected and a
|
43
|
+
# CAP_1_0::Alert, CAP_1_1::Alert or CAP_1_2::Alert is instantiated.
|
35
44
|
def self.from_json( json_string )
|
36
45
|
json_hash = JSON.parse( json_string )
|
37
46
|
self.from_h( json_hash )
|
data/lib/rcap/cap_1_0/alert.rb
CHANGED
data/lib/rcap/cap_1_0/circle.rb
CHANGED
@@ -74,7 +74,7 @@ module RCAP
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def self.from_h( circle_hash ) # :nodoc:
|
77
|
-
self.new( :radius => circle_hash[ RADIUS_KEY ],
|
77
|
+
self.new( :radius => circle_hash[ RADIUS_KEY ],
|
78
78
|
:lattitude => circle_hash[ LATTITUDE_KEY ],
|
79
79
|
:longitude => circle_hash[ LONGITUDE_KEY ])
|
80
80
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module RCAP
|
2
2
|
module CAP_1_0
|
3
|
-
|
3
|
+
|
4
|
+
# A Resource object is valid if
|
4
5
|
# * it has a resource description
|
5
6
|
class Resource
|
6
7
|
include Validation
|
@@ -43,7 +44,7 @@ module RCAP
|
|
43
44
|
xml_element = REXML::Element.new( XML_ELEMENT_NAME )
|
44
45
|
xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( self.resource_desc )
|
45
46
|
xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( self.mime_type ) if self.mime_type
|
46
|
-
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size )
|
47
|
+
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size.to_s ) if self.size
|
47
48
|
xml_element.add_element( URI_ELEMENT_NAME ).add_text( self.uri ) if self.uri
|
48
49
|
xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( self.digest ) if self.digest
|
49
50
|
xml_element
|
@@ -74,7 +75,7 @@ module RCAP
|
|
74
75
|
resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ),
|
75
76
|
:uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ),
|
76
77
|
:mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ),
|
77
|
-
:size => RCAP.xpath_text( resource_xml_element, SIZE_XPATH, Alert::XMLNS ),
|
78
|
+
:size => RCAP.xpath_text( resource_xml_element, SIZE_XPATH, Alert::XMLNS ).to_i,
|
78
79
|
:digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS ))
|
79
80
|
end
|
80
81
|
|
@@ -84,7 +85,7 @@ module RCAP
|
|
84
85
|
SIZE_YAML = "Size" # :nodoc:
|
85
86
|
DIGEST_YAML = "Digest" # :nodoc:
|
86
87
|
|
87
|
-
def to_yaml( options ) # :nodoc:
|
88
|
+
def to_yaml( options = {} ) # :nodoc:
|
88
89
|
RCAP.attribute_values_to_hash(
|
89
90
|
[ RESOURCE_DESC_YAML, self.resource_desc ],
|
90
91
|
[ URI_YAML, self.uri ],
|
data/lib/rcap/cap_1_1/alert.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module RCAP
|
2
2
|
module CAP_1_1
|
3
|
-
|
3
|
+
|
4
|
+
# A Resource object is valid if
|
4
5
|
# * it has a resource description
|
5
6
|
class Resource
|
6
7
|
include Validation
|
@@ -13,7 +14,7 @@ module RCAP
|
|
13
14
|
# Resource location
|
14
15
|
attr_accessor( :uri )
|
15
16
|
# Dereferenced URI - contents of URI Base64 encoded
|
16
|
-
|
17
|
+
attr_reader( :deref_uri )
|
17
18
|
# SHA-1 hash of contents of resource
|
18
19
|
attr_accessor( :digest )
|
19
20
|
|
@@ -48,7 +49,7 @@ module RCAP
|
|
48
49
|
xml_element = REXML::Element.new( XML_ELEMENT_NAME )
|
49
50
|
xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( self.resource_desc )
|
50
51
|
xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( self.mime_type ) if self.mime_type
|
51
|
-
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size )
|
52
|
+
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size.to_s ) if self.size
|
52
53
|
xml_element.add_element( URI_ELEMENT_NAME ).add_text( self.uri ) if self.uri
|
53
54
|
xml_element.add_element( DEREF_URI_ELEMENT_NAME ).add_text( self.deref_uri ) if self.deref_uri
|
54
55
|
xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( self.digest ) if self.digest
|
@@ -76,12 +77,29 @@ module RCAP
|
|
76
77
|
self.resource_desc
|
77
78
|
end
|
78
79
|
|
80
|
+
# Sets the deref_uri. The SHA digest and size are also calculated and set.
|
81
|
+
def deref_uri=( value )
|
82
|
+
@deref_uri = value
|
83
|
+
self.digest = Digest::SHA1.hexdigest( @deref_uri )
|
84
|
+
self.size = @deref_uri.bytesize
|
85
|
+
end
|
86
|
+
|
87
|
+
# Retrieves the content at uri and stores it in deref_uri as Base64 encoded text. It will also
|
88
|
+
# calculate the digest on the encoded data using SHA1 and set the size.
|
89
|
+
#
|
90
|
+
# This uses the open-uri[http://ruby-doc.org/stdlib/libdoc/open-uri/rdoc/index.html] Ruby API
|
91
|
+
# to open and read the content.
|
92
|
+
def dereference_uri!
|
93
|
+
content = URI.parse( self.uri ).read
|
94
|
+
self.deref_uri = Base64.encode64( content )
|
95
|
+
end
|
96
|
+
|
79
97
|
def self.from_xml_element( resource_xml_element ) # :nodoc:
|
80
98
|
resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ),
|
81
99
|
:uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ),
|
82
100
|
:mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ),
|
83
101
|
:deref_uri => RCAP.xpath_text( resource_xml_element, DEREF_URI_XPATH, Alert::XMLNS ),
|
84
|
-
:size => RCAP.xpath_text( resource_xml_element, SIZE_XPATH, Alert::XMLNS ),
|
102
|
+
:size => RCAP.xpath_text( resource_xml_element, SIZE_XPATH, Alert::XMLNS ).to_i,
|
85
103
|
:digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS ))
|
86
104
|
end
|
87
105
|
|
@@ -92,7 +110,7 @@ module RCAP
|
|
92
110
|
SIZE_YAML = "Size" # :nodoc:
|
93
111
|
DIGEST_YAML = "Digest" # :nodoc:
|
94
112
|
|
95
|
-
def to_yaml( options ) # :nodoc:
|
113
|
+
def to_yaml( options = {} ) # :nodoc:
|
96
114
|
RCAP.attribute_values_to_hash(
|
97
115
|
[ RESOURCE_DESC_YAML, self.resource_desc ],
|
98
116
|
[ URI_YAML, self.uri ],
|
data/lib/rcap/cap_1_2/alert.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module RCAP
|
2
2
|
module CAP_1_2
|
3
|
-
|
3
|
+
|
4
|
+
# A Resource object is valid if
|
4
5
|
# * it has a resource description
|
5
6
|
class Resource
|
6
7
|
include Validation
|
@@ -14,7 +15,7 @@ module RCAP
|
|
14
15
|
# Resource location
|
15
16
|
attr_accessor( :uri )
|
16
17
|
# Dereferenced URI - contents of URI Base64 encoded
|
17
|
-
|
18
|
+
attr_reader( :deref_uri )
|
18
19
|
# SHA-1 hash of contents of resource
|
19
20
|
attr_accessor( :digest )
|
20
21
|
|
@@ -50,7 +51,7 @@ module RCAP
|
|
50
51
|
xml_element = REXML::Element.new( XML_ELEMENT_NAME )
|
51
52
|
xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( self.resource_desc )
|
52
53
|
xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( self.mime_type ) if self.mime_type
|
53
|
-
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size )
|
54
|
+
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size.to_s ) if self.size
|
54
55
|
xml_element.add_element( URI_ELEMENT_NAME ).add_text( self.uri ) if self.uri
|
55
56
|
xml_element.add_element( DEREF_URI_ELEMENT_NAME ).add_text( self.deref_uri ) if self.deref_uri
|
56
57
|
xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( self.digest ) if self.digest
|
@@ -78,13 +79,30 @@ module RCAP
|
|
78
79
|
self.resource_desc
|
79
80
|
end
|
80
81
|
|
82
|
+
# Sets the deref_uri. The SHA digest and size are also calculated and set.
|
83
|
+
def deref_uri=( value )
|
84
|
+
@deref_uri = value
|
85
|
+
self.digest = Digest::SHA1.hexdigest( @deref_uri )
|
86
|
+
self.size = @deref_uri.bytesize
|
87
|
+
end
|
88
|
+
|
89
|
+
# Retrieves the content at uri and stores it in deref_uri as Base64 encoded text. It will also
|
90
|
+
# calculate the digest on the encoded data using SHA1 and set the size.
|
91
|
+
#
|
92
|
+
# This uses the open-uri[http://ruby-doc.org/stdlib/libdoc/open-uri/rdoc/index.html] Ruby API
|
93
|
+
# to open and read the content.
|
94
|
+
def dereference_uri!
|
95
|
+
content = URI.parse( self.uri ).read
|
96
|
+
self.deref_uri = Base64.encode64( content )
|
97
|
+
end
|
98
|
+
|
81
99
|
def self.from_xml_element( resource_xml_element ) # :nodoc:
|
82
100
|
resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ),
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
101
|
+
:uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ),
|
102
|
+
:mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ),
|
103
|
+
:deref_uri => RCAP.xpath_text( resource_xml_element, DEREF_URI_XPATH, Alert::XMLNS ),
|
104
|
+
:size => RCAP.xpath_text( resource_xml_element, SIZE_XPATH, Alert::XMLNS ).to_i,
|
105
|
+
:digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS ))
|
88
106
|
end
|
89
107
|
|
90
108
|
RESOURCE_DESC_YAML = "Resource Description" # :nodoc:
|
@@ -94,7 +112,7 @@ module RCAP
|
|
94
112
|
SIZE_YAML = "Size" # :nodoc:
|
95
113
|
DIGEST_YAML = "Digest" # :nodoc:
|
96
114
|
|
97
|
-
def to_yaml( options ) # :nodoc:
|
115
|
+
def to_yaml( options = {} ) # :nodoc:
|
98
116
|
RCAP.attribute_values_to_hash(
|
99
117
|
[ RESOURCE_DESC_YAML, self.resource_desc ],
|
100
118
|
[ URI_YAML, self.uri ],
|
data/lib/rcap/validations.rb
CHANGED
@@ -49,7 +49,7 @@ module Validation # :nodoc:
|
|
49
49
|
}.merge!( attributes.extract_options! )
|
50
50
|
|
51
51
|
validates_each( *attributes ) do |object, attribute, value|
|
52
|
-
next if ( value.nil? && options[ :allow_nil ])
|
52
|
+
next if ( value.nil? && options[ :allow_nil ])
|
53
53
|
unless value && value.valid?
|
54
54
|
object.errors[ attribute ] << options[ :message ]
|
55
55
|
end
|
data/lib/rcap/version.rb
CHANGED
data/rcap.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_dependency('json', '>= 1.5.1')
|
25
25
|
s.add_dependency('uuidtools', '>= 2.1.2')
|
26
26
|
|
27
|
-
s.add_development_dependency('rspec', '>= 2.5.0')
|
28
|
-
s.add_development_dependency('hanna', '>= 0.1.12')
|
27
|
+
s.add_development_dependency( 'rspec', '>= 2.5.0' )
|
28
|
+
s.add_development_dependency( 'hanna', '>= 0.1.12' )
|
29
|
+
s.add_development_dependency( 'webmock' )
|
29
30
|
end
|
@@ -18,7 +18,7 @@ describe( RCAP::CAP_1_0::Resource ) do
|
|
18
18
|
@original_resource.resource_desc = "Image of incident"
|
19
19
|
@original_resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
20
20
|
@original_resource.mime_type = 'image/png'
|
21
|
-
@original_resource.size =
|
21
|
+
@original_resource.size = 20480
|
22
22
|
@original_resource.digest = "2048"
|
23
23
|
|
24
24
|
@alert = RCAP::CAP_1_0::Alert.new( :infos => RCAP::CAP_1_0::Info.new( :resources => @original_resource ))
|
@@ -58,7 +58,7 @@ describe( RCAP::CAP_1_0::Resource ) do
|
|
58
58
|
@original_resource.resource_desc = "Image of incident"
|
59
59
|
@original_resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
60
60
|
@original_resource.mime_type = 'image/png'
|
61
|
-
@original_resource.size =
|
61
|
+
@original_resource.size = 20480
|
62
62
|
@original_resource.digest = "2048"
|
63
63
|
|
64
64
|
@resource = RCAP::CAP_1_0::Resource.from_h( @original_resource.to_h )
|
@@ -93,7 +93,7 @@ describe( RCAP::CAP_1_0::Resource ) do
|
|
93
93
|
@resource.resource_desc = "Image of incident"
|
94
94
|
@resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
95
95
|
@resource.mime_type = 'image/png'
|
96
|
-
@resource.size =
|
96
|
+
@resource.size = 20480
|
97
97
|
@resource.digest = "2048"
|
98
98
|
end
|
99
99
|
|
@@ -122,6 +122,12 @@ describe( RCAP::CAP_1_0::Resource ) do
|
|
122
122
|
@resource_hash[ RCAP::CAP_1_0::Resource::DIGEST_KEY ].should == @resource.digest
|
123
123
|
end
|
124
124
|
end
|
125
|
+
|
126
|
+
context( 'to xml' ) do
|
127
|
+
it( 'should be successful' ) do
|
128
|
+
lambda{ @resource_xml = @resource.to_xml }.should_not( raise_exception )
|
129
|
+
end
|
130
|
+
end
|
125
131
|
end
|
126
132
|
|
127
133
|
context( 'which is valid' ) do
|
@@ -20,7 +20,7 @@ describe( RCAP::CAP_1_1::Resource ) do
|
|
20
20
|
@original_resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
21
21
|
@original_resource.mime_type = 'image/png'
|
22
22
|
@original_resource.deref_uri = "IMAGE DATA"
|
23
|
-
@original_resource.size =
|
23
|
+
@original_resource.size = 20480
|
24
24
|
@original_resource.digest = "2048"
|
25
25
|
|
26
26
|
@alert = RCAP::CAP_1_1::Alert.new( :infos => RCAP::CAP_1_1::Info.new( :resources => @original_resource ))
|
@@ -65,7 +65,7 @@ describe( RCAP::CAP_1_1::Resource ) do
|
|
65
65
|
@original_resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
66
66
|
@original_resource.mime_type = 'image/png'
|
67
67
|
@original_resource.deref_uri = "IMAGE DATA"
|
68
|
-
@original_resource.size =
|
68
|
+
@original_resource.size = 20480
|
69
69
|
@original_resource.digest = "2048"
|
70
70
|
|
71
71
|
@resource = RCAP::CAP_1_1::Resource.from_h( @original_resource.to_h )
|
@@ -105,7 +105,7 @@ describe( RCAP::CAP_1_1::Resource ) do
|
|
105
105
|
@resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
106
106
|
@resource.mime_type = 'image/png'
|
107
107
|
@resource.deref_uri = "IMAGE DATA"
|
108
|
-
@resource.size =
|
108
|
+
@resource.size = 20480
|
109
109
|
@resource.digest = "2048"
|
110
110
|
end
|
111
111
|
|
@@ -138,6 +138,12 @@ describe( RCAP::CAP_1_1::Resource ) do
|
|
138
138
|
@resource_hash[ RCAP::CAP_1_1::Resource::DIGEST_KEY ].should == @resource.digest
|
139
139
|
end
|
140
140
|
end
|
141
|
+
|
142
|
+
context( 'to xml' ) do
|
143
|
+
it( 'should be successful' ) do
|
144
|
+
lambda{ @resource_xml = @resource.to_xml }.should_not( raise_exception )
|
145
|
+
end
|
146
|
+
end
|
141
147
|
end
|
142
148
|
|
143
149
|
context( 'which is valid' ) do
|
@@ -153,4 +159,27 @@ describe( RCAP::CAP_1_1::Resource ) do
|
|
153
159
|
end
|
154
160
|
end
|
155
161
|
end
|
162
|
+
|
163
|
+
context( 'with a non-rereferenced URI' ) do
|
164
|
+
before( :each ) do
|
165
|
+
@resource = RCAP::CAP_1_1::Resource.new( :resource_desc => 'Resource Description', :mime_type => 'text/csv', :uri => 'http://tempuri.org/resource.csv' )
|
166
|
+
@content = "1,2\n3,4"
|
167
|
+
@encoded_content = Base64.encode64( @content )
|
168
|
+
stub_request( :get, @resource.uri ).to_return( :status => 200, :body => @content )
|
169
|
+
end
|
170
|
+
|
171
|
+
describe( '#dereference_uri!' ) do
|
172
|
+
it( 'should fetch the content and store it in deref_uri as Base64 encoded content' ) do
|
173
|
+
lambda{ @resource.dereference_uri! }.should( change( @resource, :deref_uri ).to( @encoded_content ))
|
174
|
+
end
|
175
|
+
|
176
|
+
it( 'should generate the correct SHA1 hash' ) do
|
177
|
+
lambda{ @resource.dereference_uri! }.should( change( @resource, :digest ).to( Digest::SHA1.hexdigest( @encoded_content )))
|
178
|
+
end
|
179
|
+
|
180
|
+
it( 'should set the size in bytes' ) do
|
181
|
+
lambda{ @resource.dereference_uri! }.should( change( @resource, :size ).to( @encoded_content.bytesize ))
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
156
185
|
end
|
@@ -20,7 +20,7 @@ describe( RCAP::CAP_1_2::Resource ) do
|
|
20
20
|
@original_resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
21
21
|
@original_resource.mime_type = 'image/png'
|
22
22
|
@original_resource.deref_uri = "IMAGE DATA"
|
23
|
-
@original_resource.size =
|
23
|
+
@original_resource.size = 20480
|
24
24
|
@original_resource.digest = "2048"
|
25
25
|
|
26
26
|
@alert = RCAP::CAP_1_2::Alert.new( :infos => RCAP::CAP_1_2::Info.new( :resources => @original_resource ))
|
@@ -65,7 +65,7 @@ describe( RCAP::CAP_1_2::Resource ) do
|
|
65
65
|
@original_resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
66
66
|
@original_resource.mime_type = 'image/png'
|
67
67
|
@original_resource.deref_uri = "IMAGE DATA"
|
68
|
-
@original_resource.size =
|
68
|
+
@original_resource.size = 20480
|
69
69
|
@original_resource.digest = "2048"
|
70
70
|
|
71
71
|
@resource = RCAP::CAP_1_2::Resource.from_h( @original_resource.to_h )
|
@@ -105,7 +105,7 @@ describe( RCAP::CAP_1_2::Resource ) do
|
|
105
105
|
@resource.uri = "http://capetown.gov.za/cap/resources/image.png"
|
106
106
|
@resource.mime_type = 'image/png'
|
107
107
|
@resource.deref_uri = "IMAGE DATA"
|
108
|
-
@resource.size =
|
108
|
+
@resource.size = 20480
|
109
109
|
@resource.digest = "2048"
|
110
110
|
end
|
111
111
|
|
@@ -138,6 +138,12 @@ describe( RCAP::CAP_1_2::Resource ) do
|
|
138
138
|
@resource_hash[ RCAP::CAP_1_2::Resource::DIGEST_KEY ].should == @resource.digest
|
139
139
|
end
|
140
140
|
end
|
141
|
+
|
142
|
+
context( 'to xml' ) do
|
143
|
+
it( 'should be successful' ) do
|
144
|
+
lambda{ @resource_xml = @resource.to_xml }.should_not( raise_exception )
|
145
|
+
end
|
146
|
+
end
|
141
147
|
end
|
142
148
|
|
143
149
|
context( 'which is valid' ) do
|
@@ -158,4 +164,27 @@ describe( RCAP::CAP_1_2::Resource ) do
|
|
158
164
|
end
|
159
165
|
end
|
160
166
|
end
|
167
|
+
|
168
|
+
context( 'with a non-rereferenced URI' ) do
|
169
|
+
before( :each ) do
|
170
|
+
@resource = RCAP::CAP_1_2::Resource.new( :resource_desc => 'Resource Description', :mime_type => 'text/csv', :uri => 'http://tempuri.org/resource.csv' )
|
171
|
+
@content = "1,2\n3,4"
|
172
|
+
@encoded_content = Base64.encode64( @content )
|
173
|
+
stub_request( :get, @resource.uri ).to_return( :status => 200, :body => @content )
|
174
|
+
end
|
175
|
+
|
176
|
+
describe( '#dereference_uri!' ) do
|
177
|
+
it( 'should fetch the content and store it in deref_uri as Base64 encoded content' ) do
|
178
|
+
lambda{ @resource.dereference_uri! }.should( change( @resource, :deref_uri ).to( @encoded_content ))
|
179
|
+
end
|
180
|
+
|
181
|
+
it( 'should generate the correct SHA1 hash' ) do
|
182
|
+
lambda{ @resource.dereference_uri! }.should( change( @resource, :digest ).to( Digest::SHA1.hexdigest( @encoded_content )))
|
183
|
+
end
|
184
|
+
|
185
|
+
it( 'should set the size in bytes' ) do
|
186
|
+
lambda{ @resource.dereference_uri! }.should( change( @resource, :size ).to( @encoded_content.bytesize ))
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
161
190
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rcap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.
|
5
|
+
version: 1.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Farrel Lifson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-07-16 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: assistance
|
@@ -67,6 +67,17 @@ dependencies:
|
|
67
67
|
version: 0.1.12
|
68
68
|
type: :development
|
69
69
|
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: webmock
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
version_requirements: *id006
|
70
81
|
description: A Ruby API providing parsing, generation and validation of CAP(Common Alerting Protocol) messages.
|
71
82
|
email:
|
72
83
|
- farrel.lifson@aimred.com
|
@@ -178,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
189
|
requirements: []
|
179
190
|
|
180
191
|
rubyforge_project: rcap
|
181
|
-
rubygems_version: 1.8.
|
192
|
+
rubygems_version: 1.8.5
|
182
193
|
signing_key:
|
183
194
|
specification_version: 3
|
184
195
|
summary: CAP(Common Alerting Protocol) API
|