aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/library/uri/set_component_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/uri/set_component_spec.rb')
-rw-r--r--spec/ruby/library/uri/set_component_spec.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/spec/ruby/library/uri/set_component_spec.rb b/spec/ruby/library/uri/set_component_spec.rb
new file mode 100644
index 0000000000..9b8372108a
--- /dev/null
+++ b/spec/ruby/library/uri/set_component_spec.rb
@@ -0,0 +1,47 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require 'uri'
+
+#TODO: make this more BDD
+describe "URI#select" do
+ it "conforms to the MatzRuby tests" do
+ uri = URI.parse('http://foo:bar@baz')
+ (uri.user = 'oof').should == 'oof'
+ uri.to_s.should == 'http://oof:bar@baz'
+ (uri.password = 'rab').should == 'rab'
+ uri.to_s.should == 'http://oof:rab@baz'
+ (uri.userinfo = 'foo').should == 'foo'
+ uri.to_s.should == 'http://foo:rab@baz'
+ (uri.userinfo = ['foo', 'bar']).should == ['foo', 'bar']
+ uri.to_s.should == 'http://foo:bar@baz'
+ (uri.userinfo = ['foo']).should == ['foo']
+ uri.to_s.should == 'http://foo:bar@baz'
+ (uri.host = 'zab').should == 'zab'
+ uri.to_s.should == 'http://foo:bar@zab'
+ (uri.port = 8080).should == 8080
+ uri.to_s.should == 'http://foo:bar@zab:8080'
+ (uri.path = '/').should == '/'
+ uri.to_s.should == 'http://foo:bar@zab:8080/'
+ (uri.query = 'a=1').should == 'a=1'
+ uri.to_s.should == 'http://foo:bar@zab:8080/?a=1'
+ (uri.fragment = 'b123').should == 'b123'
+ uri.to_s.should == 'http://foo:bar@zab:8080/?a=1#b123'
+
+ uri = URI.parse('http://example.com')
+ lambda { uri.password = 'bar' }.should raise_error(URI::InvalidURIError)
+ uri.userinfo = 'foo:bar'
+ uri.to_s.should == 'http://foo:bar@example.com'
+ lambda { uri.registry = 'bar' }.should raise_error(URI::InvalidURIError)
+ lambda { uri.opaque = 'bar' }.should raise_error(URI::InvalidURIError)
+
+ uri = URI.parse('mailto:foo@example.com')
+ lambda { uri.user = 'bar' }.should raise_error(URI::InvalidURIError)
+ lambda { uri.password = 'bar' }.should raise_error(URI::InvalidURIError)
+ lambda { uri.userinfo = ['bar', 'baz'] }.should raise_error(URI::InvalidURIError)
+ lambda { uri.host = 'bar' }.should raise_error(URI::InvalidURIError)
+ lambda { uri.port = 'bar' }.should raise_error(URI::InvalidURIError)
+ lambda { uri.path = 'bar' }.should raise_error(URI::InvalidURIError)
+ lambda { uri.query = 'bar' }.should raise_error(URI::InvalidURIError)
+ end
+end
+
+