dot_net_services 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -28,6 +28,11 @@ API: http://dotnetservicesruby.com/documentation/classes/DotNetServices.html
28
28
 
29
29
  A demo application that demonstrates usage of the API (gem) will be added soon.
30
30
 
31
+ == Test environment
32
+
33
+ * The gem installation has been tested on 32-bit Windows Server Enterprise edition, 64-bit Windows Vista and Mac os (10.5 leopard) along with ruby 1.8.6.
34
+ * All the unit tests have been tested on 32-bit Windows Server Enterprise edition.
35
+
31
36
  == Contacts
32
37
 
33
38
  Users maillist: http://rubyforge.org/mailman/listinfo/dotnetsrv-ruby-users
data/Rakefile CHANGED
@@ -29,7 +29,7 @@ require 'rake/testtask'
29
29
 
30
30
  spec = Gem::Specification.new do |s|
31
31
  s.name = 'dot_net_services'
32
- s.version = '0.4.0'
32
+ s.version = '0.4.1'
33
33
  s.has_rdoc = true
34
34
  s.extra_rdoc_files = ['README', 'LICENSE']
35
35
  s.summary = 'Ruby wrapper for .NET services'
@@ -21,10 +21,10 @@
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
23
  require 'cgi'
24
- require "#{__FILE__}/../token_constants"
25
- require "#{__FILE__}/../token_info"
26
- require "#{__FILE__}/../token_provider"
27
- require "#{__FILE__}/../../service_bus/http_proxy"
24
+ require "#{File.dirname(__FILE__)}/token_provider"
25
+ require "#{File.dirname(__FILE__)}/token_constants"
26
+ require "#{File.dirname(__FILE__)}/token_info"
27
+ require "#{File.dirname(__FILE__)}/../service_bus/http_proxy"
28
28
 
29
29
  class SamlTokenProvider < TokenProvider
30
30
  include DotNetServices::HTTPRequests
@@ -21,10 +21,10 @@
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
23
  require 'cgi'
24
- require "#{__FILE__}/../token_provider"
25
- require "#{__FILE__}/../token_constants"
26
- require "#{__FILE__}/../token_info"
27
- require "#{__FILE__}/../../service_bus/http_proxy"
24
+ require "#{File.dirname(__FILE__)}/token_provider"
25
+ require "#{File.dirname(__FILE__)}/token_constants"
26
+ require "#{File.dirname(__FILE__)}/token_info"
27
+ require "#{File.dirname(__FILE__)}/../service_bus/http_proxy"
28
28
 
29
29
  class SharedSecretTokenProvider < TokenProvider
30
30
  attr_reader :issuer_name, :issuer_secret
@@ -21,10 +21,10 @@
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
23
  require 'cgi'
24
- require "#{__FILE__}/../token_constants"
25
- require "#{__FILE__}/../token_info"
26
- require "#{__FILE__}/../token_provider"
27
- require "#{__FILE__}/../../service_bus/http_proxy"
24
+ require "#{File.dirname(__FILE__)}/token_provider"
25
+ require "#{File.dirname(__FILE__)}/token_constants"
26
+ require "#{File.dirname(__FILE__)}/token_info"
27
+ require "#{File.dirname(__FILE__)}/../service_bus/http_proxy"
28
28
 
29
29
  class SimpleApiAuthTokenProvider < TokenProvider
30
30
  attr_reader :wrap_name, :wrap_secret
@@ -21,10 +21,10 @@
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
23
  require 'cgi'
24
- require "#{__FILE__}/../token_constants"
25
- require "#{__FILE__}/../token_info"
26
- require "#{__FILE__}/../token_provider"
27
- require "#{__FILE__}/../../service_bus/http_proxy"
24
+ require "#{File.dirname(__FILE__)}/token_provider"
25
+ require "#{File.dirname(__FILE__)}/token_constants"
26
+ require "#{File.dirname(__FILE__)}/token_info"
27
+ require "#{File.dirname(__FILE__)}/../service_bus/http_proxy"
28
28
 
