Coder Social home page Coder Social logo

crepe-versioning's Issues

Header versioning does not play nicely with Crepe::API.mount

Here's a failing spec:

RSpec.describe Crepe::API, 'versioning' do
  context 'with header' do
    app do
      version with: :header, vendor: :pancake, default: :v2

      version :v1 do
        mount Proc.new { [200, {'Content-Type' => 'text/plain'}, ['v1']] }
      end

      version :v2 do
        mount Proc.new { [200, {'Content-Type' => 'text/plain'}, ['v2']] }
      end

      mount Proc.new { [200, {'Content-Type' => 'text/plain'}, ['v3']] }, at: :v3
    end

    it 'routes to several versions at the same path' do
      get '/', {}, 'HTTP_ACCEPT' => 'application/vnd.pancake-v2+json'
      expect(last_response.body).to include 'v2'

      get '/', {}, 'HTTP_ACCEPT' => 'application/vnd.pancake-v1+json'
      expect(last_response.body).to include 'v1'

      expect(get('/v3').body).to include 'v3'
    end

    it 'defaults to the specified version' do
      expect(get('/').body).to include 'v2'
    end
  end
end

By using mount with a proc or Rack application from within a version declaration, the requested endpoints become 404s instead of routing to an app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.