stitches 4.1.0RC2 → 4.2.0.RC1
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/.circleci/config.yml +0 -38
- data/.gitignore +1 -0
- data/README.md +36 -4
- data/lib/stitches/add_disabled_at_to_api_clients_generator.rb +18 -0
- data/lib/stitches/allowlist_middleware.rb +20 -6
- data/lib/stitches/api_client_access_wrapper.rb +42 -11
- data/lib/stitches/api_key.rb +5 -5
- data/lib/stitches/configuration.rb +4 -0
- data/lib/stitches/generator_files/db/migrate/add_disabled_at_to_api_clients.rb +9 -0
- data/lib/stitches/generator_files/db/migrate/create_api_clients.rb +1 -0
- data/lib/stitches/render_timestamps_in_iso8601_in_json.rb +2 -6
- data/lib/stitches/valid_mime_type.rb +1 -1
- data/lib/stitches/version.rb +1 -1
- data/lib/stitches_norailtie.rb +1 -0
- data/spec/api_key_middleware_spec.rb +368 -0
- data/spec/api_version_constraint_middleware_spec.rb +58 -0
- data/spec/configuration_spec.rb +1 -1
- data/spec/deprecation_spec.rb +1 -1
- data/spec/error_spec.rb +1 -1
- data/spec/errors_spec.rb +3 -3
- data/spec/fake_app/.rspec +1 -0
- data/spec/fake_app/.ruby-version +1 -0
- data/spec/fake_app/Gemfile +53 -0
- data/spec/fake_app/README.md +24 -0
- data/spec/fake_app/Rakefile +6 -0
- data/spec/fake_app/app/assets/config/manifest.js +2 -0
- data/spec/fake_app/app/assets/stylesheets/application.css +15 -0
- data/spec/fake_app/app/controllers/api.rb +2 -0
- data/spec/fake_app/app/controllers/api/api_controller.rb +31 -0
- data/spec/fake_app/app/controllers/api/v1.rb +2 -0
- data/spec/fake_app/app/controllers/api/v1/hellos_controller.rb +7 -0
- data/spec/fake_app/app/controllers/api/v1/pings_controller.rb +16 -0
- data/spec/fake_app/app/controllers/api/v2.rb +2 -0
- data/spec/fake_app/app/controllers/api/v2/hellos_controller.rb +7 -0
- data/spec/fake_app/app/controllers/api/v2/pings_controller.rb +16 -0
- data/spec/fake_app/app/controllers/application_controller.rb +2 -0
- data/spec/fake_app/app/helpers/application_helper.rb +2 -0
- data/spec/fake_app/app/models/api_client.rb +2 -0
- data/spec/fake_app/app/models/application_record.rb +3 -0
- data/spec/fake_app/bin/rails +4 -0
- data/spec/fake_app/bin/rake +4 -0
- data/spec/fake_app/bin/setup +33 -0
- data/spec/fake_app/config.ru +6 -0
- data/spec/fake_app/config/application.rb +35 -0
- data/spec/fake_app/config/boot.rb +3 -0
- data/spec/fake_app/config/credentials.yml.enc +1 -0
- data/spec/fake_app/config/database.yml +25 -0
- data/spec/fake_app/config/environment.rb +5 -0
- data/spec/fake_app/config/environments/development.rb +71 -0
- data/spec/fake_app/config/environments/production.rb +109 -0
- data/spec/fake_app/config/environments/test.rb +52 -0
- data/spec/fake_app/config/initializers/assets.rb +12 -0
- data/spec/fake_app/config/initializers/cookies_serializer.rb +5 -0
- data/spec/fake_app/config/initializers/filter_parameter_logging.rb +6 -0
- data/spec/fake_app/config/initializers/stitches.rb +24 -0
- data/spec/fake_app/config/locales/en.yml +33 -0
- data/spec/fake_app/config/master.key +1 -0
- data/spec/fake_app/config/puma.rb +43 -0
- data/spec/fake_app/config/routes.rb +17 -0
- data/spec/fake_app/config/storage.yml +34 -0
- data/spec/fake_app/db/development.sqlite3 +0 -0
- data/spec/fake_app/db/migrate/20210802153118_enable_uuid_ossp_extension.rb +7 -0
- data/spec/fake_app/db/migrate/20210802153119_create_api_clients.rb +14 -0
- data/spec/fake_app/db/schema_missing_disabled_at.rb +12 -0
- data/spec/fake_app/db/schema_missing_enabled.rb +11 -0
- data/spec/fake_app/db/schema_modern.rb +13 -0
- data/spec/fake_app/db/seeds.rb +7 -0
- data/spec/fake_app/db/test.sqlite3 +0 -0
- data/spec/fake_app/doc/api.md +4 -0
- data/spec/fake_app/lib/tasks/generate_api_key.rake +10 -0
- data/spec/fake_app/public/404.html +67 -0
- data/spec/fake_app/public/422.html +67 -0
- data/spec/fake_app/public/500.html +66 -0
- data/spec/fake_app/public/apple-touch-icon-precomposed.png +0 -0
- data/spec/fake_app/public/apple-touch-icon.png +0 -0
- data/spec/fake_app/public/favicon.ico +0 -0
- data/spec/fake_app/public/javascripts/apitome/application.js +31 -0
- data/spec/fake_app/public/robots.txt +1 -0
- data/spec/fake_app/public/stylesheets/apitome/application.css +269 -0
- data/spec/fake_app/test/application_system_test_case.rb +5 -0
- data/spec/fake_app/test/test_helper.rb +13 -0
- data/spec/fake_app/tmp/development_secret.txt +1 -0
- data/spec/integration/add_to_rails_app_spec.rb +9 -1
- data/spec/rails_helper.rb +64 -0
- data/spec/valid_mime_type_middleware_spec.rb +59 -0
- data/spec/valid_mime_type_spec.rb +6 -4
- data/stitches.gemspec +2 -0
- metadata +165 -9
- data/spec/api_client_access_wrapper_spec.rb +0 -52
- data/spec/api_key_spec.rb +0 -208
- data/spec/api_version_constraint_spec.rb +0 -33
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
ENV['RAILS_ENV'] ||= 'test'
|
|
2
|
+
require_relative "../config/environment"
|
|
3
|
+
require "rails/test_help"
|
|
4
|
+
|
|
5
|
+
class ActiveSupport::TestCase
|
|
6
|
+
# Run tests in parallel with specified workers
|
|
7
|
+
parallelize(workers: :number_of_processors)
|
|
8
|
+
|
|
9
|
+
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
|
|
10
|
+
fixtures :all
|
|
11
|
+
|
|
12
|
+
# Add more helper methods to be used by all tests here...
|
|
13
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5555d81df49718e5b9412e544323f9cebcadf7ab825e9ac15b35c57091b4d9a0731033d343b6532c1e08de53f265ae2c0268f67bf65eb1ddc8b230716179d50a
|
|
@@ -63,7 +63,7 @@ RSpec.describe "Adding Stitches to a New Rails App", :integration do
|
|
|
63
63
|
run "bin/rails generate stitches:api"
|
|
64
64
|
|
|
65
65
|
# Yuck! So much duplication! BUT: Rails app templates have a notoriously silent failure mode, so mostly
|
|
66
|
-
# what this is doing is ensuring that the generator inserted stuff when asked and that the very basics of what happens
|
|
66
|
+
# what this is doing is ensuring that the generator inserted stuff when asked and that the very basics of what happens
|
|
67
67
|
# during generation are there. It's gross, and I'm sorry.
|
|
68
68
|
#
|
|
69
69
|
# It's also in one big block because making a new rails app and running the generator multiple times seems bad.
|
|
@@ -85,6 +85,14 @@ RSpec.describe "Adding Stitches to a New Rails App", :integration do
|
|
|
85
85
|
expect(File.read(rails_root / "config" / "initializers" / "apitome.rb")).to include("config.title = 'Service Documentation'")
|
|
86
86
|
expect(File.read(rails_root / "app" / "controllers" / "api" / "api_controller.rb")).to include("rescue_from StandardError")
|
|
87
87
|
expect(File.read(rails_root / "app" / "controllers" / "api" / "api_controller.rb")).to include("rescue_from ActiveRecord::RecordNotFound")
|
|
88
|
+
|
|
89
|
+
run "bin/rails generate stitches:add_enabled_to_api_clients"
|
|
90
|
+
migrations = Dir["#{rails_root}/db/migrate/*.rb"].sort
|
|
91
|
+
expect(migrations.size).to eq(3)
|
|
92
|
+
|
|
93
|
+
run "bin/rails generate stitches:add_disabled_at_to_api_clients"
|
|
94
|
+
migrations = Dir["#{rails_root}/db/migrate/*.rb"].sort
|
|
95
|
+
expect(migrations.size).to eq(4)
|
|
88
96
|
end
|
|
89
97
|
end
|
|
90
98
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
|
4
|
+
require "rails_helper"
|
|
5
|
+
ENV["RAILS_ENV"] ||= "test"
|
|
6
|
+
|
|
7
|
+
require File.expand_path("fake_app/config/environment.rb", __dir__)
|
|
8
|
+
|
|
9
|
+
# Prevent database truncation if the environment is production
|
|
10
|
+
abort("The Rails environment is running in production mode!") if Rails.env.production?
|
|
11
|
+
require "rspec/rails"
|
|
12
|
+
# Add additional requires below this line. Rails is not loaded until this point!
|
|
13
|
+
|
|
14
|
+
ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
|
|
15
|
+
|
|
16
|
+
load 'fake_app/db/schema_modern.rb'
|
|
17
|
+
|
|
18
|
+
# Requires supporting ruby files with custom matchers and macros, etc, in
|
|
19
|
+
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
|
|
20
|
+
# run as spec files by default. This means that files in spec/support that end
|
|
21
|
+
# in _spec.rb will both be required and run as specs, causing the specs to be
|
|
22
|
+
# run twice. It is recommended that you do not name files matching this glob to
|
|
23
|
+
# end with _spec.rb. You can configure this pattern with the --pattern
|
|
24
|
+
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
|
|
25
|
+
#
|
|
26
|
+
# The following line is provided for convenience purposes. It has the downside
|
|
27
|
+
# of increasing the boot-up time by auto-requiring all files in the support
|
|
28
|
+
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
|
29
|
+
# require only the support files necessary.
|
|
30
|
+
#
|
|
31
|
+
# Rails.root is /spec/fake_app_x so going up one dir to the support dir
|
|
32
|
+
Dir[Rails.root.join("../", "support", "**", "*.rb")].sort.each { |f| require f }
|
|
33
|
+
|
|
34
|
+
RSpec.configure do |config|
|
|
35
|
+
# Remove this line to enable support for ActiveRecord
|
|
36
|
+
config.use_active_record = false
|
|
37
|
+
|
|
38
|
+
# If you enable ActiveRecord support you should unncomment these lines,
|
|
39
|
+
# note if you'd prefer not to run each example within a transaction, you
|
|
40
|
+
# should set use_transactional_fixtures to false.
|
|
41
|
+
#
|
|
42
|
+
# config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
|
43
|
+
# config.use_transactional_fixtures = true
|
|
44
|
+
|
|
45
|
+
# RSpec Rails can automatically mix in different behaviours to your tests
|
|
46
|
+
# based on their file location, for example enabling you to call `get` and
|
|
47
|
+
# `post` in specs under `spec/controllers`.
|
|
48
|
+
#
|
|
49
|
+
# You can disable this behaviour by removing the line below, and instead
|
|
50
|
+
# explicitly tag your specs with their type, e.g.:
|
|
51
|
+
#
|
|
52
|
+
# RSpec.describe UsersController, type: :controller do
|
|
53
|
+
# # ...
|
|
54
|
+
# end
|
|
55
|
+
#
|
|
56
|
+
# The different available types are documented in the features, such as in
|
|
57
|
+
# https://relishapp.com/rspec/rspec-rails/docs
|
|
58
|
+
config.infer_spec_type_from_file_location!
|
|
59
|
+
|
|
60
|
+
# Filter lines from Rails gems in backtraces.
|
|
61
|
+
config.filter_rails_from_backtrace!
|
|
62
|
+
# arbitrary gems may also be filtered via:
|
|
63
|
+
# config.filter_gems_from_backtrace("gem name")
|
|
64
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
require 'securerandom'
|
|
3
|
+
|
|
4
|
+
RSpec.describe "/api/hellos", type: :request do
|
|
5
|
+
let!(:api_client) {
|
|
6
|
+
uuid = SecureRandom.uuid
|
|
7
|
+
ApiClient.create(name: "MyApiClient", key: uuid, enabled: true, created_at: Time.now())
|
|
8
|
+
}
|
|
9
|
+
let(:uuid) { api_client.key }
|
|
10
|
+
let(:auth_header) { "MyAwesomeInternalScheme key=#{uuid}" }
|
|
11
|
+
let(:accept_header) { "application/json; version=1" }
|
|
12
|
+
let(:headers) {
|
|
13
|
+
h = {
|
|
14
|
+
"Authorization" => auth_header
|
|
15
|
+
}
|
|
16
|
+
h["Accept"] = accept_header if accept_header
|
|
17
|
+
h
|
|
18
|
+
}
|
|
19
|
+
let(:allowlist) { nil }
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
Stitches.configuration.reset_to_defaults!
|
|
23
|
+
Stitches.configuration.custom_http_auth_scheme = 'MyAwesomeInternalScheme'
|
|
24
|
+
Stitches::ApiClientAccessWrapper.clear_api_cache
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def execute_call(accept_header:)
|
|
28
|
+
headers = {
|
|
29
|
+
"Authorization" => auth_header
|
|
30
|
+
}
|
|
31
|
+
headers["Accept"] = accept_header if accept_header
|
|
32
|
+
|
|
33
|
+
get "/api/hellos", headers: headers
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "returns good result when no problems exist in accept_header" do
|
|
37
|
+
execute_call(accept_header: "application/json; version=1")
|
|
38
|
+
|
|
39
|
+
expect(response.status).to eq 200
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "fails accept header has missing version" do
|
|
43
|
+
execute_call(accept_header: "application/json")
|
|
44
|
+
|
|
45
|
+
expect(response.status).to eq 406
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "fails accept header has bad version" do
|
|
49
|
+
execute_call(accept_header: "application/json; version=nan")
|
|
50
|
+
|
|
51
|
+
expect(response.status).to eq 406
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "fails when mime type is bad" do
|
|
55
|
+
execute_call(accept_header: "application/xml; version=1")
|
|
56
|
+
|
|
57
|
+
expect(response.status).to eq 406
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Stitches::ValidMimeType do
|
|
4
4
|
let(:app) { double("rack app") }
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
before do
|
|
7
7
|
allow(app).to receive(:call).with(env)
|
|
8
8
|
end
|
|
@@ -132,6 +132,8 @@ describe Stitches::ValidMimeType do
|
|
|
132
132
|
end
|
|
133
133
|
end
|
|
134
134
|
|
|
135
|
+
# The only remaining thing being tested outside the integration test is the little hole opened up to allow
|
|
136
|
+
# protobuf services to function
|
|
135
137
|
context "protbuf mime type" do
|
|
136
138
|
let(:env) {
|
|
137
139
|
{
|
|
@@ -160,7 +162,7 @@ describe Stitches::ValidMimeType do
|
|
|
160
162
|
}
|
|
161
163
|
it_behaves_like "an unacceptable response"
|
|
162
164
|
end
|
|
163
|
-
context "bad
|
|
165
|
+
context "bad version" do
|
|
164
166
|
let(:env) {
|
|
165
167
|
{
|
|
166
168
|
"PATH_INFO" => "/api/ping",
|
|
@@ -169,7 +171,7 @@ describe Stitches::ValidMimeType do
|
|
|
169
171
|
}
|
|
170
172
|
it_behaves_like "an unacceptable response"
|
|
171
173
|
end
|
|
172
|
-
context "bad
|
|
174
|
+
context "bad mime type" do
|
|
173
175
|
let(:env) {
|
|
174
176
|
{
|
|
175
177
|
"PATH_INFO" => "/api/ping",
|
data/stitches.gemspec
CHANGED
|
@@ -23,6 +23,8 @@ Gem::Specification.new do |s|
|
|
|
23
23
|
s.add_runtime_dependency("lru_redux")
|
|
24
24
|
|
|
25
25
|
s.add_development_dependency("rspec", ">= 3")
|
|
26
|
+
s.add_development_dependency("rspec-rails")
|
|
27
|
+
s.add_development_dependency("sqlite3")
|
|
26
28
|
s.add_development_dependency("rake")
|
|
27
29
|
s.add_development_dependency("rspec_junit_formatter")
|
|
28
30
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stitches
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.2.0.RC1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stitch Fix Engineering
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2021-
|
|
14
|
+
date: 2021-08-10 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: rails
|
|
@@ -69,6 +69,34 @@ dependencies:
|
|
|
69
69
|
- - ">="
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '3'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: rspec-rails
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: '0'
|
|
79
|
+
type: :development
|
|
80
|
+
prerelease: false
|
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
82
|
+
requirements:
|
|
83
|
+
- - ">="
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0'
|
|
86
|
+
- !ruby/object:Gem::Dependency
|
|
87
|
+
name: sqlite3
|
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
|
89
|
+
requirements:
|
|
90
|
+
- - ">="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: '0'
|
|
93
|
+
type: :development
|
|
94
|
+
prerelease: false
|
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
96
|
+
requirements:
|
|
97
|
+
- - ">="
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: '0'
|
|
72
100
|
- !ruby/object:Gem::Dependency
|
|
73
101
|
name: rake
|
|
74
102
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -130,6 +158,7 @@ files:
|
|
|
130
158
|
- build-matrix.json
|
|
131
159
|
- lib/stitches.rb
|
|
132
160
|
- lib/stitches/add_deprecation_generator.rb
|
|
161
|
+
- lib/stitches/add_disabled_at_to_api_clients_generator.rb
|
|
133
162
|
- lib/stitches/add_enabled_to_api_clients_generator.rb
|
|
134
163
|
- lib/stitches/allowlist_middleware.rb
|
|
135
164
|
- lib/stitches/api_client_access_wrapper.rb
|
|
@@ -148,6 +177,7 @@ files:
|
|
|
148
177
|
- lib/stitches/generator_files/app/controllers/api/v2/pings_controller.rb
|
|
149
178
|
- lib/stitches/generator_files/app/models/api_client.rb
|
|
150
179
|
- lib/stitches/generator_files/config/initializers/stitches.rb
|
|
180
|
+
- lib/stitches/generator_files/db/migrate/add_disabled_at_to_api_clients.rb
|
|
151
181
|
- lib/stitches/generator_files/db/migrate/add_enabled_to_api_clients.rb
|
|
152
182
|
- lib/stitches/generator_files/db/migrate/create_api_clients.rb
|
|
153
183
|
- lib/stitches/generator_files/db/migrate/enable_uuid_ossp_extension.rb
|
|
@@ -167,18 +197,81 @@ files:
|
|
|
167
197
|
- lib/stitches/version.rb
|
|
168
198
|
- lib/stitches_norailtie.rb
|
|
169
199
|
- owners.json
|
|
170
|
-
- spec/
|
|
171
|
-
- spec/
|
|
172
|
-
- spec/api_version_constraint_spec.rb
|
|
200
|
+
- spec/api_key_middleware_spec.rb
|
|
201
|
+
- spec/api_version_constraint_middleware_spec.rb
|
|
173
202
|
- spec/configuration_spec.rb
|
|
174
203
|
- spec/deprecation_spec.rb
|
|
175
204
|
- spec/error_spec.rb
|
|
176
205
|
- spec/errors_spec.rb
|
|
206
|
+
- spec/fake_app/.rspec
|
|
207
|
+
- spec/fake_app/.ruby-version
|
|
208
|
+
- spec/fake_app/Gemfile
|
|
209
|
+
- spec/fake_app/README.md
|
|
210
|
+
- spec/fake_app/Rakefile
|
|
211
|
+
- spec/fake_app/app/assets/config/manifest.js
|
|
212
|
+
- spec/fake_app/app/assets/stylesheets/application.css
|
|
213
|
+
- spec/fake_app/app/controllers/api.rb
|
|
214
|
+
- spec/fake_app/app/controllers/api/api_controller.rb
|
|
215
|
+
- spec/fake_app/app/controllers/api/v1.rb
|
|
216
|
+
- spec/fake_app/app/controllers/api/v1/hellos_controller.rb
|
|
217
|
+
- spec/fake_app/app/controllers/api/v1/pings_controller.rb
|
|
218
|
+
- spec/fake_app/app/controllers/api/v2.rb
|
|
219
|
+
- spec/fake_app/app/controllers/api/v2/hellos_controller.rb
|
|
220
|
+
- spec/fake_app/app/controllers/api/v2/pings_controller.rb
|
|
221
|
+
- spec/fake_app/app/controllers/application_controller.rb
|
|
222
|
+
- spec/fake_app/app/helpers/application_helper.rb
|
|
223
|
+
- spec/fake_app/app/models/api_client.rb
|
|
224
|
+
- spec/fake_app/app/models/application_record.rb
|
|
225
|
+
- spec/fake_app/bin/rails
|
|
226
|
+
- spec/fake_app/bin/rake
|
|
227
|
+
- spec/fake_app/bin/setup
|
|
228
|
+
- spec/fake_app/config.ru
|
|
229
|
+
- spec/fake_app/config/application.rb
|
|
230
|
+
- spec/fake_app/config/boot.rb
|
|
231
|
+
- spec/fake_app/config/credentials.yml.enc
|
|
232
|
+
- spec/fake_app/config/database.yml
|
|
233
|
+
- spec/fake_app/config/environment.rb
|
|
234
|
+
- spec/fake_app/config/environments/development.rb
|
|
235
|
+
- spec/fake_app/config/environments/production.rb
|
|
236
|
+
- spec/fake_app/config/environments/test.rb
|
|
237
|
+
- spec/fake_app/config/initializers/assets.rb
|
|
238
|
+
- spec/fake_app/config/initializers/cookies_serializer.rb
|
|
239
|
+
- spec/fake_app/config/initializers/filter_parameter_logging.rb
|
|
240
|
+
- spec/fake_app/config/initializers/stitches.rb
|
|
241
|
+
- spec/fake_app/config/locales/en.yml
|
|
242
|
+
- spec/fake_app/config/master.key
|
|
243
|
+
- spec/fake_app/config/puma.rb
|
|
244
|
+
- spec/fake_app/config/routes.rb
|
|
245
|
+
- spec/fake_app/config/storage.yml
|
|
246
|
+
- spec/fake_app/db/development.sqlite3
|
|
247
|
+
- spec/fake_app/db/migrate/20210802153118_enable_uuid_ossp_extension.rb
|
|
248
|
+
- spec/fake_app/db/migrate/20210802153119_create_api_clients.rb
|
|
249
|
+
- spec/fake_app/db/schema_missing_disabled_at.rb
|
|
250
|
+
- spec/fake_app/db/schema_missing_enabled.rb
|
|
251
|
+
- spec/fake_app/db/schema_modern.rb
|
|
252
|
+
- spec/fake_app/db/seeds.rb
|
|
253
|
+
- spec/fake_app/db/test.sqlite3
|
|
254
|
+
- spec/fake_app/doc/api.md
|
|
255
|
+
- spec/fake_app/lib/tasks/generate_api_key.rake
|
|
256
|
+
- spec/fake_app/public/404.html
|
|
257
|
+
- spec/fake_app/public/422.html
|
|
258
|
+
- spec/fake_app/public/500.html
|
|
259
|
+
- spec/fake_app/public/apple-touch-icon-precomposed.png
|
|
260
|
+
- spec/fake_app/public/apple-touch-icon.png
|
|
261
|
+
- spec/fake_app/public/favicon.ico
|
|
262
|
+
- spec/fake_app/public/javascripts/apitome/application.js
|
|
263
|
+
- spec/fake_app/public/robots.txt
|
|
264
|
+
- spec/fake_app/public/stylesheets/apitome/application.css
|
|
265
|
+
- spec/fake_app/test/application_system_test_case.rb
|
|
266
|
+
- spec/fake_app/test/test_helper.rb
|
|
267
|
+
- spec/fake_app/tmp/development_secret.txt
|
|
177
268
|
- spec/integration/add_to_rails_app_spec.rb
|
|
269
|
+
- spec/rails_helper.rb
|
|
178
270
|
- spec/spec/be_gone_spec.rb
|
|
179
271
|
- spec/spec/have_api_error_spec.rb
|
|
180
272
|
- spec/spec/show_deprecation_spec.rb
|
|
181
273
|
- spec/spec_helper.rb
|
|
274
|
+
- spec/valid_mime_type_middleware_spec.rb
|
|
182
275
|
- spec/valid_mime_type_spec.rb
|
|
183
276
|
- stitches.gemspec
|
|
184
277
|
homepage: https://github.com/stitchfix/stitches
|
|
@@ -200,21 +293,84 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
200
293
|
- !ruby/object:Gem::Version
|
|
201
294
|
version: 1.3.1
|
|
202
295
|
requirements: []
|
|
203
|
-
rubygems_version: 3.
|
|
296
|
+
rubygems_version: 3.2.20
|
|
204
297
|
signing_key:
|
|
205
298
|
specification_version: 4
|
|
206
299
|
summary: You'll be in stitches at how easy it is to create a service at Stitch Fix
|
|
207
300
|
test_files:
|
|
208
|
-
- spec/
|
|
209
|
-
- spec/
|
|
210
|
-
- spec/api_version_constraint_spec.rb
|
|
301
|
+
- spec/api_key_middleware_spec.rb
|
|
302
|
+
- spec/api_version_constraint_middleware_spec.rb
|
|
211
303
|
- spec/configuration_spec.rb
|
|
212
304
|
- spec/deprecation_spec.rb
|
|
213
305
|
- spec/error_spec.rb
|
|
214
306
|
- spec/errors_spec.rb
|
|
307
|
+
- spec/fake_app/.rspec
|
|
308
|
+
- spec/fake_app/.ruby-version
|
|
309
|
+
- spec/fake_app/Gemfile
|
|
310
|
+
- spec/fake_app/README.md
|
|
311
|
+
- spec/fake_app/Rakefile
|
|
312
|
+
- spec/fake_app/app/assets/config/manifest.js
|
|
313
|
+
- spec/fake_app/app/assets/stylesheets/application.css
|
|
314
|
+
- spec/fake_app/app/controllers/api.rb
|
|
315
|
+
- spec/fake_app/app/controllers/api/api_controller.rb
|
|
316
|
+
- spec/fake_app/app/controllers/api/v1.rb
|
|
317
|
+
- spec/fake_app/app/controllers/api/v1/hellos_controller.rb
|
|
318
|
+
- spec/fake_app/app/controllers/api/v1/pings_controller.rb
|
|
319
|
+
- spec/fake_app/app/controllers/api/v2.rb
|
|
320
|
+
- spec/fake_app/app/controllers/api/v2/hellos_controller.rb
|
|
321
|
+
- spec/fake_app/app/controllers/api/v2/pings_controller.rb
|
|
322
|
+
- spec/fake_app/app/controllers/application_controller.rb
|
|
323
|
+
- spec/fake_app/app/helpers/application_helper.rb
|
|
324
|
+
- spec/fake_app/app/models/api_client.rb
|
|
325
|
+
- spec/fake_app/app/models/application_record.rb
|
|
326
|
+
- spec/fake_app/bin/rails
|
|
327
|
+
- spec/fake_app/bin/rake
|
|
328
|
+
- spec/fake_app/bin/setup
|
|
329
|
+
- spec/fake_app/config.ru
|
|
330
|
+
- spec/fake_app/config/application.rb
|
|
331
|
+
- spec/fake_app/config/boot.rb
|
|
332
|
+
- spec/fake_app/config/credentials.yml.enc
|
|
333
|
+
- spec/fake_app/config/database.yml
|
|
334
|
+
- spec/fake_app/config/environment.rb
|
|
335
|
+
- spec/fake_app/config/environments/development.rb
|
|
336
|
+
- spec/fake_app/config/environments/production.rb
|
|
337
|
+
- spec/fake_app/config/environments/test.rb
|
|
338
|
+
- spec/fake_app/config/initializers/assets.rb
|
|
339
|
+
- spec/fake_app/config/initializers/cookies_serializer.rb
|
|
340
|
+
- spec/fake_app/config/initializers/filter_parameter_logging.rb
|
|
341
|
+
- spec/fake_app/config/initializers/stitches.rb
|
|
342
|
+
- spec/fake_app/config/locales/en.yml
|
|
343
|
+
- spec/fake_app/config/master.key
|
|
344
|
+
- spec/fake_app/config/puma.rb
|
|
345
|
+
- spec/fake_app/config/routes.rb
|
|
346
|
+
- spec/fake_app/config/storage.yml
|
|
347
|
+
- spec/fake_app/db/development.sqlite3
|
|
348
|
+
- spec/fake_app/db/migrate/20210802153118_enable_uuid_ossp_extension.rb
|
|
349
|
+
- spec/fake_app/db/migrate/20210802153119_create_api_clients.rb
|
|
350
|
+
- spec/fake_app/db/schema_missing_disabled_at.rb
|
|
351
|
+
- spec/fake_app/db/schema_missing_enabled.rb
|
|
352
|
+
- spec/fake_app/db/schema_modern.rb
|
|
353
|
+
- spec/fake_app/db/seeds.rb
|
|
354
|
+
- spec/fake_app/db/test.sqlite3
|
|
355
|
+
- spec/fake_app/doc/api.md
|
|
356
|
+
- spec/fake_app/lib/tasks/generate_api_key.rake
|
|
357
|
+
- spec/fake_app/public/404.html
|
|
358
|
+
- spec/fake_app/public/422.html
|
|
359
|
+
- spec/fake_app/public/500.html
|
|
360
|
+
- spec/fake_app/public/apple-touch-icon-precomposed.png
|
|
361
|
+
- spec/fake_app/public/apple-touch-icon.png
|
|
362
|
+
- spec/fake_app/public/favicon.ico
|
|
363
|
+
- spec/fake_app/public/javascripts/apitome/application.js
|
|
364
|
+
- spec/fake_app/public/robots.txt
|
|
365
|
+
- spec/fake_app/public/stylesheets/apitome/application.css
|
|
366
|
+
- spec/fake_app/test/application_system_test_case.rb
|
|
367
|
+
- spec/fake_app/test/test_helper.rb
|
|
368
|
+
- spec/fake_app/tmp/development_secret.txt
|
|
215
369
|
- spec/integration/add_to_rails_app_spec.rb
|
|
370
|
+
- spec/rails_helper.rb
|
|
216
371
|
- spec/spec/be_gone_spec.rb
|
|
217
372
|
- spec/spec/have_api_error_spec.rb
|
|
218
373
|
- spec/spec/show_deprecation_spec.rb
|
|
219
374
|
- spec/spec_helper.rb
|
|
375
|
+
- spec/valid_mime_type_middleware_spec.rb
|
|
220
376
|
- spec/valid_mime_type_spec.rb
|