dot_net_services 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/LICENSE +21 -24
  2. data/README +26 -16
  3. data/Rakefile +65 -0
  4. data/lib/acs/saml_token_provider.rb +54 -0
  5. data/lib/acs/shared_secret_token_provider.rb +55 -0
  6. data/lib/acs/simple_api_auth_token_provider.rb +57 -0
  7. data/lib/acs/simple_web_token_provider.rb +54 -0
  8. data/lib/acs/token_constants.rb +112 -0
  9. data/lib/acs/token_info.rb +33 -0
  10. data/lib/acs/token_provider.rb +74 -0
  11. data/lib/acs/token_validator.rb +114 -0
  12. data/lib/common/dot_net_services_environment.rb +61 -0
  13. data/lib/common/environment.yml +23 -0
  14. data/lib/common/host_name_config.yml +45 -0
  15. data/lib/dot_net_services.rb +31 -144
  16. data/lib/service_bus/http_proxy.rb +34 -0
  17. data/lib/service_bus/locked_message_info.rb +34 -0
  18. data/lib/service_bus/message_buffer.rb +313 -0
  19. data/lib/service_bus/message_buffer_constants.rb +48 -0
  20. data/lib/service_bus/message_buffer_policy.rb +55 -0
  21. data/lib/service_bus/requests.rb +95 -0
  22. data/test/config/test_config.yml +40 -0
  23. data/test/dot_net_services_environment_test.rb +54 -0
  24. data/test/message_buffer_test.rb +96 -0
  25. data/test/token_test.rb +98 -0
  26. metadata +50 -48
  27. data/lib/dot_net_services/authentication.rb +0 -168
  28. data/lib/dot_net_services/error.rb +0 -4
  29. data/lib/dot_net_services/message_buffer.rb +0 -283
  30. data/lib/dot_net_services/session.rb +0 -308
  31. data/lib/net/http/create_mb.rb +0 -14
  32. data/lib/net/http/retrieve.rb +0 -14
  33. data/lib/net/http/subscribe.rb +0 -14
  34. data/lib/net/http/unsubscribe.rb +0 -14
  35. data/spec/integration/TestService/Service/AnonymousResourceService.cs +0 -9
  36. data/spec/integration/TestService/Service/App.config +0 -32
  37. data/spec/integration/TestService/Service/PlainTextService.cs +0 -37
  38. data/spec/integration/TestService/Service/Program.cs +0 -49
  39. data/spec/integration/TestService/Service/Properties/AssemblyInfo.cs +0 -33
  40. data/spec/integration/TestService/Service/ResourceContract.cs +0 -17
  41. data/spec/integration/TestService/Service/ResourceService.cs +0 -58
  42. data/spec/integration/TestService/Service/Service.csproj +0 -71
  43. data/spec/integration/TestService/TestService.sln +0 -33
  44. data/spec/integration/end_to_end_spec.rb +0 -84
  45. data/spec/integration/vmb_spec.rb +0 -30
  46. data/spec/spec_helper.rb +0 -23
  47. data/spec/unit/dot_net_services/authentication_spec.rb +0 -289
  48. data/spec/unit/dot_net_services/message_buffer_spec.rb +0 -161
  49. data/spec/unit/dot_net_services/session_spec.rb +0 -247
