mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-25 15:22:56 +00:00
rename to rswag plus major refactor - almost a rewrite
This commit is contained in:
2
test-app/.rspec
Normal file
2
test-app/.rspec
Normal file
@@ -0,0 +1,2 @@
|
||||
--color
|
||||
--require spec_helper
|
||||
7
test-app/Rakefile
Normal file
7
test-app/Rakefile
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env rake
|
||||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require File.expand_path('../config/application', __FILE__)
|
||||
|
||||
TestApp::Application.load_tasks
|
||||
7
test-app/app/controllers/application_controller.rb
Normal file
7
test-app/app/controllers/application_controller.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
|
||||
wrap_parameters format: [ :json ]
|
||||
end
|
||||
23
test-app/app/controllers/blogs_controller.rb
Normal file
23
test-app/app/controllers/blogs_controller.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
class BlogsController < ApplicationController
|
||||
wrap_parameters Blog
|
||||
respond_to :json
|
||||
|
||||
# POST /blogs
|
||||
def create
|
||||
@blog = Blog.create(params.require(:blog).permit(:title, :content))
|
||||
respond_with @blog
|
||||
end
|
||||
|
||||
# GET /blogs
|
||||
def index
|
||||
@blogs = Blog.all
|
||||
respond_with @blogs
|
||||
end
|
||||
|
||||
# GET /blogs/1
|
||||
def show
|
||||
@blog = Blog.find_by_id(params[:id])
|
||||
respond_with @blog, status: :not_found and return unless @blog
|
||||
respond_with @blog
|
||||
end
|
||||
end
|
||||
0
test-app/app/models/.gitkeep
Normal file
0
test-app/app/models/.gitkeep
Normal file
11
test-app/app/models/blog.rb
Normal file
11
test-app/app/models/blog.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
class Blog < ActiveRecord::Base
|
||||
validates :content, presence: true
|
||||
|
||||
def as_json(options)
|
||||
{
|
||||
id: id,
|
||||
title: title,
|
||||
content: content
|
||||
}
|
||||
end
|
||||
end
|
||||
4
test-app/config.ru
Normal file
4
test-app/config.ru
Normal file
@@ -0,0 +1,4 @@
|
||||
# This file is used by Rack-based servers to start the application.
|
||||
|
||||
require ::File.expand_path('../config/environment', __FILE__)
|
||||
run TestApp::Application
|
||||
63
test-app/config/application.rb
Normal file
63
test-app/config/application.rb
Normal file
@@ -0,0 +1,63 @@
|
||||
require File.expand_path('../boot', __FILE__)
|
||||
|
||||
# Pick the frameworks you want:
|
||||
require "active_record/railtie"
|
||||
require "action_controller/railtie"
|
||||
require "action_mailer/railtie"
|
||||
require "sprockets/railtie"
|
||||
# require "rails/test_unit/railtie"
|
||||
|
||||
Bundler.require(*Rails.groups)
|
||||
|
||||
module TestApp
|
||||
class Application < Rails::Application
|
||||
# Settings in config/environments/* take precedence over those specified here.
|
||||
# Application configuration should go into files in config/initializers
|
||||
# -- all .rb files in that directory are automatically loaded.
|
||||
|
||||
# Custom directories with classes and modules you want to be autoloadable.
|
||||
# config.autoload_paths += %W(#{config.root}/extras)
|
||||
|
||||
# Only load the plugins named here, in the order given (default is alphabetical).
|
||||
# :all can be used as a placeholder for all plugins not explicitly named.
|
||||
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
||||
|
||||
# Activate observers that should always be running.
|
||||
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
|
||||
|
||||
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||
# config.time_zone = 'Central Time (US & Canada)'
|
||||
|
||||
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||
# config.i18n.default_locale = :de
|
||||
|
||||
# Configure the default encoding used in templates for Ruby 1.9.
|
||||
config.encoding = "utf-8"
|
||||
|
||||
# Configure sensitive parameters which will be filtered from the log file.
|
||||
config.filter_parameters += [:password]
|
||||
|
||||
# Enable escaping HTML in JSON.
|
||||
config.active_support.escape_html_entities_in_json = true
|
||||
|
||||
# Use SQL instead of Active Record's schema dumper when creating the database.
|
||||
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
||||
# like if you have constraints or database-specific column types
|
||||
# config.active_record.schema_format = :sql
|
||||
|
||||
# Enforce whitelist mode for mass assignment.
|
||||
# This will create an empty whitelist of attributes available for mass-assignment for all models
|
||||
# in your app. As such, your models will need to explicitly whitelist or blacklist accessible
|
||||
# parameters by using an attr_accessible or attr_protected declaration.
|
||||
# config.active_record.whitelist_attributes = true
|
||||
|
||||
# Enable the asset pipeline
|
||||
config.assets.enabled = true
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets
|
||||
config.assets.version = '1.0'
|
||||
end
|
||||
end
|
||||
|
||||
10
test-app/config/boot.rb
Normal file
10
test-app/config/boot.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
require 'rubygems'
|
||||
gemfile = File.expand_path('../../../../Gemfile', __FILE__)
|
||||
|
||||
if File.exist?(gemfile)
|
||||
ENV['BUNDLE_GEMFILE'] = gemfile
|
||||
require 'bundler'
|
||||
Bundler.setup
|
||||
end
|
||||
|
||||
$:.unshift File.expand_path('../../../../lib', __FILE__)
|
||||
25
test-app/config/database.yml
Normal file
25
test-app/config/database.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
#SQLite version 3.x
|
||||
# gem install sqlite3
|
||||
#
|
||||
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||
# gem 'sqlite3'
|
||||
development:
|
||||
adapter: sqlite3
|
||||
database: db/development.sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
adapter: sqlite3
|
||||
database: db/test.sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
production:
|
||||
adapter: sqlite3
|
||||
database: db/production.sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
5
test-app/config/environment.rb
Normal file
5
test-app/config/environment.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
# Load the rails application
|
||||
require File.expand_path('../application', __FILE__)
|
||||
|
||||
# Initialize the rails application
|
||||
TestApp::Application.initialize!
|
||||
31
test-app/config/environments/development.rb
Normal file
31
test-app/config/environments/development.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
TestApp::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# In the development environment your application's code is reloaded on
|
||||
# every request. This slows down response time but is perfect for development
|
||||
# since you don't have to restart the web server when you make code changes.
|
||||
config.cache_classes = false
|
||||
|
||||
# Log error messages when you accidentally call methods on nil.
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Don't care if the mailer can't send
|
||||
config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Print deprecation notices to the Rails logger
|
||||
config.active_support.deprecation = :log
|
||||
|
||||
# Only use best-standards-support built into browsers
|
||||
config.action_dispatch.best_standards_support = :builtin
|
||||
|
||||
|
||||
# Do not compress assets
|
||||
config.assets.compress = false
|
||||
|
||||
# Expands the lines which load the assets
|
||||
config.assets.debug = true
|
||||
end
|
||||
35
test-app/config/environments/test.rb
Normal file
35
test-app/config/environments/test.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
TestApp::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# The test environment is used exclusively to run your application's
|
||||
# test suite. You never need to work with it otherwise. Remember that
|
||||
# your test database is "scratch space" for the test suite and is wiped
|
||||
# and recreated between test runs. Don't rely on the data there!
|
||||
config.cache_classes = true
|
||||
|
||||
# Configure static asset server for tests with Cache-Control for performance
|
||||
config.serve_static_assets = true
|
||||
config.static_cache_control = "public, max-age=3600"
|
||||
|
||||
# Log error messages when you accidentally call methods on nil
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
||||
# Raise exceptions instead of rendering exception templates
|
||||
config.action_dispatch.show_exceptions = false
|
||||
|
||||
# Disable request forgery protection in test environment
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
# Tell Action Mailer not to deliver emails to the real world.
|
||||
# The :test delivery method accumulates sent emails in the
|
||||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
|
||||
# Print deprecation notices to the stderr
|
||||
config.active_support.deprecation = :stderr
|
||||
end
|
||||
7
test-app/config/initializers/backtrace_silencers.rb
Normal file
7
test-app/config/initializers/backtrace_silencers.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
||||
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
|
||||
|
||||
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
|
||||
# Rails.backtrace_cleaner.remove_silencers!
|
||||
15
test-app/config/initializers/inflections.rb
Normal file
15
test-app/config/initializers/inflections.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new inflection rules using the following format
|
||||
# (all these examples are active by default):
|
||||
# ActiveSupport::Inflector.inflections do |inflect|
|
||||
# inflect.plural /^(ox)$/i, '\1en'
|
||||
# inflect.singular /^(ox)en/i, '\1'
|
||||
# inflect.irregular 'person', 'people'
|
||||
# inflect.uncountable %w( fish sheep )
|
||||
# end
|
||||
#
|
||||
# These inflection rules are supported but not enabled by default:
|
||||
# ActiveSupport::Inflector.inflections do |inflect|
|
||||
# inflect.acronym 'RESTful'
|
||||
# end
|
||||
5
test-app/config/initializers/mime_types.rb
Normal file
5
test-app/config/initializers/mime_types.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Add new mime types for use in respond_to blocks:
|
||||
# Mime::Type.register "text/richtext", :rtf
|
||||
# Mime::Type.register_alias "text/html", :iphone
|
||||
14
test-app/config/initializers/rswag-api.rb
Normal file
14
test-app/config/initializers/rswag-api.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
Rswag::Api.configure do |c|
|
||||
|
||||
# Specify a root folder where Swagger JSON files are located
|
||||
# This is used by the Swagger middleware to serve requests for API descriptions
|
||||
# NOTE: If you're using rswag-specs to generate Swagger, you'll need to ensure
|
||||
# that it's configured to generate files in the same folder
|
||||
c.swagger_root = Rails.root.to_s + '/swagger'
|
||||
|
||||
# Inject a lamda function to alter the returned Swagger prior to serialization
|
||||
# The function will have access to the rack env for the current request
|
||||
# For example, you could leverage this to dynamically assign the "host" property
|
||||
#
|
||||
#c.swagger_filter = lambda { |swagger, env| swagger['host'] = env['HTTP_HOST'] }
|
||||
end
|
||||
9
test-app/config/initializers/rswag-ui.rb
Normal file
9
test-app/config/initializers/rswag-ui.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
Rswag::Ui.configure do |c|
|
||||
|
||||
# List the Swagger endpoints that you want to be documented through the swagger-ui
|
||||
# The first parameter is the path (absolute or relative to the UI host) to the corresponding
|
||||
# JSON endpoint and the second is a title that will be displayed in the document selector
|
||||
# NOTE: If you're using rspec-api to expose Swagger files (under swagger_root) as JSON endpoints,
|
||||
# then the list below should correspond to the relative paths for those endpoints
|
||||
c.swagger_endpoint '/api-docs/v1/swagger.json', 'API V1 Docs'
|
||||
end
|
||||
7
test-app/config/initializers/secret_token.rb
Normal file
7
test-app/config/initializers/secret_token.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Your secret key for verifying the integrity of signed cookies.
|
||||
# If you change this key, all old signed cookies will become invalid!
|
||||
# Make sure the secret is at least 30 characters and all random,
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
TestApp::Application.config.secret_token = '60f36cd33756d73f362053f1d45256ae50d75440b634ae73b070a6e35a2df38692f59e28e5ecbd1f9f2e850255f6d29a468bc59ac4484c2b7f0548ddbfc1b870'
|
||||
8
test-app/config/initializers/session_store.rb
Normal file
8
test-app/config/initializers/session_store.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
TestApp::Application.config.session_store :cookie_store, key: '_dummy_session'
|
||||
|
||||
# Use the database for sessions instead of the cookie-based default,
|
||||
# which shouldn't be used to store highly confidential information
|
||||
# (create the session table with "rails generate session_migration")
|
||||
# TestApp::Application.config.session_store :active_record_store
|
||||
10
test-app/config/initializers/wrap_parameters.rb
Normal file
10
test-app/config/initializers/wrap_parameters.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
#
|
||||
# This file contains settings for ActionController::ParamsWrapper which
|
||||
# is enabled by default.
|
||||
|
||||
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
||||
ActiveSupport.on_load(:action_controller) do
|
||||
wrap_parameters format: [:json]
|
||||
end
|
||||
|
||||
10
test-app/config/routes.rb
Normal file
10
test-app/config/routes.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
TestApp::Application.routes.draw do
|
||||
mount Rswag::Ui::Engine => '/api-docs'
|
||||
|
||||
mount Rswag::Api::Engine => '/api-docs'
|
||||
|
||||
resources :blogs, defaults: { :format => :json }
|
||||
|
||||
mount Rswag::Api::Engine => 'api-docs'
|
||||
mount Rswag::Ui::Engine => 'api-docs'
|
||||
end
|
||||
BIN
test-app/db/development.sqlite3
Normal file
BIN
test-app/db/development.sqlite3
Normal file
Binary file not shown.
10
test-app/db/migrate/20160218212104_create_blogs.rb
Normal file
10
test-app/db/migrate/20160218212104_create_blogs.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
class CreateBlogs < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :blogs do |t|
|
||||
t.string :title
|
||||
t.text :content
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
23
test-app/db/schema.rb
Normal file
23
test-app/db/schema.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
# encoding: UTF-8
|
||||
# This file is auto-generated from the current state of the database. Instead
|
||||
# of editing this file, please use the migrations feature of Active Record to
|
||||
# incrementally modify your database, and then regenerate this schema definition.
|
||||
#
|
||||
# Note that this schema.rb definition is the authoritative source for your
|
||||
# database schema. If you need to create the application database on another
|
||||
# system, you should be using db:schema:load, not running all the migrations
|
||||
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
||||
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
||||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20160218212104) do
|
||||
|
||||
create_table "blogs", :force => true do |t|
|
||||
t.string "title"
|
||||
t.text "content"
|
||||
t.datetime "created_at", :null => false
|
||||
t.datetime "updated_at", :null => false
|
||||
end
|
||||
|
||||
end
|
||||
BIN
test-app/db/test.sqlite3
Normal file
BIN
test-app/db/test.sqlite3
Normal file
Binary file not shown.
8290
test-app/log/development.log
Normal file
8290
test-app/log/development.log
Normal file
File diff suppressed because it is too large
Load Diff
8344
test-app/log/test.log
Normal file
8344
test-app/log/test.log
Normal file
File diff suppressed because it is too large
Load Diff
26
test-app/public/404.html
Normal file
26
test-app/public/404.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The page you were looking for doesn't exist (404)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/404.html -->
|
||||
<div class="dialog">
|
||||
<h1>The page you were looking for doesn't exist.</h1>
|
||||
<p>You may have mistyped the address or the page may have moved.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
26
test-app/public/422.html
Normal file
26
test-app/public/422.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
25
test-app/public/500.html
Normal file
25
test-app/public/500.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>We're sorry, but something went wrong (500)</title>
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/500.html -->
|
||||
<div class="dialog">
|
||||
<h1>We're sorry, but something went wrong.</h1>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
0
test-app/public/favicon.ico
Normal file
0
test-app/public/favicon.ico
Normal file
6
test-app/script/rails
Executable file
6
test-app/script/rails
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env ruby
|
||||
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
||||
|
||||
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
||||
require File.expand_path('../../config/boot', __FILE__)
|
||||
require 'rails/commands'
|
||||
65
test-app/spec/integration/blogs_spec.rb
Normal file
65
test-app/spec/integration/blogs_spec.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
require 'swagger_helper'
|
||||
|
||||
describe 'Blogs API', type: :request, swagger_doc: 'v1/swagger.json' do
|
||||
let(:api_key) { 'fake_key' }
|
||||
|
||||
path '/blogs' do
|
||||
post 'Creates a blog' do
|
||||
tags 'Blogs'
|
||||
description 'Creates a new blog from provided data'
|
||||
operationId 'createBlog'
|
||||
consumes 'application/json'
|
||||
parameter name: :blog, :in => :body, schema: { '$ref' => '#/definitions/blog' }
|
||||
|
||||
response '201', 'blog created' do
|
||||
let(:blog) { { title: 'foo', content: 'bar' } }
|
||||
run_test!
|
||||
end
|
||||
|
||||
response '422', 'invalid request' do
|
||||
schema '$ref' => '#/definitions/errors_object'
|
||||
|
||||
let(:blog) { { title: 'foo' } }
|
||||
run_test!
|
||||
end
|
||||
end
|
||||
|
||||
get 'Searches blogs' do
|
||||
tags 'Blogs'
|
||||
description 'Searches blogs by keywords'
|
||||
operationId 'searchBlogs'
|
||||
produces 'application/json'
|
||||
parameter name: :keywords, in: :query, type: 'string'
|
||||
|
||||
response '200', 'success' do
|
||||
schema type: 'array', items: { '$ref' => '#/definitions/blog' }
|
||||
|
||||
let(:keywords) { 'foo bar' }
|
||||
run_test!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
path '/blogs/{id}' do
|
||||
get 'Retrieves a blog' do
|
||||
tags 'Blogs'
|
||||
description 'Retrieves a specific blog by id'
|
||||
operationId 'getBlog'
|
||||
produces 'application/json'
|
||||
parameter name: :id, :in => :path, :type => :string
|
||||
|
||||
response '200', 'blog found' do
|
||||
schema '$ref' => '#/definitions/blog'
|
||||
|
||||
let(:blog) { Blog.create(title: 'foo', content: 'bar') }
|
||||
let(:id) { blog.id }
|
||||
run_test!
|
||||
end
|
||||
|
||||
response '404', 'blog not found' do
|
||||
let(:id) { 'invalid' }
|
||||
run_test!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
53
test-app/spec/rails_helper.rb
Normal file
53
test-app/spec/rails_helper.rb
Normal file
@@ -0,0 +1,53 @@
|
||||
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
||||
ENV['RAILS_ENV'] ||= 'test'
|
||||
require File.expand_path('../../config/environment', __FILE__)
|
||||
# Prevent database truncation if the environment is production
|
||||
abort("The Rails environment is running in production mode!") if Rails.env.production?
|
||||
require 'spec_helper'
|
||||
require 'rspec/rails'
|
||||
# Add additional requires below this line. Rails is not loaded until this point!
|
||||
|
||||
# Requires supporting ruby files with custom matchers and macros, etc, in
|
||||
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
|
||||
# run as spec files by default. This means that files in spec/support that end
|
||||
# in _spec.rb will both be required and run as specs, causing the specs to be
|
||||
# run twice. It is recommended that you do not name files matching this glob to
|
||||
# end with _spec.rb. You can configure this pattern with the --pattern
|
||||
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
|
||||
#
|
||||
# The following line is provided for convenience purposes. It has the downside
|
||||
# of increasing the boot-up time by auto-requiring all files in the support
|
||||
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
||||
# require only the support files necessary.
|
||||
#
|
||||
# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
||||
|
||||
RSpec.configure do |config|
|
||||
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
||||
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
||||
|
||||
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
||||
# examples within a transaction, remove the following line or assign false
|
||||
# instead of true.
|
||||
config.use_transactional_fixtures = true
|
||||
|
||||
# RSpec Rails can automatically mix in different behaviours to your tests
|
||||
# based on their file location, for example enabling you to call `get` and
|
||||
# `post` in specs under `spec/controllers`.
|
||||
#
|
||||
# You can disable this behaviour by removing the line below, and instead
|
||||
# explicitly tag your specs with their type, e.g.:
|
||||
#
|
||||
# RSpec.describe UsersController, :type => :controller do
|
||||
# # ...
|
||||
# end
|
||||
#
|
||||
# The different available types are documented in the features, such as in
|
||||
# https://relishapp.com/rspec/rspec-rails/docs
|
||||
config.infer_spec_type_from_file_location!
|
||||
|
||||
# Filter lines from Rails gems in backtraces.
|
||||
config.filter_rails_from_backtrace!
|
||||
# arbitrary gems may also be filtered via:
|
||||
# config.filter_gems_from_backtrace("gem name")
|
||||
end
|
||||
15
test-app/spec/rake/rswag_specs_swaggerize_spec.rb
Normal file
15
test-app/spec/rake/rswag_specs_swaggerize_spec.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
require 'spec_helper'
|
||||
require 'rake'
|
||||
|
||||
describe 'rswag:specs:swaggerize' do
|
||||
let(:swagger_root) { Rails.root.to_s + '/swagger' }
|
||||
before do
|
||||
TestApp::Application.load_tasks
|
||||
FileUtils.rm_r(swagger_root) if File.exists?(swagger_root)
|
||||
end
|
||||
|
||||
it 'generates Swagger JSON files from integration specs' do
|
||||
expect { Rake::Task['rswag:specs:swaggerize'].invoke }.not_to raise_exception
|
||||
expect(File).to exist("#{swagger_root}/v1/swagger.json")
|
||||
end
|
||||
end
|
||||
99
test-app/spec/spec_helper.rb
Normal file
99
test-app/spec/spec_helper.rb
Normal file
@@ -0,0 +1,99 @@
|
||||
# This file was generated by the `rails generate rspec:install` command. Conventionally, all
|
||||
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
||||
# The generated `.rspec` file contains `--require spec_helper` which will cause
|
||||
# this file to always be loaded, without a need to explicitly require it in any
|
||||
# files.
|
||||
#
|
||||
# Given that it is always loaded, you are encouraged to keep this file as
|
||||
# light-weight as possible. Requiring heavyweight dependencies from this file
|
||||
# will add to the boot time of your test suite on EVERY test run, even for an
|
||||
# individual file that may not need all of that loaded. Instead, consider making
|
||||
# a separate helper file that requires the additional dependencies and performs
|
||||
# the additional setup, and require it from the spec files that actually need
|
||||
# it.
|
||||
#
|
||||
# The `.rspec` file also contains a few flags that are not defaults but that
|
||||
# users commonly want.
|
||||
#
|
||||
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
||||
RSpec.configure do |config|
|
||||
# rspec-expectations config goes here. You can use an alternate
|
||||
# assertion/expectation library such as wrong or the stdlib/minitest
|
||||
# assertions if you prefer.
|
||||
config.expect_with :rspec do |expectations|
|
||||
# This option will default to `true` in RSpec 4. It makes the `description`
|
||||
# and `failure_message` of custom matchers include text for helper methods
|
||||
# defined using `chain`, e.g.:
|
||||
# be_bigger_than(2).and_smaller_than(4).description
|
||||
# # => "be bigger than 2 and smaller than 4"
|
||||
# ...rather than:
|
||||
# # => "be bigger than 2"
|
||||
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
||||
end
|
||||
|
||||
# rspec-mocks config goes here. You can use an alternate test double
|
||||
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
||||
config.mock_with :rspec do |mocks|
|
||||
# Prevents you from mocking or stubbing a method that does not exist on
|
||||
# a real object. This is generally recommended, and will default to
|
||||
# `true` in RSpec 4.
|
||||
mocks.verify_partial_doubles = true
|
||||
end
|
||||
|
||||
# This option will default to `:apply_to_host_groups` in RSpec 4 (and will
|
||||
# have no way to turn it off -- the option exists only for backwards
|
||||
# compatibility in RSpec 3). It causes shared context metadata to be
|
||||
# inherited by the metadata hash of host groups and examples, rather than
|
||||
# triggering implicit auto-inclusion in groups with matching metadata.
|
||||
config.shared_context_metadata_behavior = :apply_to_host_groups
|
||||
|
||||
# The settings below are suggested to provide a good initial experience
|
||||
# with RSpec, but feel free to customize to your heart's content.
|
||||
=begin
|
||||
# This allows you to limit a spec run to individual examples or groups
|
||||
# you care about by tagging them with `:focus` metadata. When nothing
|
||||
# is tagged with `:focus`, all examples get run. RSpec also provides
|
||||
# aliases for `it`, `describe`, and `context` that include `:focus`
|
||||
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
|
||||
config.filter_run_when_matching :focus
|
||||
|
||||
# Allows RSpec to persist some state between runs in order to support
|
||||
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
||||
# you configure your source control system to ignore this file.
|
||||
config.example_status_persistence_file_path = "spec/examples.txt"
|
||||
|
||||
# Limits the available syntax to the non-monkey patched syntax that is
|
||||
# recommended. For more details, see:
|
||||
# - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
|
||||
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
||||
# - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
|
||||
config.disable_monkey_patching!
|
||||
|
||||
# Many RSpec users commonly either run the entire suite or an individual
|
||||
# file, and it's useful to allow more verbose output when running an
|
||||
# individual spec file.
|
||||
if config.files_to_run.one?
|
||||
# Use the documentation formatter for detailed output,
|
||||
# unless a formatter has already been configured
|
||||
# (e.g. via a command-line flag).
|
||||
config.default_formatter = 'doc'
|
||||
end
|
||||
|
||||
# Print the 10 slowest examples and example groups at the
|
||||
# end of the spec run, to help surface which specs are running
|
||||
# particularly slow.
|
||||
config.profile_examples = 10
|
||||
|
||||
# Run specs in random order to surface order dependencies. If you find an
|
||||
# order dependency and want to debug it, you can fix the order by providing
|
||||
# the seed, which is printed after each run.
|
||||
# --seed 1234
|
||||
config.order = :random
|
||||
|
||||
# Seed global randomization in this process using the `--seed` CLI option.
|
||||
# Setting this allows you to use `--seed` to deterministically reproduce
|
||||
# test failures related to randomization by passing the same `--seed` value
|
||||
# as the one that triggered the failure.
|
||||
Kernel.srand config.seed
|
||||
=end
|
||||
end
|
||||
59
test-app/spec/swagger_helper.rb
Normal file
59
test-app/spec/swagger_helper.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.configure do |config|
|
||||
# Specify a root folder where Swagger JSON files are generated
|
||||
# NOTE: If you're using the rswag-api to serve API descriptions, you'll need
|
||||
# to ensure that it's confiugred to server Swagger from the same folder
|
||||
config.swagger_root = Rails.root.to_s + '/swagger'
|
||||
|
||||
# Define one or more Swagger documents and provide global metadata for each one
|
||||
# When you run the 'rswag:specs:to_swagger' rake task, the complete Swagger will
|
||||
# be generated at the provided relative path under swagger_root
|
||||
# By default, the operations defined in spec files are added to the first
|
||||
# document below. You can override this behavior by adding a swagger_doc tag to the
|
||||
# the root example_group in your specs, e.g. describe '...', swagger_doc: 'v2/swagger.json'
|
||||
config.swagger_docs = {
|
||||
'v1/swagger.json' => {
|
||||
swagger: '2.0',
|
||||
info: {
|
||||
title: 'API V1',
|
||||
version: 'v1'
|
||||
},
|
||||
paths: {},
|
||||
definitions: {
|
||||
errors_object: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
errors: { '$ref' => '#/definitions/errors_map' }
|
||||
}
|
||||
},
|
||||
errors_map: {
|
||||
type: 'object',
|
||||
additionalProperties: {
|
||||
type: 'array',
|
||||
items: { type: 'string' }
|
||||
}
|
||||
},
|
||||
blog: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'integer' },
|
||||
title: { type: 'string' },
|
||||
content: { type: 'string' }
|
||||
},
|
||||
required: [ 'id', 'title', 'content' ]
|
||||
}
|
||||
},
|
||||
securityDefinitions: {
|
||||
api_key: {
|
||||
type: :apiKey,
|
||||
name: 'api_key',
|
||||
in: :query
|
||||
}
|
||||
},
|
||||
security: {
|
||||
api_key: []
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
153
test-app/swagger/v1/swagger.json
Normal file
153
test-app/swagger/v1/swagger.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"title": "API V1",
|
||||
"version": "v1"
|
||||
},
|
||||
"paths": {
|
||||
"/blogs": {
|
||||
"post": {
|
||||
"summary": "Creates a blog",
|
||||
"tags": [
|
||||
"Blogs"
|
||||
],
|
||||
"description": "Creates a new blog from provided data",
|
||||
"operationId": "createBlog",
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "blog",
|
||||
"in": "body",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/blog"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "blog created"
|
||||
},
|
||||
"422": {
|
||||
"description": "invalid request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/errors_object"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"get": {
|
||||
"summary": "Searches blogs",
|
||||
"tags": [
|
||||
"Blogs"
|
||||
],
|
||||
"description": "Searches blogs by keywords",
|
||||
"operationId": "searchBlogs",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "keywords",
|
||||
"in": "query",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "success",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/blog"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/blogs/{id}": {
|
||||
"get": {
|
||||
"summary": "Retrieves a blog",
|
||||
"tags": [
|
||||
"Blogs"
|
||||
],
|
||||
"description": "Retrieves a specific blog by id",
|
||||
"operationId": "getBlog",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"type": "string",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "blog found",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/blog"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "blog not found"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"errors_object": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"errors": {
|
||||
"$ref": "#/definitions/errors_map"
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors_map": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"blog": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"content": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"title",
|
||||
"content"
|
||||
]
|
||||
}
|
||||
},
|
||||
"securityDefinitions": {
|
||||
"api_key": {
|
||||
"type": "apiKey",
|
||||
"name": "api_key",
|
||||
"in": "query"
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"api_key": [
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
BIN
test-app/tmp/cache/assets/C4E/AF0/sprockets%2F7c306050f061626e0f3950e79621e7e4
vendored
Normal file
BIN
test-app/tmp/cache/assets/C4E/AF0/sprockets%2F7c306050f061626e0f3950e79621e7e4
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/C64/190/sprockets%2F00050310cc269c318fea8890521c033c
vendored
Normal file
BIN
test-app/tmp/cache/assets/C64/190/sprockets%2F00050310cc269c318fea8890521c033c
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/C78/AA0/sprockets%2F7540403ab706922217f46d51cf078d2f
vendored
Normal file
BIN
test-app/tmp/cache/assets/C78/AA0/sprockets%2F7540403ab706922217f46d51cf078d2f
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/C80/370/sprockets%2Fab6f8830a4155458f0924245c5765a3c
vendored
Normal file
BIN
test-app/tmp/cache/assets/C80/370/sprockets%2Fab6f8830a4155458f0924245c5765a3c
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/C87/590/sprockets%2F427498418547e04b26baf60dc45f7922
vendored
Normal file
BIN
test-app/tmp/cache/assets/C87/590/sprockets%2F427498418547e04b26baf60dc45f7922
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/C87/8C0/sprockets%2F758833f65c3573a325c9b5c293d38d01
vendored
Normal file
BIN
test-app/tmp/cache/assets/C87/8C0/sprockets%2F758833f65c3573a325c9b5c293d38d01
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CA2/360/sprockets%2F11fb992712bf941fc5444b1081249ab0
vendored
Normal file
BIN
test-app/tmp/cache/assets/CA2/360/sprockets%2F11fb992712bf941fc5444b1081249ab0
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CA4/590/sprockets%2F5a2393364111291ca6ef1b8c60f261e8
vendored
Normal file
BIN
test-app/tmp/cache/assets/CA4/590/sprockets%2F5a2393364111291ca6ef1b8c60f261e8
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CB2/210/sprockets%2F2bd1110ff02ed73884f1e9b559661186
vendored
Normal file
BIN
test-app/tmp/cache/assets/CB2/210/sprockets%2F2bd1110ff02ed73884f1e9b559661186
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CB7/300/sprockets%2F4f47f6c8456b82a92ff54a533567d010
vendored
Normal file
BIN
test-app/tmp/cache/assets/CB7/300/sprockets%2F4f47f6c8456b82a92ff54a533567d010
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CD2/CC0/sprockets%2Fb5f9f7793895a857b56b9c056e41494d
vendored
Normal file
BIN
test-app/tmp/cache/assets/CD2/CC0/sprockets%2Fb5f9f7793895a857b56b9c056e41494d
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CD8/4F0/sprockets%2F955386f7956a67dd17889fe10ec9193f
vendored
Normal file
BIN
test-app/tmp/cache/assets/CD8/4F0/sprockets%2F955386f7956a67dd17889fe10ec9193f
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CDB/B00/sprockets%2F68c927ba32a73c662b01b349641c9c7b
vendored
Normal file
BIN
test-app/tmp/cache/assets/CDB/B00/sprockets%2F68c927ba32a73c662b01b349641c9c7b
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CDF/B60/sprockets%2Ffcb3a67d2880b0a9415a61c93366691e
vendored
Normal file
BIN
test-app/tmp/cache/assets/CDF/B60/sprockets%2Ffcb3a67d2880b0a9415a61c93366691e
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CE1/870/sprockets%2Ff2fff22f07d184d50c5e4048e5370393
vendored
Normal file
BIN
test-app/tmp/cache/assets/CE1/870/sprockets%2Ff2fff22f07d184d50c5e4048e5370393
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CE4/180/sprockets%2F1a44ff59443798bfb51541f22882eab3
vendored
Normal file
BIN
test-app/tmp/cache/assets/CE4/180/sprockets%2F1a44ff59443798bfb51541f22882eab3
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CEA/580/sprockets%2F00d7be933e59b0847ee792e7e42a5219
vendored
Normal file
BIN
test-app/tmp/cache/assets/CEA/580/sprockets%2F00d7be933e59b0847ee792e7e42a5219
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CED/8A0/sprockets%2Fbb7eb4c24b93d341d1040283200a2c6d
vendored
Normal file
BIN
test-app/tmp/cache/assets/CED/8A0/sprockets%2Fbb7eb4c24b93d341d1040283200a2c6d
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/CFE/FF0/sprockets%2Ffd931ba87c789063c98f549369b0df83
vendored
Normal file
BIN
test-app/tmp/cache/assets/CFE/FF0/sprockets%2Ffd931ba87c789063c98f549369b0df83
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D09/E50/sprockets%2F64316d413a73d4addac61374a299a5f7
vendored
Normal file
BIN
test-app/tmp/cache/assets/D09/E50/sprockets%2F64316d413a73d4addac61374a299a5f7
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D0A/4A0/sprockets%2F11f5160dd16d1bce2a4838b5e89719b2
vendored
Normal file
BIN
test-app/tmp/cache/assets/D0A/4A0/sprockets%2F11f5160dd16d1bce2a4838b5e89719b2
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D0D/6B0/sprockets%2Fcdc2c396ea6666925ce18c1a225334a8
vendored
Normal file
BIN
test-app/tmp/cache/assets/D0D/6B0/sprockets%2Fcdc2c396ea6666925ce18c1a225334a8
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D10/090/sprockets%2Fbd64bc7457667740f7d4a63c2f28a2a2
vendored
Normal file
BIN
test-app/tmp/cache/assets/D10/090/sprockets%2Fbd64bc7457667740f7d4a63c2f28a2a2
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D10/AF0/sprockets%2F2a62867b314366f2bc2ebe6c10e7c887
vendored
Normal file
BIN
test-app/tmp/cache/assets/D10/AF0/sprockets%2F2a62867b314366f2bc2ebe6c10e7c887
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D11/D90/sprockets%2Fe2f7cf70954a16a5641a9142f1cd865d
vendored
Normal file
BIN
test-app/tmp/cache/assets/D11/D90/sprockets%2Fe2f7cf70954a16a5641a9142f1cd865d
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D28/F90/sprockets%2F1453cb26b51cdf2c7b550360fb0f5d23
vendored
Normal file
BIN
test-app/tmp/cache/assets/D28/F90/sprockets%2F1453cb26b51cdf2c7b550360fb0f5d23
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D2E/F40/sprockets%2F3ba0a0bc093c0764a2d1c9a9570e0f89
vendored
Normal file
BIN
test-app/tmp/cache/assets/D2E/F40/sprockets%2F3ba0a0bc093c0764a2d1c9a9570e0f89
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D30/160/sprockets%2F52922cde7c2a2c5051d7be050018efe7
vendored
Normal file
BIN
test-app/tmp/cache/assets/D30/160/sprockets%2F52922cde7c2a2c5051d7be050018efe7
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D34/D00/sprockets%2F4d5f0581380207bda4235f633fce2fbd
vendored
Normal file
BIN
test-app/tmp/cache/assets/D34/D00/sprockets%2F4d5f0581380207bda4235f633fce2fbd
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D3D/7B0/sprockets%2Feb7aac183fc50477ae770161df27774a
vendored
Normal file
BIN
test-app/tmp/cache/assets/D3D/7B0/sprockets%2Feb7aac183fc50477ae770161df27774a
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D41/BD0/sprockets%2F1691608e154bc20d7bdef63e73de47c5
vendored
Normal file
BIN
test-app/tmp/cache/assets/D41/BD0/sprockets%2F1691608e154bc20d7bdef63e73de47c5
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D42/5F0/sprockets%2F42e9a797c5f0e492bdb23764610ecfe0
vendored
Normal file
BIN
test-app/tmp/cache/assets/D42/5F0/sprockets%2F42e9a797c5f0e492bdb23764610ecfe0
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D48/8E0/sprockets%2Fb3abb7b107c259387cdc987229fbe547
vendored
Normal file
BIN
test-app/tmp/cache/assets/D48/8E0/sprockets%2Fb3abb7b107c259387cdc987229fbe547
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D49/540/sprockets%2F5c700ef877e083db25d4996c8dbe414a
vendored
Normal file
BIN
test-app/tmp/cache/assets/D49/540/sprockets%2F5c700ef877e083db25d4996c8dbe414a
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D4B/370/sprockets%2F7cd89d513796f56bb19c3a05daa7f249
vendored
Normal file
BIN
test-app/tmp/cache/assets/D4B/370/sprockets%2F7cd89d513796f56bb19c3a05daa7f249
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D51/0A0/sprockets%2F4f64ebb7e1c55e37f601d892d16e79b9
vendored
Normal file
BIN
test-app/tmp/cache/assets/D51/0A0/sprockets%2F4f64ebb7e1c55e37f601d892d16e79b9
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D52/B50/sprockets%2Fc489047dc6d75e7ebde47371785b61af
vendored
Normal file
BIN
test-app/tmp/cache/assets/D52/B50/sprockets%2Fc489047dc6d75e7ebde47371785b61af
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D58/B00/sprockets%2Fddd71f3676faf7d597112f758eec0479
vendored
Normal file
BIN
test-app/tmp/cache/assets/D58/B00/sprockets%2Fddd71f3676faf7d597112f758eec0479
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D62/150/sprockets%2F5078f84b3f0449a40bef0ac0f6d1c52c
vendored
Normal file
BIN
test-app/tmp/cache/assets/D62/150/sprockets%2F5078f84b3f0449a40bef0ac0f6d1c52c
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D69/420/sprockets%2Fe4a1588aab113dd81f5f3e227477db2e
vendored
Normal file
BIN
test-app/tmp/cache/assets/D69/420/sprockets%2Fe4a1588aab113dd81f5f3e227477db2e
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D6D/070/sprockets%2F6f3c1168b3aafef0781da6472da0c689
vendored
Normal file
BIN
test-app/tmp/cache/assets/D6D/070/sprockets%2F6f3c1168b3aafef0781da6472da0c689
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D6E/FA0/sprockets%2F9387eef4ddc01a41fb7386f0002f7ab9
vendored
Normal file
BIN
test-app/tmp/cache/assets/D6E/FA0/sprockets%2F9387eef4ddc01a41fb7386f0002f7ab9
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D72/640/sprockets%2F8a78810bd25bbf77cb24c6fe4424c5d7
vendored
Normal file
BIN
test-app/tmp/cache/assets/D72/640/sprockets%2F8a78810bd25bbf77cb24c6fe4424c5d7
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D7D/B00/sprockets%2F68cf59942b931ea4643d029ffba6dfd5
vendored
Normal file
BIN
test-app/tmp/cache/assets/D7D/B00/sprockets%2F68cf59942b931ea4643d029ffba6dfd5
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D93/240/sprockets%2F0bf174208d2cbe8aad74a7a2c9a19d91
vendored
Normal file
BIN
test-app/tmp/cache/assets/D93/240/sprockets%2F0bf174208d2cbe8aad74a7a2c9a19d91
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D96/9C0/sprockets%2F102b13e4fc5fc8eb572f4f3062da5b7f
vendored
Normal file
BIN
test-app/tmp/cache/assets/D96/9C0/sprockets%2F102b13e4fc5fc8eb572f4f3062da5b7f
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D9C/F40/sprockets%2Fb4a9b5cff3ed835f9028c49cd0e50d00
vendored
Normal file
BIN
test-app/tmp/cache/assets/D9C/F40/sprockets%2Fb4a9b5cff3ed835f9028c49cd0e50d00
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/D9F/6B0/sprockets%2Fd7b1c1d7f4f4046dba224d4d5e6c9c77
vendored
Normal file
BIN
test-app/tmp/cache/assets/D9F/6B0/sprockets%2Fd7b1c1d7f4f4046dba224d4d5e6c9c77
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DA2/B20/sprockets%2Fcd96057c71f9d40539be8a3bbfbaa619
vendored
Normal file
BIN
test-app/tmp/cache/assets/DA2/B20/sprockets%2Fcd96057c71f9d40539be8a3bbfbaa619
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DA3/690/sprockets%2Fe7a3e2b664d989f57a1c82ba67eea1c0
vendored
Normal file
BIN
test-app/tmp/cache/assets/DA3/690/sprockets%2Fe7a3e2b664d989f57a1c82ba67eea1c0
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DA6/3D0/sprockets%2Fe227ccc2cf546b7c209f571469f0fdfd
vendored
Normal file
BIN
test-app/tmp/cache/assets/DA6/3D0/sprockets%2Fe227ccc2cf546b7c209f571469f0fdfd
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DB2/820/sprockets%2Fa99e88d06c0e4cb3797ef037a7fbc9c5
vendored
Normal file
BIN
test-app/tmp/cache/assets/DB2/820/sprockets%2Fa99e88d06c0e4cb3797ef037a7fbc9c5
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DB9/820/sprockets%2F15cbbf713e1fa1c0acebfe9416f20822
vendored
Normal file
BIN
test-app/tmp/cache/assets/DB9/820/sprockets%2F15cbbf713e1fa1c0acebfe9416f20822
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DCC/FC0/sprockets%2F91ddbbd1eb330ac823df75eeb571e469
vendored
Normal file
BIN
test-app/tmp/cache/assets/DCC/FC0/sprockets%2F91ddbbd1eb330ac823df75eeb571e469
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DD1/6A0/sprockets%2F488c28f2ccc4b46bf191bfd442b5c8ce
vendored
Normal file
BIN
test-app/tmp/cache/assets/DD1/6A0/sprockets%2F488c28f2ccc4b46bf191bfd442b5c8ce
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DDB/FB0/sprockets%2F2ac4f7f4bdde1a79afeb7783f762664a
vendored
Normal file
BIN
test-app/tmp/cache/assets/DDB/FB0/sprockets%2F2ac4f7f4bdde1a79afeb7783f762664a
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DF4/5D0/sprockets%2F8ccbedb61902c4252e51d5bcfba792fa
vendored
Normal file
BIN
test-app/tmp/cache/assets/DF4/5D0/sprockets%2F8ccbedb61902c4252e51d5bcfba792fa
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DF6/9A0/sprockets%2Fcc50cd4b22c3bdc9f646932129ebcebe
vendored
Normal file
BIN
test-app/tmp/cache/assets/DF6/9A0/sprockets%2Fcc50cd4b22c3bdc9f646932129ebcebe
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/DFB/100/sprockets%2Fdecdca31df0156ec27e61c68b8f2b46e
vendored
Normal file
BIN
test-app/tmp/cache/assets/DFB/100/sprockets%2Fdecdca31df0156ec27e61c68b8f2b46e
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/E2E/9A0/sprockets%2Fdc4cae860ed25cdea928ca3a9d75de33
vendored
Normal file
BIN
test-app/tmp/cache/assets/E2E/9A0/sprockets%2Fdc4cae860ed25cdea928ca3a9d75de33
vendored
Normal file
Binary file not shown.
BIN
test-app/tmp/cache/assets/E5B/060/sprockets%2Fc9be6e359dfaada1324e3ddaf3158bef
vendored
Normal file
BIN
test-app/tmp/cache/assets/E5B/060/sprockets%2Fc9be6e359dfaada1324e3ddaf3158bef
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user