debmirrorapi 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/bin/debmirrorapi CHANGED
File without changes
data/lib/debmirrorapi.rb CHANGED
@@ -81,7 +81,7 @@ class DebmirrorApi < Sinatra::Base
81
81
  requested_mirror = params[:splat][0]
82
82
  requested_dist = params[:splat][1]
83
83
  requested_tag = params[:splat][2]
84
- if params['version'] =~ /\d+/
84
+ if params['version']
85
85
  requested_tag_version = params['version']
86
86
  else
87
87
  body 'missing version in patch data'.to_json
@@ -91,6 +91,9 @@ class DebmirrorApi < Sinatra::Base
91
91
  tag_dir = File.join("/var/lib/debmirror/", requested_mirror, "dists", requested_dist)
92
92
  if mirror_list.include?(requested_mirror) and requested_dist !=~ /\/..\// and File.symlink?(requested_tag_file)
93
93
  requested_tag_version_file = File.join("/var/lib/debmirror/", requested_mirror, "dists", requested_dist, requested_tag_version)
94
+ if requested_tag_version !~ /^\d+$/
95
+ halt 405
96
+ end
94
97
  if File.exists?(requested_tag_version_file) and not File.symlink?(requested_tag_version_file)
95
98
  File.link(requested_tag_version_file, requested_tag_file)
96
99
  response = {}
data/spec/api_spec.rb CHANGED
@@ -181,6 +181,13 @@ describe "Debmirror-API" do
181
181
  last_response.status.should == 405
182
182
  end
183
183
 
184
+ it "should respond with method not allowed if version is not an integer" do
185
+ File.stub(:exists?).with('/var/lib/debmirror/repo.percona.com/apt/dists/squeeze/20') { false }
186
+ patch '/tag/repo.percona.com/apt/dist/squeeze/stable', :version => '20i'
187
+ last_response.should_not be_ok
188
+ last_response.status.should == 405
189
+ end
190
+
184
191
  it "should respond with 404 if release_tag is not a valid tag" do
185
192
  patch '/tag/repo.percona.com/apt/dist/squeeze/bullshit', :version => 4
186
193
  last_response.should_not be_ok
@@ -0,0 +1,10 @@
1
+ repo.percona.com/apt/debian/dists/squeeze
2
+ downloads-distro.mongodb.org/repo/debian-sysvinit
3
+ packages.vpn.jimdo-server.com/
4
+ deb.theforeman.org/
5
+ ftp.uk.debian.org/debian-backports
6
+ security.debian.org/
7
+ ftp.uk.debian.org/debian
8
+ repo.percona.com/apt
9
+ archive.debian.org/debian-archive/debian
10
+ apt.newrelic.com/debian
@@ -0,0 +1,24 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter '/spec/'
4
+ end
5
+
6
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'debmirrorapi.rb')
7
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'debmirrorapihelpers.rb')
8
+
9
+ require 'rspec'
10
+ require 'rack/test'
11
+
12
+ # setup test environment
13
+ set :environment, :test
14
+ set :run, false
15
+ set :raise_errors, true
16
+ set :logging, false
17
+
18
+ def app
19
+ DebmirrorApi
20
+ end
21
+
22
+ RSpec.configure do |config|
23
+ config.include Rack::Test::Methods
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debmirrorapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-13 00:00:00.000000000 Z
12
+ date: 2013-03-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -144,6 +144,8 @@ files:
144
144
  - config.ru
145
145
  - spec/api_spec.rb
146
146
  - spec/debmirrorapihelpers_spec.rb
147
+ - spec/fixtures/mirror.index
148
+ - spec/spec_helper.rb
147
149
  homepage: http://github.com/Jimdo/debmirror-api
148
150
  licenses: []
149
151
  post_install_message:
@@ -171,3 +173,5 @@ summary: Simple API to provide an interface to debmirror.
171
173
  test_files:
172
174
  - spec/api_spec.rb
173
175
  - spec/debmirrorapihelpers_spec.rb
176
+ - spec/fixtures/mirror.index
177
+ - spec/spec_helper.rb