Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / test / rubygems / test_gem_server.rb
blob24f88bf59e11c1d4cd1671c64326af185b4d6b03
1 require 'test/unit'
2 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
3 require 'rubygems/server'
4 require 'stringio'
6 class Gem::Server
7   attr_accessor :source_index
8   attr_reader :server
9 end
11 class TestGemServer < RubyGemTestCase
13   def setup
14     super
16     @a1 = quick_gem 'a', '1'
18     @server = Gem::Server.new Gem.dir, process_based_port, false
19     @req = WEBrick::HTTPRequest.new :Logger => nil
20     @res = WEBrick::HTTPResponse.new :HTTPVersion => '1.0'
21   end
23   def test_quick_index
24     data = StringIO.new "GET /quick/index HTTP/1.0\r\n\r\n"
25     @req.parse data
27     @server.quick @req, @res
29     assert_equal 200, @res.status, @res.body
30     assert_match %r| \d\d:\d\d:\d\d |, @res['date']
31     assert_equal 'text/plain', @res['content-type']
32     assert_equal "a-1", @res.body
33   end
35   def test_quick_index_rz
36     data = StringIO.new "GET /quick/index.rz HTTP/1.0\r\n\r\n"
37     @req.parse data
39     @server.quick @req, @res
41     assert_equal 200, @res.status, @res.body
42     assert_match %r| \d\d:\d\d:\d\d |, @res['date']
43     assert_equal 'text/plain', @res['content-type']
44     assert_equal "a-1", Zlib::Inflate.inflate(@res.body)
45   end
47   def test_quick_a_1_gemspec_rz
48     data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n"
49     @req.parse data
51     @server.quick @req, @res
53     assert_equal 200, @res.status, @res.body
54     assert @res['date']
55     assert_equal 'text/plain', @res['content-type']
57     spec = YAML.load Zlib::Inflate.inflate(@res.body)
58     assert_equal 'a', spec.name
59     assert_equal Gem::Version.new(1), spec.version
60   end
62   def test_quick_a_1_mswin32_gemspec_rz
63     a1_p = quick_gem 'a', '1' do |s| s.platform = Gem::Platform.local end
64     si = Gem::SourceIndex.new @a1.full_name => @a1, a1_p.full_name => a1_p
65     @server.source_index = si
67     data = StringIO.new "GET /quick/a-1-#{Gem::Platform.local}.gemspec.rz HTTP/1.0\r\n\r\n"
68     @req.parse data
70     @server.quick @req, @res
72     assert_equal 200, @res.status, @res.body
73     assert @res['date']
74     assert_equal 'text/plain', @res['content-type']
76     spec = YAML.load Zlib::Inflate.inflate(@res.body)
77     assert_equal 'a', spec.name
78     assert_equal Gem::Version.new(1), spec.version
79     assert_equal Gem::Platform.local, spec.platform
80   end
82   def test_quick_common_substrings
83     ab1 = quick_gem 'ab', '1'
84     si = Gem::SourceIndex.new @a1.full_name => @a1, ab1.full_name => ab1
85     @server.source_index = si
87     data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n"
88     @req.parse data
90     @server.quick @req, @res
92     assert_equal 200, @res.status, @res.body
93     assert @res['date']
94     assert_equal 'text/plain', @res['content-type']
96     spec = YAML.load Zlib::Inflate.inflate(@res.body)
97     assert_equal 'a', spec.name
98     assert_equal Gem::Version.new(1), spec.version
99   end
101   def test_quick_z_9_gemspec_rz
102     data = StringIO.new "GET /quick/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
103     @req.parse data
105     @server.quick @req, @res
107     assert_equal 404, @res.status, @res.body
108     assert_match %r| \d\d:\d\d:\d\d |, @res['date']
109     assert_equal 'text/plain', @res['content-type']
110     assert_equal 'No gems found matching "z" "9" nil', @res.body
111     assert_equal 404, @res.status
112   end