@@ -1,247 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
- module DotNetServices
4
-
5
- describe Session do
6
-
7
- describe "new(endpoint, auth_data = nil)" do
8
- it "should take a relative path of the endpoint and convert to a full path" do
9
- session = Session.new("/alexeyv/EchoService/")
10
- session.endpoint.should == "#{DotNetServices.root_url}/alexeyv/EchoService/"
11
- end
12
-
13
- it "should not prefix an absolute endpoint path" do
14
- Session.new("http://foo/").endpoint.should == "http://foo/"
15
- end
16
-
17
- it "should prefix relative endpoint path with a slash if necessary" do
18
- Session.new("alexeyv/EchoService/").endpoint.should == "#{DotNetServices.root_url}/alexeyv/EchoService/"
19
- Session.new("/alexeyv/EchoService/").endpoint.should == "#{DotNetServices.root_url}/alexeyv/EchoService/"
20
- end
21
-
22
- it "should append a slash to the endpoint path if necessary" do
23
- Session.new("/alexeyv/EchoService").endpoint.should == "#{DotNetServices.root_url}/alexeyv/EchoService/"
24
- Session.new("/alexeyv/EchoService/").endpoint.should == "#{DotNetServices.root_url}/alexeyv/EchoService/"
25
- Session.new("http://foo").endpoint.should == "http://foo/"
26
- Session.new("http://foo/").endpoint.should == "http://foo/"
27
- end
28
-
29
- end
30
-
31
- describe "open" do
32
- it "should create the session and return it" do
33
- authenticator = mock('authenticator')
34
- authenticator.should_receive(:authenticate)
35
-
36
- session = Session.open("http://foo/", authenticator)
37
-
38
- session.should be_instance_of(Session)
39
- session.authenticator.should == authenticator
40
- session.endpoint.should == "http://foo/"
41
- end
42
-
43
- it "should, given a block, pass the session to a block and return the result of the block" do
44
- yielded_session = nil
45
- result = Session.open("http://foo/") { |session| yielded_session = session; "been here"}
46
-
47
- yielded_session.should be_instance_of(Session)
48
- yielded_session.endpoint.should == "http://foo/"
49
- result.should == "been here"
50
- end
51
- end
52
-
53
- describe "get(query_options=nil)" do
54
- it "should send a get request to the endpoint and return the response" do
55
- mock_http_get('foo', 80, '/')
56
- result = Session.open("http://foo/") { |session| session.get }
57
- result.should == :http_get_result
58
- end
59
-
60
- it "should accept query options" do
61
- mock_http_get('foo', 80, '/', 'bar=baz')
62
- result = Session.open("http://foo/") { |session| session.get(:bar => 'baz') }
63
- result.should == :http_get_result
64
- end
65
-
66
- it "should escape elements of the query" do
67
- mock_http_get('foo', 80, '/', "foo=bar%2Bbaz%7Equx")
68
- result = Session.open("http://foo/") { |session| session.get(:foo => "bar+baz~qux") }
69
- result.should == :http_get_result
70
- end
71
-
72
- it "should pass a request through authentication handler" do
73
- mock_http, mock_get = mock_http_get('foo', 80, '/')
74
-
75
- authenticator = mock('authenticator')
76
- authenticator.should_receive(:authenticate)
77
- authenticator.should_receive(:enhance).with(mock_get)
78
-
79
- result = Session.open("http://foo/", authenticator) { |session| session.get }
80
- result.should == :http_get_result
81
- end
82
-
83
- end
84
-
85
- describe "get_to_url(url, data=nil, content_type='application/x-www-form-urlencoded')" do
86
-
87
- it "should get data from the URL under the endpoint" do
88
- mock_http_get('foo', 80, '/services/suburl', "foo=bar")
89
- result = Session.open("http://foo/services/") { |session| session.get_from_url('suburl', :foo => "bar") }
90
- result.should == :http_get_result
91
- end
92
-
93
- end
94
-
95
- describe "post(data=nil, content_type='application/x-www-form-urlencoded')" do
96
- it "should pass data as URL encoded form if data is a Hash" do
97
- mock_http_post_form('foo', 80, '/', :foo => 'bar')
98
- result = Session.open("http://foo/") { |session| session.post(:foo => "bar") }
99
- result.should == :http_post_result
100
- end
101
-
102
- it "should set data instead of form data on the Net::HTTP::Post instance, if content type is not url-encoded-form" do
103
- mock_http = mock('http')
104
- mock_post = mock('post')
105
- Net::HTTP.should_receive(:start).with('foo', 80).and_yield(mock_http)
106
- Net::HTTP::Post.should_receive(:new).with('/services/').and_return(mock_post)
107
- mock_post.should_receive(:body=).with("post body")
108
- mock_post.should_receive(:content_type=).with("text/plain")
109
- mock_http.should_receive(:request).with(mock_post).and_return(:http_post_result)
110
-
111
- result = Session.open("http://foo/services/") { |session| session.post("post body", "text/plain") }
112
- end
113
-
114
- end
115
-
116
- describe "post_to_url(url, data=nil, content_type='application/x-www-form-urlencoded')" do
117
-
118
- it "should post data to the URL under the endpoint" do
119
- mock_http_post_form('foo', 80, '/services/suburl', :foo => 'bar')
120
- result = Session.open("http://foo/services/") { |session| session.post_to_url('suburl', :foo => "bar") }
121
- result.should == :http_post_result
122
- end
123
-
124
- end
125
-
126
-
127
- describe "createmb" do
128
- it "should make a createmb request" do
129
- mock_createmb = mock('createmb')
130
- Net::HTTP::CreateMB.should_receive(:new).with('/services/user/location/').and_return(mock_createmb)
131
- mock_createmb.should_receive(:[]=).with(
132
- "X-Process-At", "http://schemas.microsoft.com/ws/2007/08/connect/roles/relay")
133
- mock_http = mock('http')
134
- Net::HTTP.should_receive(:start).with(DotNetServices.relay_host, 80).and_yield(mock_http)
135
- mock_http.should_receive(:request).with(mock_createmb).and_return(:response)
136
- Session.open("http://#{DotNetServices.relay_host}/services/user/location") { |session| session.createmb }
137
- end
138
- end
139
-
140
- describe "retrieve" do
141
- it "should make a retrieve request" do
142
- mock_retrieve = mock('retrieve')
143
- Net::HTTP::Retrieve.should_receive(:new).with('/services/user/location/?timeout=10').and_return(mock_retrieve)
144
- mock_retrieve.should_receive(:[]=).with(
145
- 'X-Process-At', "http://schemas.microsoft.com/ws/2007/08/connect/roles/relay")
146
- mock_http = mock('http')
147
- Net::HTTP.should_receive(:start).with(DotNetServices.relay_host, 80).and_yield(mock_http)
148
- mock_http.should_receive(:request).with(mock_retrieve).and_return(:response)
149
- actual_response = Session.open("http://#{DotNetServices.relay_host}/services/user/location") { |session| session.retrieve(:timeout => 10) }
150
- actual_response.should == :response
151
- end
152
-
153
- it "should coerce the keys in options to strings and downcase them" do
154
- mock_retrieve = mock('retrieve')
155
- mock_retrieve.stub!(:[]=)
156
- mock_http = mock('http')
157
-
158
- Net::HTTP::Retrieve.should_receive(:new).with("/services/user/location/?timeout=5").and_return(mock_retrieve)
159
- Net::HTTP::Retrieve.should_receive(:new).with("/services/user/location/?timeout=6").and_return(mock_retrieve)
160
- Net::HTTP.should_receive(:start).twice.and_yield(mock_http)
161
- mock_http.should_receive(:request).twice.with(mock_retrieve).and_return(:response)
162
-
163
- Session.open("http://#{DotNetServices.relay_host}/services/user/location") do
164
- |session|
165
- session.retrieve :timeout => 5
166
- session.retrieve "TIMEOUT" => 6
167
- end
168
- end
169
-
170
- it "should insert a default timeout of 15 seconds if it's not provided" do
171
- mock_retrieve = mock('retrieve')
172
- mock_retrieve.stub!(:[]=)
173
- mock_http = mock('http')
174
-
175
- Net::HTTP::Retrieve.should_receive(:new).with("/services/user/location/?timeout=15").and_return(mock_retrieve)
176
- Net::HTTP.should_receive(:start).and_yield(mock_http)
177
- mock_http.should_receive(:request).with(mock_retrieve).and_return(:response)
178
-
179
- Session.open("http://#{DotNetServices.relay_host}/services/user/location") do
180
- |session|
181
- session.retrieve
182
- end
183
- end
184
-
185
- end
186
-
187
- describe "get_from_relay" do
188
-
189
- it "should set X-Process-At header and send to the bus as normal post" do
190
- mock_http = mock('http')
191
- Net::HTTP.should_receive(:start).with(DotNetServices.relay_host, 80).and_yield(mock_http)
192
-
193
- mock_http.should_receive(:request) do |get_request|
194
- get_request['X-Process-At'].should == 'http://schemas.microsoft.com/ws/2007/08/connect/roles/relay'
195
- true
196
- end
197
-
198
- Session.open("http://#{DotNetServices.relay_host}/services/user/location") do
199
- |session|
200
- session.get_from_relay
201
- end
202
- end
203
-
204
- end
205
-
206
- describe "post_to_relay" do
207
-
208
- it "should set X-Process-At header and send to the bus as normal post" do
209
- mock_http = mock('http')
210
- Net::HTTP.should_receive(:start).with(DotNetServices.relay_host, 80).and_yield(mock_http)
211
-
212
- mock_http.should_receive(:request) do |post_request|
213
- post_request['X-Process-At'].should == 'http://schemas.microsoft.com/ws/2007/08/connect/roles/relay'
214
- true
215
- end
216
-
217
- Session.open("http://#{DotNetServices.relay_host}/services/user/location") do
218
- |session|
219
- session.post_to_relay
220
- end
221
- end
222
-
223
- end
224
-
225
- def mock_http_get(host, port, path, query = nil)
226
- mock_http = mock('http')
227
- mock_get = mock('get')
228
- Net::HTTP.should_receive(:start).with(host, port).and_yield(mock_http)
229
- path_and_query = query ? "#{path}?#{query}" : path
230
- Net::HTTP::Get.should_receive(:new).with(path_and_query).and_return(mock_get)
231
- mock_http.should_receive(:request).with(mock_get).and_return(:http_get_result)
232
- [mock_http, mock_get]
233
- end
234
-
235
- def mock_http_post_form(host, port, path, form_data=nil)
236
- mock_http = mock('http')
237
- mock_post = mock('post')
238
- Net::HTTP.should_receive(:start).with(host, port).and_yield(mock_http)
239
- Net::HTTP::Post.should_receive(:new).with(path).and_return(mock_post)
240
- mock_post.should_receive(:form_data=).with(form_data)
241
- mock_post.should_receive(:content_type=).with('application/x-www-form-urlencoded')
242
- mock_http.should_receive(:request).with(mock_post).and_return(:http_post_result)
243
- [mock_http, mock_post]
244
- end
245
-
246
- end
247
- end