endpoint_base 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +88 -13
 - data/Rakefile +8 -8
 - data/app/views/application/response.json.jbuilder +2 -10
 - data/endpoint_base.gemspec +8 -5
 - data/lib/endpoint_base/concerns/param_processor.rb +1 -1
 - data/lib/endpoint_base/concerns/response_dsl.rb +8 -4
 - data/lib/endpoint_base/concerns/sinatra_responder.rb +3 -1
 - data/lib/endpoint_base/version.rb +3 -0
 - data/spec/sinatra/endpoint_base_spec.rb +30 -0
 - data/spec/sinatra/spec_helper.rb +22 -2
 - metadata +3 -3
 - data/lib/endpoint_base/sinatra/integrator_utils.rb +0 -17
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 4e46e098f78366bc2bcb2e830388d57708c4bd56
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: c42a5477374d83dec19f10575233b1c0fc495347
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2f5b94c42940558f12c45afc4f456280e45597c02f9a3f95fb45651ea94de61986763b6a30881133e59da5c1363baf7b18793a658637d62b6203880588f0d3b7
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c5385d32a88555300c7e4eec61027dd514ea26cf1c29215f4421f0a7aad29de49c2f049c60f6e9404020a80d7e68e8725377da8228688ebe1048627513064629
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # EndpointBase
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            Shared functionality for SpreeCommerce Hub Endpoints.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            ## Installation
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -18,25 +18,100 @@ Or install it yourself as: 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            ## Usage
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
            ### Sinatra
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            #### Gemfile
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       21 
25 
     | 
    
         
             
            ```ruby
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
            gem 'sinatra'
         
     | 
| 
      
 27 
     | 
    
         
            +
            gem 'tilt', '~> 1.4.1'
         
     | 
| 
      
 28 
     | 
    
         
            +
            gem 'tilt-jbuilder', require: 'sinatra/jbuilder'
         
     | 
| 
      
 29 
     | 
    
         
            +
            # ...
         
     | 
| 
      
 30 
     | 
    
         
            +
            gem 'endpoint_base'
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```
         
     | 
| 
       23 
32 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
            #### Endpoint
         
     | 
| 
       25 
34 
     | 
    
         | 
| 
      
 35 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 36 
     | 
    
         
            +
            class SampleEndpoint < EndpointBase::Sinatra::Base
         
     | 
| 
       26 
37 
     | 
    
         
             
              post '/sample' do
         
     | 
| 
       27 
     | 
    
         
            -
                 
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                 
     | 
| 
      
 38 
     | 
    
         
            +
                # Return a message sample:new.
         
     | 
| 
      
 39 
     | 
    
         
            +
                add_message 'sample:new', { sample: { ... } }
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                # Return a list of messages of the same type
         
     | 
| 
      
 42 
     | 
    
         
            +
                add_messages 'sample:new', [{ sample: { ... } }, { sample: { ... } }]
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                # Create or update the parameter sample.new.
         
     | 
| 
      
 45 
     | 
    
         
            +
                add_parameter 'sample.new', '...'
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                # Return a notification info. The three levels available are: info, warn and error.
         
     | 
| 
      
 48 
     | 
    
         
            +
                add_notification 'info', 'Info subject', 'Info description'
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                # Return a customized key and value.
         
     | 
| 
      
 51 
     | 
    
         
            +
                add_value 'my_customized_key', { ... }
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                process_result 200
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              post '/fail' do
         
     | 
| 
      
 57 
     | 
    
         
            +
                # Return a notification error.
         
     | 
| 
      
 58 
     | 
    
         
            +
                add_notification 'error', 'Error subject', '...'
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                process_result 500
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            ```
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            ### Rails
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            #### Gemfile
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 71 
     | 
    
         
            +
            gem 'rails'
         
     | 
| 
      
 72 
     | 
    
         
            +
            # ...
         
     | 
| 
      
 73 
     | 
    
         
            +
            gem 'endpoint_base'
         
     | 
| 
      
 74 
     | 
    
         
            +
            ```
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            #### Endpoint
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 79 
     | 
    
         
            +
            class SampleController < ApplicationController
         
     | 
| 
      
 80 
     | 
    
         
            +
              include EndpointBase::Concerns::All
         
     | 
| 
      
 81 
     | 
    
         
            +
              skip_before_filter :verify_authenticity_token
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              def sample
         
     | 
| 
      
 84 
     | 
    
         
            +
                # Return a message sample:new.
         
     | 
