Skip to content

Commit

Permalink
Merge pull request #152 from sensu/fix-routes-for-versions-with-periods
Browse files Browse the repository at this point in the history
Fix routing for versions containing periods
  • Loading branch information
mbiang authored Apr 10, 2019
2 parents a47c7c4 + 23563d2 commit 2da00a8
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 12 deletions.
26 changes: 14 additions & 12 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

VERSION_PATTERN = /[^\/]+/ unless defined?(VERSION_PATTERN) # Allow any value, including "."

apipie

namespace :api, defaults: { format: :json } do
Expand All @@ -11,11 +13,11 @@
get 'health' => 'health#show'
get 'assets' => 'extensions#index', as: :extensions
get 'assets/:username/:id' => 'extensions#show', as: :extension
get 'assets/:username/:extension/versions/:version' => 'extension_versions#show', as: :extension_version
get 'assets/:username/:extension/versions/:version/download' => 'extension_versions#download', as: :extension_version_download
delete 'assets/:username/:extension/versions/:version' => 'extension_uploads#destroy_version'
get 'assets/:username/:extension/versions/:version' => 'extension_versions#show', as: :extension_version, constraints: { version: VERSION_PATTERN }
get 'assets/:username/:extension/versions/:version/download' => 'extension_versions#download', as: :extension_version_download, constraints: { version: VERSION_PATTERN }
delete 'assets/:username/:extension/versions/:version' => 'extension_uploads#destroy_version', constraints: { version: VERSION_PATTERN }
get 'users/:user' => 'users#show', as: :user
get 'assets/:username/:id/:version/:platform/:arch/release_asset' => 'release_assets#show', as: :release_asset
get 'assets/:username/:id/:version/:platform/:arch/release_asset' => 'release_assets#show', as: :release_asset, constraints: {version: VERSION_PATTERN}

resources :tags, only: [:index]
end
Expand Down Expand Up @@ -71,15 +73,15 @@
end
end

get '/assets/:username/:extension_id/versions/:version/download' => 'extension_versions#download', as: :extension_version_download
get '/assets/:username/:extension_id/versions/:version/download_asset_definition' => 'extension_versions#download_asset_definition', as: :extension_version_download_asset_definition
get '/assets/:username/:extension_id/versions/:version' => 'extension_versions#show', as: :extension_version
delete '/assets/:username/:extension_id/versions/:version' => 'extension_versions#destroy', as: :delete_extension_version
put "/assets/:username/:extension_id/versions/:version/update_platforms" => "extension_versions#update_platforms", as: :extension_update_platforms
get '/assets/:username/:extension_id/versions/:version/download' => 'extension_versions#download', as: :extension_version_download, constraints: { version: VERSION_PATTERN }
get '/assets/:username/:extension_id/versions/:version/download_asset_definition' => 'extension_versions#download_asset_definition', as: :extension_version_download_asset_definition, constraints: { version: VERSION_PATTERN }
get '/assets/:username/:extension_id/versions/:version' => 'extension_versions#show', as: :extension_version, constraints: { version: VERSION_PATTERN }
delete '/assets/:username/:extension_id/versions/:version' => 'extension_versions#destroy', as: :delete_extension_version, constraints: { version: VERSION_PATTERN }
put "/assets/:username/:extension_id/versions/:version/update_platforms" => "extension_versions#update_platforms", as: :extension_update_platforms, constraints: { version: VERSION_PATTERN }

get '/release_assets/:username/:extension_id/:version/:platform/:arch/download' => 'release_assets#download', as: :release_asset_download
get '/release_assets/:username/:extension_id/:version/:platform/:arch/asset_file' => 'release_assets#asset_file', as: :release_asset_asset_file
get '/release_assets/:username/:extension_id/:version/:platform/:arch/sha_file' => 'release_assets#sha_file', as: :release_asset_sha_file
get '/release_assets/:username/:extension_id/:version/:platform/:arch/download' => 'release_assets#download', as: :release_asset_download, constraints: { version: VERSION_PATTERN }
get '/release_assets/:username/:extension_id/:version/:platform/:arch/asset_file' => 'release_assets#asset_file', as: :release_asset_asset_file, constraints: { version: VERSION_PATTERN }
get '/release_assets/:username/:extension_id/:version/:platform/:arch/sha_file' => 'release_assets#sha_file', as: :release_asset_sha_file, constraints: { version: VERSION_PATTERN }

resources :collaborators, only: [:index, :new, :create, :destroy] do
member do
Expand Down
47 changes: 47 additions & 0 deletions spec/routing/extension_version_routes.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
require 'spec_helper'

describe 'extension version routes' do
context 'to show a user' do

it 'routes /assets/sensu/sensu-pagerduty-handler/versions/master to extension_version#show' do
expect(get: "/assets/sensu/sensu-pagerduty-handler/versions/master").to route_to(
:controller => "extension_versions",
:action => "show",
:username => "sensu",
:extension_id => "sensu-pagerduty-handler",
:version => "master"
)
end

it 'routes /assets/sensu/sensu-pagerduty-handler/versions/1.0.0 to extension_version#show' do
expect(get: "/assets/sensu/sensu-pagerduty-handler/versions/1.0.0").to route_to(
:controller => "extension_versions",
:action => "show",
:username => "sensu",
:extension_id => "sensu-pagerduty-handler",
:version => "1.0.0"
)
end

it 'routes /assets/sensu/sensu-pagerduty-handler/versions/1.0.0-alpha to extension_version#show' do
expect(get: "/assets/sensu/sensu-pagerduty-handler/versions/1.0.0-alpha").to route_to(
:controller => "extension_versions",
:action => "show",
:username => "sensu",
:extension_id => "sensu-pagerduty-handler",
:version => "1.0.0-alpha"
)
end

it 'routes /assets/sensu/sensu-pagerduty-handler/versions//1.0.0-alpha+1241 to extension_version#show' do
expect(get: "/assets/sensu/sensu-pagerduty-handler/versions/1.0.0-alpha+1241").to route_to(
:controller => "extension_versions",
:action => "show",
:username => "sensu",
:extension_id => "sensu-pagerduty-handler",
:version => "1.0.0-alpha+1241"
)
end

end
end

0 comments on commit 2da00a8

Please sign in to comment.