29
29
  class SimpleWebTokenProvider < TokenProvider
30
30
  include DotNetServices::HTTPRequests
@@ -23,9 +23,10 @@
23
23
  require 'base64'
24
24
  require 'rubygems'
25
25
  require 'hmac-sha2'
26
- require "#{__FILE__}/../token_constants"
27
- require "#{__FILE__}/../../service_bus/requests"
28
- require "#{__FILE__}/../../service_bus/http_proxy"
26
+
27
+ require "#{File.dirname(__FILE__)}/token_constants"
28
+ require "#{File.dirname(__FILE__)}/../service_bus/requests"
29
+ require "#{File.dirname(__FILE__)}/../service_bus/http_proxy"
29
30
 
30
31
  class TokenProvider
31
32
  include DotNetServices::HTTPRequests
@@ -24,7 +24,7 @@ require "cgi"
24
24
  require "base64"
25
25
  require 'rubygems'
26
26
  require 'hmac-sha2'
27
- require "#{__FILE__}/../../service_bus/requests"
27
+ require "#{File.dirname(__FILE__)}/../service_bus/requests"
28
28
 
29
29
  class TokenValidator
30
30
 
@@ -20,13 +20,14 @@
20
20
  # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
- require "#{__FILE__}/../acs/shared_secret_token_provider"
24
- require "#{__FILE__}/../acs/simple_api_auth_token_provider"
25
- require "#{__FILE__}/../acs/simple_web_token_provider"
26
- require "#{__FILE__}/../acs/saml_token_provider"
27
- require "#{__FILE__}/../acs/token_constants"
28
- require "#{__FILE__}/../acs/token_info"
29
- require "#{__FILE__}/../acs/token_provider"
30
- require "#{__FILE__}/../acs/token_validator"
31
- require "#{__FILE__}/../service_bus/message_buffer"
23
+ require "#{File.dirname(__FILE__)}/acs/shared_secret_token_provider"
24
+
25
+ require "#{File.dirname(__FILE__)}/acs/simple_api_auth_token_provider"
26
+ require "#{File.dirname(__FILE__)}/acs/simple_web_token_provider"
27
+ require "#{File.dirname(__FILE__)}/acs/saml_token_provider"
28
+ require "#{File.dirname(__FILE__)}/acs/token_constants"
29
+ require "#{File.dirname(__FILE__)}/acs/token_info"
30
+ require "#{File.dirname(__FILE__)}/acs/token_provider"
31
+ require "#{File.dirname(__FILE__)}/acs/token_validator"
32
+ require "#{File.dirname(__FILE__)}/service_bus/message_buffer"
32
33
 
@@ -20,12 +20,12 @@
20
20
  # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
- require "#{__FILE__}/../http_proxy"
24
- require "#{__FILE__}/../requests"
25
- require "#{__FILE__}/../message_buffer_policy"
26
- require "#{__FILE__}/../locked_message_info"
27
- require "#{__FILE__}/../../acs/shared_secret_token_provider"
28
- require "#{__FILE__}/../../common/dot_net_services_environment"
23
+ require "#{File.dirname(__FILE__)}/http_proxy"
24
+ require "#{File.dirname(__FILE__)}/requests"
25
+ require "#{File.dirname(__FILE__)}/message_buffer_policy"
26
+ require "#{File.dirname(__FILE__)}/locked_message_info"
27
+ require "#{File.dirname(__FILE__)}/../acs/shared_secret_token_provider"
28
+ require "#{File.dirname(__FILE__)}/../common/dot_net_services_environment"
29
29
 
30
30
  # This class contains implementation to
31
31
  # * Create a message buffer
@@ -86,6 +86,7 @@ class MessageBuffer
86
86
  request_uri, msg_buffer_uri = msg_buffer_uris(msg_buffer_name)
87
87
  raise 'Message buffer URI not found' unless msg_buffer_uri