| 
      
 85 
     | 
    
         
            +
                add_message 'sample:new', { sample: { ... } }
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                # Return a list of messages of the same type
         
     | 
| 
      
 88 
     | 
    
         
            +
                add_messages 'sample:new', [{ sample: { ... } }, { sample: { ... } }]
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                # Create or update the parameter sample.new.
         
     | 
| 
      
 91 
     | 
    
         
            +
                add_parameter 'sample.new', '...'
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                # Return a notification info. The three levels available are: info, warn and error.
         
     | 
| 
      
 94 
     | 
    
         
            +
                add_notification 'info', 'Info subject', 'Info description'
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                # Return a customized key and value.
         
     | 
| 
      
 97 
     | 
    
         
            +
                add_value 'my_customized_key', { ... }
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                process_result 200
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
              def fail
         
     | 
| 
      
 103 
     | 
    
         
            +
                # Return a notification error.
         
     | 
| 
      
 104 
     | 
    
         
            +
                add_notification 'error', 'Error subject', '...'
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                process_result 500
         
     | 
| 
       32 
107 
     | 
    
         
             
              end
         
     | 
| 
       33 
108 
     | 
    
         
             
            end
         
     | 
| 
       34 
109 
     | 
    
         | 
| 
       35 
110 
     | 
    
         
             
            ```
         
     | 
| 
       36 
111 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 112 
     | 
    
         
            +
            ### Testing
         
     | 
| 
       38 
113 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 114 
     | 
    
         
            +
            ##### spec_helper.rb
         
     | 
| 
       40 
115 
     | 
    
         | 
| 
       41 
116 
     | 
    
         
             
            ```ruby
         
     | 
| 
       42 
117 
     | 
    
         
             
            # ...
         
     | 
| 
         @@ -50,7 +125,7 @@ RSpec.configure do |config| 
     | 
|
| 
       50 
125 
     | 
    
         
             
            end
         
     | 
| 
       51 
126 
     | 
    
         
             
            ```
         
     | 
| 
       52 
127 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 128 
     | 
    
         
            +
            `Spree:TestingSupport::Controllers` enables you to use `json_response` and `auth` in your Endpoint tests. It also sets `ENV['ENDPOINT_KEY'] ||= '123'`.
         
     | 
| 
       54 
129 
     | 
    
         | 
| 
       55 
130 
     | 
    
         
             
            ```ruby
         
     | 
| 
       56 
131 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
         @@ -68,8 +143,8 @@ describe SampleEndpoint do 
     | 
|
| 
       68 
143 
     | 
    
         | 
| 
       69 
144 
     | 
    
         
             
                  expect(json_response['notifications']).to have(1).item
         
     | 
| 
       70 
145 
     | 
    
         
             
                  expect(json_response['notifications'].first).to eq ({ 'level'       => 'info',
         
     | 
| 
       71 
     | 
    
         
            -
                                                                        'subject'     => ' 
     | 
| 
       72 
     | 
    
         
            -
                                                                        'description' => ' 
     | 
| 
      
 146 
     | 
    
         
            +
                                                                        'subject'     => 'Info subject',
         
     | 
| 
      
 147 
     | 
    
         
            +
                                                                        'description' => 'Info description' })
         
     | 
| 
       73 
148 
     | 
    
         
             
                end
         
     | 
| 
       74 
149 
     | 
    
         
             
              end
         
     | 
| 
       75 
150 
     | 
    
         
             
            end
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -3,16 +3,16 @@ require 'bundler/gem_tasks' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            # Need to run the Rails and Sinatra specs separately so
         
     | 
| 
       4 
4 
     | 
    
         
             
            # their dependencies won't pollute each other.
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            task : 
     | 
| 
       7 
     | 
    
         
            -
              exitcode = 0
         
     | 
| 
       8 
     | 
    
         
            -
              puts 'Running Rails specs ---------------------'
         
     | 
| 
       9 
     | 
    
         
            -
              system 'FROM_RAKE=1 bundle exec rspec spec/rails'
         
     | 
| 
       10 
     | 
    
         
            -
              exitcode = 1 unless $?.exitstatus == 0
         
     | 
| 
      
 6 
     | 
    
         
            +
            task spec: [:spec_sinatra, :spec_rails]
         
     | 
| 
       11 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
            task :spec_sinatra do
         
     | 
| 
       12 
9 
     | 
    
         
             
              puts 'Running Sinatra specs -------------------'
         
     | 
| 
       13 
10 
     | 
    
         
             
              system 'FROM_RAKE=1 bundle exec rspec spec/sinatra'
         
     | 
| 
       14 
     | 
    
         
            -
              exitcode  
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              exit exitcode
         
     | 
| 
      
 11 
     | 
    
         
            +
              exit exitcode unless exitcode = $?.exitstatus == 0
         
     | 
| 
       17 
12 
     | 
    
         
             
            end
         
     | 
| 
       18 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
            task :spec_rails do
         
     | 
| 
      
 15 
     | 
    
         
            +
              puts 'Running Rails specs ---------------------'
         
     | 
| 
      
 16 
     | 
    
         
            +
              system 'FROM_RAKE=1 bundle exec rspec spec/rails'
         
     | 
| 
      
 17 
     | 
    
         
            +
              exit exitcode unless exitcode = $?.exitstatus == 0
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -9,13 +9,5 @@ json.parameters @parameters do |parameter| 
     | 
|
| 
       9 
9 
     | 
    
         
             
              json.value parameter[:value]
         
     | 
| 
       10 
10 
     | 
    
         
             
            end if @parameters.present?
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            json.messages @messages 
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              json.payload message[:payload]
         
     | 
| 
       15 
     | 
    
         
            -
            end if @messages.present?
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            json.notifications @notifications do |notification|
         
     | 
| 
       18 
     | 
    
         
            -
              json.level         notification[:level]
         
     | 
| 
       19 
     | 
    
         
            -
              json.subject       notification[:subject]
         
     | 
| 
       20 
     | 
    
         
            -
              json.description   notification[:description]
         
     | 
| 
       21 
     | 
    
         
            -
            end if @notifications.present?
         
     | 
| 
      
 12 
     | 
    
         
            +
            json.messages      @messages      if @messages.present?
         
     | 
| 
      
 13 
     | 
    
         
            +
            json.notifications @notifications if @notifications.present?
         
     | 
    
        data/endpoint_base.gemspec
    CHANGED
    
    | 
         @@ -1,15 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            lib = File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), %w[lib endpoint_base version]))
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       5 
8 
     | 
    
         
             
            Gem::Specification.new do |gem|
         
     | 
| 
       6 
     | 
    
         
            -
              gem.name          =  
     | 
| 
       7 
     | 
    
         
            -
              gem.version       =  
     | 
| 
       8 
     | 
    
         
            -
              gem.authors       = [ 
     | 
| 
       9 
     | 
    
         
            -
              gem.email         = [ 
     | 
| 
      
 9 
     | 
    
         
            +
              gem.name          = 'endpoint_base'
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem.version       = EndpointBase::VERSION
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem.authors       = ['Andrew Hooker']
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem.email         = ['andrew@spreecommerce.com']
         
     | 
| 
       10 
13 
     | 
    
         
             
              gem.description   = %q{Shared functionality for SpreeCommerce hub endpoints}
         
     | 
| 
       11 
14 
     | 
    
         
             
              gem.summary       = %q{SpreeCommerce hub endpoints base library}
         
     | 
| 
       12 
     | 
    
         
            -
              gem.homepage      =  
     | 
| 
      
 15 
     | 
    
         
            +
              gem.homepage      = 'http://www.spreecommerce.com'
         
     | 
| 
       13 
16 
     | 
    
         | 
| 
       14 
17 
     | 
    
         
             
              gem.files         = `git ls-files`.split($/)
         
     | 
| 
       15 
18 
     | 
    
         
             
              gem.executables   = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
         
     | 
| 
         @@ -18,11 +18,15 @@ module EndpointBase::Concerns 
     | 
|
| 
       18 
18 
     | 
    
         
             
                    @attrs[name] = value
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                  def add_message(message, payload = {})
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def add_message(message, payload = {}, extra = {})
         
     | 
| 
       22 
22 
     | 
    
         
             
                    @messages ||= []
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                    @messages << { message: message,
         
     | 
| 
       25 
     | 
    
         
            -
                                   payload: payload }
         
     | 
| 
      
 25 
     | 
    
         
            +
                                   payload: payload }.merge(extra)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def add_messages(message, collection, extra = {})
         
     | 
| 
      
 29 
     | 
    
         
            +
                    collection.each { |payload| add_message(message, payload, extra) }
         
     | 
| 
       26 
30 
     | 
    
         
             
                  end
         
     | 
| 
       27 
31 
     | 
    
         | 
| 
       28 
32 
     | 
    
         
             
                  def add_parameter(name, value)
         
     | 
| 
         @@ -32,12 +36,12 @@ module EndpointBase::Concerns 
     | 
|
| 
       32 
36 
     | 
    
         
             
                                     value: value }
         
     | 
| 
       33 
37 
     | 
    
         
             
                  end
         
     | 
| 
       34 
38 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                  def add_notification(level, subject, description, options = {})
         
     | 
| 
      
 39 
     | 
    
         
            +
                  def add_notification(level, subject, description = nil, options = {})
         
     | 
| 
       36 
40 
     | 
    
         
             
                    @notifications ||= []
         
     | 
| 
       37 
41 
     | 
    
         | 
| 
       38 
42 
     | 
    
         
             
                    @notifications << { level: level,
         
     | 
| 
       39 
43 
     | 
    
         
             
                                        subject: subject,
         
     | 
| 
       40 
     | 
    
         
            -
                                        description: description }.merge(options)
         
     | 
| 
      
 44 
     | 
    
         
            +
                                        description: description || subject }.merge(options)
         
     | 
| 
       41 
45 
     | 
    
         
             
                  end
         
     | 
| 
       42 
46 
     | 
    
         
             
                end
         
     | 
| 
       43 
47 
     | 
    
         
             
              end
         
     | 
| 
         @@ -8,9 +8,11 @@ module EndpointBase::Concerns 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  elsif EndpointBase.sinatra?
         
     | 
| 
       9 
9 
     | 
    
         
             
                    helpers Helpers
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
      
 11 
     | 
    
         
            +
                    set :public_folder, './public'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       11 
13 
     | 
    
         
             
                    before do
         
     | 
| 
       12 
14 
     | 
    
         
             
                      if request.get? && request.path_info == '/'
         
     | 
| 
       13 
     | 
    
         
            -
                        redirect  
     | 
| 
      
 15 
     | 
    
         
            +
                        redirect "#{request.script_name}/endpoint.json"
         
     | 
| 
       14 
16 
     | 
    
         
             
                      end
         
     | 
| 
       15 
17 
     | 
    
         
             
                    end
         
     | 
| 
       16 
18 
     | 
    
         | 
| 
         @@ -13,6 +13,9 @@ module EndpointBase::Sinatra 
     | 
|
| 
       13 
13 
     | 
    
         
             
                it 'accepts POST with auth' do
         
     | 
| 
       14 
14 
     | 
    
         
             
                  post '/', payload, headers
         
     | 
| 
       15 
15 
     | 
    
         
             
                  expect(last_response).to be_ok
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  expect(::JSON.parse(last_response.body)['notifications']).to be_nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                  expect(::JSON.parse(last_response.body)['messages']).to be_nil
         
     | 
| 
       16 
19 
     | 
    
         
             
                end
         
     | 
| 
       17 
20 
     | 
    
         | 
| 
       18 
21 
     | 
    
         
             
                it 'redirects to endpoint.json for GET on root url' do
         
     | 
| 
         @@ -21,6 +24,12 @@ module EndpointBase::Sinatra 
     | 
|
| 
       21 
24 
     | 
    
         
             
                  expect(last_response.location).to eq 'http://example.org/endpoint.json'
         
     | 
| 
       22 
25 
     | 
    
         
             
                end
         
     | 
| 
       23 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                it 'redirect to relative root endpoint.json for GET on mapped root url' do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  get '/myapp/', nil, {}
         
     | 
| 
      
 29 
     | 
    
         
            +
                  expect(last_response.status).to eq 302
         
     | 
| 
      
 30 
     | 
    
         
            +
                  expect(last_response.location).to eq 'http://example.org/myapp/endpoint.json'
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       24 
33 
     | 
    
         
             
                it 'returns a 200 for /auth check' do
         
     | 
| 
       25 
34 
     | 
    
         
             
                  get '/auth', {}, headers
         
     | 
| 
       26 
35 
     | 
    
         
             
                  expect(last_response).to be_ok
         
     | 
| 
         @@ -51,5 +60,26 @@ module EndpointBase::Sinatra 
     | 
|
| 
       51 
60 
     | 
    
         | 
| 
       52 
61 
     | 
    
         
             
                  expect(last_response.content_type).to eq 'application/json;charset=utf-8'
         
     | 
| 
       53 
62 
     | 
    
         
             
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                describe '#add_messages' do
         
     | 
| 
      
 65 
     | 
    
         
            +
                  it 'adds messages' do
         
     | 
| 
      
 66 
     | 
    
         
            +
                    post '/add_messages', payload, headers
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                    response = ::JSON.parse(last_response.body)
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                    expect(response['messages']).to eq([{ 'message' => 'order:new', 'payload' => { 'number' => 1 } },
         
     | 
| 
      
 71 
     | 
    
         
            +
                                                        { 'message' => 'order:new', 'payload' => { 'number' => 2 } }])
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                describe '#add_notifications'do
         
     | 
| 
      
 76 
     | 
    
         
            +
                  it 'adds messages' do
         
     | 
| 
      
 77 
     | 
    
         
            +
                    post '/add_notifications', payload, headers
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                    response = ::JSON.parse(last_response.body)
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                    expect(response['notifications']).to eq([{ 'level' => 'error', 'subject' => 'subject', 'description' => 'description', 'backtrace' => 'backtrace' }])
         
     | 
| 
      
 82 
     | 
    
         
            +
                  end
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
       54 
84 
     | 
    
         
             
              end
         
     | 
| 
       55 
85 
     | 
    
         
             
            end
         
     | 
    
        data/spec/sinatra/spec_helper.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'simplecov'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       2 
3 
     | 
    
         
             
            SimpleCov.start do
         
     | 
| 
       3 
4 
     | 
    
         
             
              add_filter 'spec/spec_helper'
         
     | 
| 
       4 
5 
     | 
    
         
             
              add_filter 'lib/endpoint_base.rb'
         
     | 
| 
         @@ -20,7 +21,15 @@ require File.join(File.dirname(__FILE__), '../..', 'lib', 'endpoint_base', 'sina 
     | 
|
| 
       20 
21 
     | 
    
         
             
            Sinatra::Base.environment = 'test'
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
            def app
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              Rack::Builder.new do
         
     | 
| 
      
 26 
     | 
    
         
            +
                map '/' do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  run TestEndpoint
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
                map '/myapp' do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  run TestEndpoint
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end.to_app
         
     | 
| 
       24 
33 
     | 
    
         
             
            end
         
     | 
| 
       25 
34 
     | 
    
         | 
| 
       26 
35 
     | 
    
         
             
            RSpec.configure do |config|
         
     | 
| 
         @@ -30,7 +39,6 @@ end 
     | 
|
| 
       30 
39 
     | 
    
         
             
            ENV['ENDPOINT_KEY'] = 'x123'
         
     | 
| 
       31 
40 
     | 
    
         | 
| 
       32 
41 
     | 
    
         
             
            class TestEndpoint < EndpointBase::Sinatra::Base
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
42 
     | 
    
         
             
              set :logging, true
         
     | 
| 
       35 
43 
     | 
    
         | 
| 
       36 
44 
     | 
    
         
             
              post '/' do
         
     | 
| 
         @@ -52,4 +60,16 @@ class TestEndpoint < EndpointBase::Sinatra::Base 
     | 
|
| 
       52 
60 
     | 
    
         | 
| 
       53 
61 
     | 
    
         
             
                process_result 200
         
     | 
| 
       54 
62 
     | 
    
         
             
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              post '/add_messages' do
         
     | 
| 
      
 65 
     | 
    
         
            +
                add_messages 'order:new', [ { number: 1 }, { number: 2 } ]
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                process_result 200
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              post '/add_notifications' do
         
     | 
| 
      
 71 
     | 
    
         
            +
                add_notification 'error', 'subject', 'description', { backtrace: 'backtrace' }
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                process_result 200
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
       55 
75 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: endpoint_base
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andrew Hooker
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-02-06 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: json
         
     | 
| 
         @@ -237,7 +237,7 @@ files: 
     | 
|
| 
       237 
237 
     | 
    
         
             
            - lib/endpoint_base/rails/engine.rb
         
     | 
| 
       238 
238 
     | 
    
         
             
            - lib/endpoint_base/sinatra.rb
         
     | 
| 
       239 
239 
     | 
    
         
             
            - lib/endpoint_base/sinatra/base.rb
         
     | 
| 
       240 
     | 
    
         
            -
            - lib/endpoint_base/ 
     | 
| 
      
 240 
     | 
    
         
            +
            - lib/endpoint_base/version.rb
         
     | 
| 
       241 
241 
     | 
    
         
             
            - lib/spree/testing_support/controllers.rb
         
     | 
| 
       242 
242 
     | 
    
         
             
            - spec/rails/controllers/failing_controller_spec.rb
         
     | 
| 
       243 
243 
     | 
    
         
             
            - spec/rails/controllers/happy_controller_spec.rb
         
     |