88
88
  token = acquire_authorization_token(request_uri, msg_buffer_uri)
89
+ yield(token) if block_given?
89
90
  begin
90
91
  options = {}
91
92
  header = {
@@ -111,6 +112,7 @@ class MessageBuffer
111
112
  def policy(msg_buffer_name)
112
113
  request_uri, msg_buffer_uri = msg_buffer_uris(msg_buffer_name)
113
114
  token = acquire_authorization_token(request_uri, msg_buffer_uri)
115
+ yield(token) if block_given?
114
116
  options = {}
115
117
  header = {
116
118
  'Content-type' => MessageBufferConstants.content_type_property_for_atom_xml,
@@ -135,6 +137,7 @@ class MessageBuffer
135
137
  def delete_message_buffer(msg_buffer_name)
136
138
  request_uri, msg_buffer_uri = msg_buffer_uris(msg_buffer_name)
137
139
  token = acquire_authorization_token(request_uri, msg_buffer_uri)
140
+ yield(token) if block_given?
138
141
  options = {}
139
142
  header = {
140
143
  'Content-type' => MessageBufferConstants.content_type_property_for_atom_xml,
@@ -160,6 +163,7 @@ class MessageBuffer
160
163
  msg_buffer_uri = message_uri(msg_buffer_name, send_path)
161
164
  message = formatted_message(msg_str)
162
165
  token = acquire_authorization_token(request_uri, msg_buffer_uri)
166
+ yield(token) if block_given?
163
167
  send_uri = msg_buffer_uri + "?" + timeout_parameter + "=" + timeout
164
168
  options = {}
165
169
  header = {
@@ -182,6 +186,7 @@ class MessageBuffer
182
186
  lock_duration_parameter = MessageBufferConstants.lock_duration_parameter
183
187
  msg_buffer_uri = message_uri(msg_buffer_name, retrieve_path)
184
188
  token = acquire_authorization_token(request_uri, msg_buffer_uri)
189
+ yield(token) if block_given?
185
190
  retrieve_url = msg_buffer_uri + "?" + timeout_parameter + "=" + timeout + "&" + lock_duration_parameter + "=" + lock_duration
186
191
  options = {}
187
192
  header = {
@@ -209,6 +214,7 @@ class MessageBuffer
209
214
  def delete_locked_message(message_uri, lock_id)
210
215
  lock_id_parameter = MessageBufferConstants.lock_id_parameter
211
216
  token = acquire_authorization_token(request_uri, message_uri)
217
+ yield(token) if block_given?
212
218
  delete_uri = message_uri + "?" + lock_id_parameter + "=" + lock_id
213
219
  options = {}
214
220
  header = {
@@ -230,6 +236,7 @@ class MessageBuffer
230
236
  # * Lock Uri
231
237
  def release_lock(lock_uri)
232
238
  token = acquire_authorization_token(request_uri, lock_uri)
239
+ yield(token) if block_given?
233
240
  options = {}
234
241
  header = {
235
242
  'Content-type' => MessageBufferConstants.content_type_property_for_text,
@@ -254,6 +261,7 @@ class MessageBuffer
254
261
  timeout_parameter = MessageBufferConstants.timeout_parameter
255
262
  msg_buffer_uri = message_uri(msg_buffer_name, retrieve_path)
256
263
  token = acquire_authorization_token(request_uri, msg_buffer_uri)
264
+ yield(token) if block_given?
257
265
  retrieve_url = msg_buffer_uri.to_s + "?" + timeout_parameter.to_s + "=" + timeout.to_s
258
266
  options = {}
259
267
  header = {
@@ -20,7 +20,7 @@
20
20
  # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
- require "#{__FILE__}/../message_buffer_constants"
23
+ require "#{File.dirname(__FILE__)}/message_buffer_constants"
24
24
 
25
25
  class MessageBufferPolicy
26
26
 
@@ -21,7 +21,7 @@
21
21
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
22
 
23
23
  require 'net/https'
24
- require "#{__FILE__}/../message_buffer_constants"
24
+ require "#{File.dirname(__FILE__)}/message_buffer_constants"
25
25
 
26
26
  module DotNetServices # :nodoc:
27
27
  module HTTPRequests # :nodoc:
@@ -38,9 +38,7 @@ module DotNetServices # :nodoc:
38
38
  end
39
39
 
40
40
  def proxy
41
- #TODO Uncomment the following line of code and comment the next line of code BEFORE RELEASE
42
- # @http_web_proxy || Net::HTTP
43
- @http_web_proxy || Net::HTTP::Proxy('itgproxy.redmond.corp.microsoft.com', '80')
41
+ @http_web_proxy || Net::HTTP
44
42
  end
45
43
 
46
44
  def get(url, options = {})
@@ -22,10 +22,10 @@
22
22
 
23
23
  simple_api_auth:
24
24
  wrap_name: infocorp
25
- wrap_password: eFBmEieKwRht6W6bSTuKLG8pTTVudbHmkjzJ++DukFc=
25
+ wrap_password: iTy6x9SDRQqS8d+PR00cAoVcc5HVz7YsfwGYzrhTIDk=
26
26
  applies_to: http://localhost/SalesDashboard/
27
27
  solution_name: rubyservice
28
- trusted_key: YtO+yRw7gIXvU2ObK0P4W6hsCQPmQPlo/geg8zJDrb0=
28
+ trusted_key: P4DbHC+HrgOGwkbOsgxTOP6xoUTCrwLMA++smRuADaY=
29
29
 
30
30
  #Setting the proxy is optional. You may also set http_web_proxy_username and http_web_proxy_password if you need to.
31
31
  proxy:
@@ -34,7 +34,7 @@ proxy:
34
34
 
35
35
  type_token:
36
36
  issuer_name: owner
37
- issuer_key: Jtt77GMAGljdnTXqvHlwijwGobEJXfT4+xlXAnLQoB4=
37
+ issuer_key: 1Rk38uPaY0/Fs0aD3bWsTSLCuFx2VVJIqRzhDFo3wlo=
38
38
  rest_applies_to: http://rubyservice.servicebus.windows.net/whatver/
39
39
  rest_request_uri: https://rubyservice-sb.accesscontrol.windows.net/WRAPv0.8/
40
40
 
@@ -1,96 +1,96 @@
1
- # Copyright (c) 2009, Persistent Systems Limited
2
- #
3
- # Redistribution and use, with or without modification, are permitted
4
- # provided that the following conditions are met:
5
- # - Redistributions of source code must retain the above copyright notice,
6
- # this list of conditions and the following disclaimer.
7
- # - Neither the name of Persistent Systems Limited nor the names of its contributors
8
- # may be used to endorse or promote products derived from this software
9
- # without specific prior written permission.
10
- #
11
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
12
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
13
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14
- # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
15
- # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
16
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS
18
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
-
23
- require 'test/unit'
24
- require '../lib/service_bus/message_buffer'
25
- require "../lib/acs/token_constants"
26
- require 'yaml'
27
-
28
- class MessageBufferTest < Test::Unit::TestCase
29
-
30
- def setup
31
- @config = YAML.load(File.open('config/test_config.yml'))
32
- @issuer_name = @config['type_token']['issuer_name']
33
- @issuer_secret = @config['type_token']['issuer_secret']
34
- @solution_name = @config['simple_api_auth']['solution_name']
35
- @service_name = TokenConstants.simple_auth_authentication_type
36
- @issuer_name = @config['type_token']['issuer_name']
37
- @issuer_key = @config['type_token']['issuer_key']
38
- end
39
-
40
- def test_create_message_buffer
41
- msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
42
- msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
43
- assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
44
- assert policy_msg = msg_buffer.policy("ThisIsNotAMessageBuffer")
45
- assert policy_msg.match(/<entry/)
46
- end
47
-
48
- def test_delete_message_buffer
49
- msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
50
- msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
51
- assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
52
- assert msg_buffer.delete_message_buffer("ThisIsNotAMessageBuffer")
53
- end
54
-
55
- def test_send_message
56
- msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
57
- msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
58
- assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
59
- message_text = 'This is not a message in ThisIsNotAMessageBuffer'
60
- assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
61
- assert message = msg_buffer.retrieve_message('ThisIsNotAMessageBuffer')
62
- assert message.include?(message_text)
63
- end
64
-
65
- def test_peek_lock
66
- msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
67
- msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
68
- assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
69
- message_text = 'This is not a message in ThisIsNotAMessageBuffer'
70
- assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
71
- assert locked_message_info = msg_buffer.peek_lock('ThisIsNotAMessageBuffer')
72
- assert_not_nil locked_message_info.message_uri
73
- assert_not_nil locked_message_info.lock_uri
74
- assert_not_nil locked_message_info.lock_id
75
- end
76
-
77
- def test_release_lock
78
- msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
79
- msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
80
- assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
81
- message_text = 'This is not a message in ThisIsNotAMessageBuffer'
82
- assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
83
- assert locked_message_info = msg_buffer.peek_lock('ThisIsNotAMessageBuffer')
84
- assert msg_buffer.release_lock(locked_message_info.lock_uri)
85
- end
86
-
87
- def test_delete_locked_message
88
- msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
89
- msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
90
- assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
91
- message_text = 'This is not a message in ThisIsNotAMessageBuffer'
92
- assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
93
- assert locked_message_info = msg_buffer.peek_lock('ThisIsNotAMessageBuffer')
94
- assert msg_buffer.delete_locked_message(locked_message_info.message_uri, locked_message_info.lock_id)
95
- end
1
+ # Copyright (c) 2009, Persistent Systems Limited
2
+ #
3
+ # Redistribution and use, with or without modification, are permitted
4
+ # provided that the following conditions are met:
5
+ # - Redistributions of source code must retain the above copyright notice,
6
+ # this list of conditions and the following disclaimer.
7
+ # - Neither the name of Persistent Systems Limited nor the names of its contributors
8
+ # may be used to endorse or promote products derived from this software
9
+ # without specific prior written permission.
10
+ #
11
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
12
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
13
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
15
+ # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
16
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17
+ # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS
18
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19
+ # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20
+ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
+ # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
+
23
+ require 'test/unit'
24
+ require 'yaml'
25
+ require "../lib/service_bus/message_buffer"
26
+ require "../lib/acs/token_constants"
27
+
28
+ class MessageBufferTest < Test::Unit::TestCase
29
+
30
+ def setup
31
+ @config = YAML.load(File.open('config/test_config.yml'))
32
+ @issuer_name = @config['type_token']['issuer_name']
33
+ @issuer_secret = @config['type_token']['issuer_secret']
34
+ @solution_name = @config['simple_api_auth']['solution_name']
35
+ @service_name = TokenConstants.simple_auth_authentication_type
36
+ @issuer_name = @config['type_token']['issuer_name']
37
+ @issuer_key = @config['type_token']['issuer_key']
38
+ end
39
+
40
+ def test_create_message_buffer
41
+ msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
42
+ msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
43
+ assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
44
+ assert policy_msg = msg_buffer.policy("ThisIsNotAMessageBuffer")
45
+ assert policy_msg.match(/<entry/)
46
+ end
47
+
48
+ def test_delete_message_buffer
49
+ msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
50
+ msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
51
+ assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
52
+ assert msg_buffer.delete_message_buffer("ThisIsNotAMessageBuffer")
53
+ end
54
+
55
+ def test_send_message
56
+ msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
57
+ msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
58
+ assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
59
+ message_text = 'This is not a message in ThisIsNotAMessageBuffer'
60
+ assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
61
+ assert message = msg_buffer.retrieve_message('ThisIsNotAMessageBuffer')
62
+ assert message.include?(message_text)
63
+ end
64
+
65
+ def test_peek_lock
66
+ msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
67
+ msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
68
+ assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
69
+ message_text = 'This is not a message in ThisIsNotAMessageBuffer'
70
+ assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
71
+ assert locked_message_info = msg_buffer.peek_lock('ThisIsNotAMessageBuffer')
72
+ assert_not_nil locked_message_info.message_uri
73
+ assert_not_nil locked_message_info.lock_uri
74
+ assert_not_nil locked_message_info.lock_id
75
+ end
76
+
77
+ def test_release_lock
78
+ msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
79
+ msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
80
+ assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
81
+ message_text = 'This is not a message in ThisIsNotAMessageBuffer'
82
+ assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
83
+ assert locked_message_info = msg_buffer.peek_lock('ThisIsNotAMessageBuffer')
84
+ assert msg_buffer.release_lock(locked_message_info.lock_uri)
85
+ end
86
+
87
+ def test_delete_locked_message
88
+ msg_buffer = MessageBuffer.new(@issuer_name, @issuer_key, @solution_name, @service_name, @config['proxy'])
89
+ msg_buffer_policy_obj = MessageBufferPolicy.new("Required", "None", "PT5M", 10)
90
+ assert msg_buffer.create_message_buffer("ThisIsNotAMessageBuffer", msg_buffer_policy_obj)
91
+ message_text = 'This is not a message in ThisIsNotAMessageBuffer'
92
+ assert msg_buffer.send_message('ThisIsNotAMessageBuffer', message_text)
93
+ assert locked_message_info = msg_buffer.peek_lock('ThisIsNotAMessageBuffer')
94
+ assert msg_buffer.delete_locked_message(locked_message_info.message_uri, locked_message_info.lock_id)
95
+ end
96
96
  end
data/test/token_test.rb CHANGED
@@ -1,98 +1,98 @@
1
- # Copyright (c) 2009, Persistent Systems Limited
2
- #
3
- # Redistribution and use, with or without modification, are permitted
4
- # provided that the following conditions are met:
5
- # - Redistributions of source code must retain the above copyright notice,
6
- # this list of conditions and the following disclaimer.
7
- # - Neither the name of Persistent Systems Limited nor the names of its contributors
8
- # may be used to endorse or promote products derived from this software
9
- # without specific prior written permission.
10
- #
11
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
12
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
13
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14
- # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
15
- # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
16
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS
18
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
-
23
- require 'test/unit'
24
- require "../lib/acs/simple_api_auth_token_provider"
25
- require "../lib/acs/shared_secret_token_provider"
26
- require "../lib/acs/simple_web_token_provider"
27
- require "../lib/acs/saml_token_provider"
28
- require "../lib/acs/token_constants"
29
- require "../lib/common/dot_net_services_environment"
30
- require "../lib/acs/token_validator"
31
-
32
-
33
-
34
- class TokenTest < Test::Unit::TestCase
35
- def setup
36
- @config = YAML.load(File.open('config/test_config.yml'))
37
- @wrap_name = @config['simple_api_auth']['wrap_name']
38
- @wrap_password = @config['simple_api_auth']['wrap_password']
39
- @issuer_name = @config['type_token']['issuer_name']
40
- @issuer_key = @config['type_token']['issuer_key']
41
- @solution_name = @config['simple_api_auth']['solution_name']
42
- @service_name = TokenConstants.simple_auth_authentication_type
43
- @simple_api_auth_applies_to = @config['simple_api_auth']['applies_to']
44
- @trusted_signing_key = @config['simple_api_auth']['trusted_key']
45
-
46
- @request_uri = @config['type_token']['rest_request_uri']
47
- @applies_to = @config['type_token']['rest_applies_to']
48
-
49
- if @config['proxy']['http_web_proxy_server'] && @config['proxy']['http_web_proxy_port']
50
- @http_web_proxy = Net::HTTP::Proxy(@config['proxy']['http_web_proxy_server'], @config['proxy']['http_web_proxy_port'])
51
- end
52
- end
53
-
54
- def test_simple_api_auth_token
55
- saatp = SimpleApiAuthTokenProvider.new(@wrap_name, @wrap_password, @config['proxy'])
56
- request_uri = "https://#{@solution_name}.#{DotNetServicesEnvironment.acm_host_name}/#{@service_name}/"
57
- token_info = saatp.token(request_uri, @simple_api_auth_applies_to)
58
- assert token_valid?(token_info.token), "TOKEN VALIDITY FAILED!"
59
- assert token_claims_valid?(token_info.token), "TOKEN VALIDITY FAILED!"
60
- assert_not_nil token_info.token
61
- end
62
-
63
- def test_shared_secret_token
64
- sstp = SharedSecretTokenProvider.new(@issuer_name, @issuer_key, @config['proxy'])
65
- token_info = sstp.token(@request_uri, @applies_to)
66
- assert_not_nil token_info.token, "Shared Secret Token acquired is nil" #msg_buffer_uri = applies_to
67
- end
68
-
69
- def test_simple_web_token
70
- simple_web_token_provider = SimpleWebTokenProvider.new(@issuer_name, @issuer_key, @config['proxy'])
71
- token_info = simple_web_token_provider.token(@request_uri, @applies_to)
72
- assert_not_nil token_info.token
73
- end
74
-
75
- # TODO: Replace SimpleWebTokenProvider with SamlToken once Saml token is implemented.
76
- def test_saml_token
77
- #~ saml_token_provider = SimpleWebTokenProvider.new(saml_token, @http_web_proxy)
78
- #~ token_info = saml_token_provider.token(@request_uri, @applies_to)
79
- #~ assert_not_nil token_info.token
80
- end
81
-
82
- private
83
-
84
- def token_valid?(token)
85
- tv = TokenValidator.new(@service_name, @solution_name, @simple_api_auth_applies_to, @trusted_signing_key, @service_name + " " + token)
86
- tv.validate
87
- end
88
-
89
- def token_claims_valid?(token)
90
- tv = TokenValidator.new(@service_name, @solution_name, @simple_api_auth_applies_to, @trusted_signing_key, @service_name + " " + token)
91
- tv.populate_claims(CGI::unescape(token))
92
- valid_claim = tv.validate_claims({"ViewRegion"=>"true"})
93
- invalid_claim = tv.validate_claims({"InvalidClaim"=>"true"})
94
- incorrect_claim = tv.validate_claims({"ViewRegion"=>"false"})
95
- valid_claim && !invalid_claim && !incorrect_claim
96
- end
97
-
98
- end
1
+ # Copyright (c) 2009, Persistent Systems Limited
2
+ #
3
+ # Redistribution and use, with or without modification, are permitted
4
+ # provided that the following conditions are met:
5
+ # - Redistributions of source code must retain the above copyright notice,
6
+ # this list of conditions and the following disclaimer.
7
+ # - Neither the name of Persistent Systems Limited nor the names of its contributors
8
+ # may be used to endorse or promote products derived from this software
9
+ # without specific prior written permission.
10
+ #
11
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
12
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
13
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
15
+ # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
16
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17
+ # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS
18
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19
+ # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20
+ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
21
+ # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
+
23
+ require 'test/unit'
24
+ require "../lib/acs/simple_api_auth_token_provider"
25
+ require "../lib/acs/shared_secret_token_provider"
26
+ require "../lib/acs/simple_web_token_provider"
27
+ require "../lib/acs/saml_token_provider"
28
+ require "../lib/acs/token_constants"
29
+ require "../lib/common/dot_net_services_environment"
30
+ require "../lib/acs/token_validator"
31
+
32
+
33
+
34
+ class TokenTest < Test::Unit::TestCase
35
+ def setup
36
+ @config = YAML.load(File.open('config/test_config.yml'))
37
+ @wrap_name = @config['simple_api_auth']['wrap_name']
38
+ @wrap_password = @config['simple_api_auth']['wrap_password']
39
+ @issuer_name = @config['type_token']['issuer_name']
40
+ @issuer_key = @config['type_token']['issuer_key']
41
+ @solution_name = @config['simple_api_auth']['solution_name']
42
+ @service_name = TokenConstants.simple_auth_authentication_type
43
+ @simple_api_auth_applies_to = @config['simple_api_auth']['applies_to']
44
+ @trusted_signing_key = @config['simple_api_auth']['trusted_key']
45
+
46
+ @request_uri = @config['type_token']['rest_request_uri']
47
+ @applies_to = @config['type_token']['rest_applies_to']
48
+
49
+ if @config['proxy']['http_web_proxy_server'] && @config['proxy']['http_web_proxy_port']
50
+ @http_web_proxy = Net::HTTP::Proxy(@config['proxy']['http_web_proxy_server'], @config['proxy']['http_web_proxy_port'])
51
+ end
52
+ end
53
+
54
+ def test_simple_api_auth_token
55
+ saatp = SimpleApiAuthTokenProvider.new(@wrap_name, @wrap_password, @config['proxy'])
56
+ request_uri = "https://#{@solution_name}.#{DotNetServicesEnvironment.acm_host_name}/#{@service_name}/"
57
+ token_info = saatp.token(request_uri, @simple_api_auth_applies_to)
58
+ assert token_valid?(token_info.token), "TOKEN VALIDITY FAILED!"
59
+ assert token_claims_valid?(token_info.token), "TOKEN VALIDITY FAILED!"
60
+ assert_not_nil token_info.token
61
+ end
62
+
63
+ def test_shared_secret_token
64
+ sstp = SharedSecretTokenProvider.new(@issuer_name, @issuer_key, @config['proxy'])
65
+ token_info = sstp.token(@request_uri, @applies_to)
66
+ assert_not_nil token_info.token, "Shared Secret Token acquired is nil" #msg_buffer_uri = applies_to
67
+ end
68
+
69
+ def test_simple_web_token
70
+ simple_web_token_provider = SimpleWebTokenProvider.new(@issuer_name, @issuer_key, @config['proxy'])
71
+ token_info = simple_web_token_provider.token(@request_uri, @applies_to)
72
+ assert_not_nil token_info.token
73
+ end
74
+
75
+ # TODO: Replace SimpleWebTokenProvider with SamlToken once Saml token is implemented.
76
+ def test_saml_token
77
+ #~ saml_token_provider = SimpleWebTokenProvider.new(saml_token, @http_web_proxy)
78
+ #~ token_info = saml_token_provider.token(@request_uri, @applies_to)
79
+ #~ assert_not_nil token_info.token
80
+ end
81
+
82
+ private
83
+
84
+ def token_valid?(token)
85
+ tv = TokenValidator.new(@service_name, @solution_name, @simple_api_auth_applies_to, @trusted_signing_key, @service_name + " " + token)
86
+ tv.validate
87
+ end
88
+
89
+ def token_claims_valid?(token)
90
+ tv = TokenValidator.new(@service_name, @solution_name, @simple_api_auth_applies_to, @trusted_signing_key, @service_name + " " + token)
91
+ tv.populate_claims(CGI::unescape(token))
92
+ valid_claim = tv.validate_claims({"ViewRegion"=>"true"})
93
+ invalid_claim = tv.validate_claims({"InvalidClaim"=>"true"})
94
+ incorrect_claim = tv.validate_claims({"ViewRegion"=>"false"})
95
+ valid_claim && !invalid_claim && !incorrect_claim
96
+ end
97
+
98
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dot_net_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ""
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-13 00:00:00 +05:30
12
+ date: 2009-11-24 00:00:00 +05:30
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency