stitches 4.2.0.RC2 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 781cc5ec8996b5c726e7e214d69c5d780ddbf4818fb9b0cb5ce15de6bb6e829c
4
- data.tar.gz: f482c0e9a21b84330add05e8c9a2bfd3ef5986ac60f7f22766f79f480d1e2a4b
3
+ metadata.gz: 31a88657d0835e4d9dae083be3a5351e0cfe719dc0c930def115d0a1d9749849
4
+ data.tar.gz: 4f873d97147ef91da025f0f06eb29c0c800f6a2f6410739cc64c7050b17fbb4b
5
5
  SHA512:
6
- metadata.gz: d71dfb5cc76e1d753d1b25e3a8e278097167f07e8f43e7f276041c043960bf3ba551d47cd3ba90a4d94d56538a217d4c55156b5d5cb59273aa104086852d4a26
7
- data.tar.gz: fb6c236f22a81f1cb7373f3d50d6dc907e7ba2c684a07dc1f5ce94ac7e9b6039dda780821d763912dbb39139fc00b27e2d254c525b7ac9da3d1011a5f4bec9b3
6
+ metadata.gz: 9c78c55c6a88cf128e1d58e9fce561f32f53207c0de2f8ddb107449fe2de2638e73f76e842aece05b1d5431072459bf7747dd736746d7ad81f3c153841f00627
7
+ data.tar.gz: 0ae33e523eb0f782f6cdf3a0bc457c8f09fa3a140759e344f8fe07b6a9b209dfcb119df77abe167017a491462bb83db9f10ce7f1aae7d82aa5c8b9b7046ef1bb
@@ -33,7 +33,7 @@ module Stitches::ApiClientAccessWrapper
33
33
 
34
34
  disabled_at = api_client.respond_to?(:disabled_at) ? api_client.disabled_at : nil
35
35
  if disabled_at && disabled_at > configuration.disabled_key_leniency_in_seconds.seconds.ago
36
- message = "Allowing disabled ApiClient: #{api_client.name} with key #{api_client.key} disabled at #{disabled_at}"
36
+ message = "Allowing disabled ApiClient: #{api_client.name} with key #{redact_key(api_client)} disabled at #{disabled_at}"
37
37
  if disabled_at > configuration.disabled_key_leniency_error_log_threshold_in_seconds.seconds.ago
38
38
  logger.warn(message)
39
39
  else
@@ -41,11 +41,15 @@ module Stitches::ApiClientAccessWrapper
41
41
  end
42
42
  return api_client
43
43
  else
44
- logger.error("Rejecting disabled ApiClient: #{api_client.name} with key #{api_client.key}")
44
+ logger.error("Rejecting disabled ApiClient: #{api_client.name} with key #{redact_key(api_client)}")
45
45
  end
46
46
  nil
47
47
  end
48
48
 
49
+ def self.redact_key(api_client)
50
+ "*****#{api_client.key.to_s[-8..-1]}"
51
+ end
52
+
49
53
  def self.logger
50
54
  if defined?(StitchFix::Logger::LogWriter)
51
55
  StitchFix::Logger::LogWriter
@@ -12,7 +12,6 @@ module Stitches
12
12
 
13
13
  desc "Bootstraps your API service with a basic ping controller and spec to ensure everything is setup properly"
14
14
  def bootstrap_api
15
- gem "apitome"
16
15
  gem_group :development, :test do
17
16
  gem "rspec"
18
17
  gem "rspec-rails"
@@ -22,12 +21,8 @@ module Stitches
22
21
  Bundler.with_clean_env do
23
22
  run "bundle install"
24
23
  end
25
- generate "apitome:install"
26
24
  generate "rspec:install"
27
25
 
28
- gsub_file 'config/initializers/apitome.rb', /config.mount_at = .*$/, "config.mount_at = nil"
29
- gsub_file 'config/initializers/apitome.rb', /config.title = .*$/, "config.title = 'Service Documentation'"
30
-
31
26
  inject_into_file "config/routes.rb", before: /^end/ do<<-ROUTES
32
27
  namespace :api do
33
28
  scope module: :v1, constraints: Stitches::ApiVersionConstraint.new(1) do
@@ -40,11 +35,6 @@ namespace :api do
40
35
  # as well as for your client to be able to validate this as well.
41
36
  end
42
37
  end
43
-
44
- api_docs = Rack::Auth::Basic.new(Apitome::Engine) do |_, password|
45
- password == ENV['HTTP_AUTH_PASSWORD']
46
- end
47
- mount api_docs, at: "docs"
48
38
  ROUTES
49
39
  end
50
40
 
@@ -77,7 +67,7 @@ require 'stitches/spec'
77
67
  require 'rspec_api_documentation'
78
68
 
79
69
  RspecApiDocumentation.configure do |config|
80
- config.format = :json
70
+ config.format = [:json, :html]
81
71
  config.request_headers_to_include = %w(
82
72
  Accept
83
73
  Content-Type
@@ -1,8 +1,4 @@
1
- <% if Rails::VERSION::MAJOR >= 5 %>
2
- class AddDisabledAtToApiClients < ActiveRecord::Migration[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]
3
- <% else %>
4
- class AddDisabledAtToApiClients < ActiveRecord::Migration
5
- <% end %>
1
+ class AddDisabledAtToApiClients < ActiveRecord::Migration<% if Rails::VERSION::MAJOR >= 5 %>[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]<% end %>
6
2
  def change
7
3
  add_column :api_clients, :disabled_at, "timestamp with time zone", null: true
8
4
  end
@@ -1,8 +1,4 @@
1
- <% if Rails::VERSION::MAJOR >= 5 %>
2
- class AddEnabledToApiClients < ActiveRecord::Migration[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]
3
- <% else %>
4
- class AddEnabledToApiClients < ActiveRecord::Migration
5
- <% end %>
1
+ class AddEnabledToApiClients < ActiveRecord::Migration<% if Rails::VERSION::MAJOR >= 5 %>[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]<% end %>
6
2
  def change
7
3
  add_column :api_clients, :enabled, :bool, null: false, default: true
8
4
  remove_index :api_clients, [:name ] # existing one would be unique
@@ -1,8 +1,4 @@
1
- <% if Rails::VERSION::MAJOR >= 5 %>
2
- class CreateApiClients < ActiveRecord::Migration[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]
3
- <% else %>
4
- class CreateApiClients < ActiveRecord::Migration
5
- <% end %>
1
+ class CreateApiClients < ActiveRecord::Migration<% if Rails::VERSION::MAJOR >= 5 %>[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]<% end %>
6
2
  def change
7
3
  create_table :api_clients do |t|
8
4
  t.string :name, null: false
@@ -1,8 +1,4 @@
1
- <% if Rails::VERSION::MAJOR >= 5 %>
2
- class EnableUuidOsspExtension < ActiveRecord::Migration[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]
3
- <% else %>
4
- class EnableUuidOsspExtension < ActiveRecord::Migration
5
- <% end %>
1
+ class EnableUuidOsspExtension < ActiveRecord::Migration<% if Rails::VERSION::MAJOR >= 5 %>[<%= Rails::VERSION::MAJOR %>.<%= Rails::VERSION::MINOR %>]<% end %>
6
2
  def change
7
3
  enable_extension 'uuid-ossp'
8
4
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stitches
4
- VERSION = '4.2.0.RC2'
4
+ VERSION = '4.2.2'
5
5
  end
@@ -102,10 +102,11 @@ RSpec.describe "/api/hellos", type: :request do
102
102
  context "when disabled_at is set to a time older than three days ago" do
103
103
  let(:disabled_at) { 4.day.ago }
104
104
 
105
- it "allows the call" do
105
+ it "does not allow the call" do
106
106
  execute_call
107
107
 
108
108
  expect_unauthorized
109
+
109
110
  end
110
111
  end
111
112
 
@@ -162,7 +163,9 @@ RSpec.describe "/api/hellos", type: :request do
162
163
 
163
164
  it "logs error about the disabled key to the Rails.logger" do
164
165
  allow(Rails.logger).to receive(:warn)
165
- allow(Rails.logger).to receive(:error)
166
+ allow(Rails.logger).to receive(:error) do |message1|
167
+ expect(message1).not_to include uuid
168
+ end
166
169
 
167
170
  execute_call
168
171
 
@@ -210,7 +213,10 @@ RSpec.describe "/api/hellos", type: :request do
210
213
  let(:disabled_at) { 101.seconds.ago }
211
214
 
212
215
  it "forbids the call" do
213
- allow(Rails.logger).to receive(:error)
216
+ allow(Rails.logger).to receive(:error) do |message1|
217
+ expect(message1).not_to include uuid
218
+ end
219
+
214
220
  execute_call
215
221
 
216
222
  expect_unauthorized
@@ -235,7 +241,9 @@ RSpec.describe "/api/hellos", type: :request do
235
241
  let(:disabled_at) { 25.seconds.ago }
236
242
 
237
243
  it "allows the call" do
238
- allow(Rails.logger).to receive(:warn)
244
+ allow(Rails.logger).to receive(:warn) do |message1|
245
+ expect(message1).not_to include uuid
246
+ end
239
247
 
240
248
  execute_call
241
249
 
@@ -44,7 +44,6 @@ end
44
44
 
45
45
  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
46
46
  gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
47
- gem 'apitome'
48
47
 
49
48
  group :development, :test do
50
49
  gem 'rspec'
@@ -51,7 +51,7 @@ RSpec.describe "Adding Stitches to a New Rails App", :integration do
51
51
  run use_local_stitches
52
52
  # It's unclear why, but on CI the gems are not found when installed
53
53
  # through bundler however installing them explicitly first fixes it.
54
- run "gem install apitome rspec-rails rspec_api_documentation"
54
+ run "gem install rspec-rails rspec_api_documentation"
55
55
  run "bundle install"
56
56
  example.run
57
57
  end
@@ -69,11 +69,9 @@ RSpec.describe "Adding Stitches to a New Rails App", :integration do
69
69
  # It's also in one big block because making a new rails app and running the generator multiple times seems bad.
70
70
  aggregate_failures do
71
71
  expect(File.exist?(rails_root / "app" / "controllers" / "api" / "api_controller.rb")).to eq(true)
72
- expect(rails_root / "Gemfile").to contain_gem("apitome")
73
72
  expect(rails_root / "Gemfile").to contain_gem("rspec_api_documentation")
74
73
  expect(rails_root / "config" / "routes.rb").to have_route(namespace: :api, module_scope: :v1, resource: 'ping')
75
74
  expect(rails_root / "config" / "routes.rb").to have_route(namespace: :api, module_scope: :v2, resource: 'ping')
76
- expect(rails_root / "config" / "routes.rb").to have_mounted_engine("Apitome::Engine")
77
75
  migrations = Dir["#{rails_root}/db/migrate/*.rb"].sort
78
76
  expect(migrations.size).to eq(2)
79
77
  expect(migrations[0]).to match(/\/\d+_enable_uuid_ossp_extension.rb/)
@@ -81,8 +79,6 @@ RSpec.describe "Adding Stitches to a New Rails App", :integration do
81
79
  expect(File.read(rails_root / "spec" / "rails_helper.rb")).to include("config.include RSpec::Rails::RequestExampleGroup, type: :feature")
82
80
  expect(File.read(rails_root / "spec" / "rails_helper.rb")).to include("require 'stitches/spec'")
83
81
  expect(File.read(rails_root / "spec" / "rails_helper.rb")).to include("require 'rspec_api_documentation'")
84
- expect(File.read(rails_root / "config" / "initializers" / "apitome.rb")).to include("config.mount_at = nil")
85
- expect(File.read(rails_root / "config" / "initializers" / "apitome.rb")).to include("config.title = 'Service Documentation'")
86
82
  expect(File.read(rails_root / "app" / "controllers" / "api" / "api_controller.rb")).to include("rescue_from StandardError")
87
83
  expect(File.read(rails_root / "app" / "controllers" / "api" / "api_controller.rb")).to include("rescue_from ActiveRecord::RecordNotFound")
88
84
 
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.2.0.RC2
4
+ version: 4.2.2
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-08-10 00:00:00.000000000 Z
14
+ date: 2021-10-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -251,7 +251,6 @@ files:
251
251
  - spec/fake_app/db/schema_modern.rb
252
252
  - spec/fake_app/db/seeds.rb
253
253
  - spec/fake_app/db/test.sqlite3
254
- - spec/fake_app/doc/api.md
255
254
  - spec/fake_app/lib/tasks/generate_api_key.rake
256
255
  - spec/fake_app/public/404.html
257
256
  - spec/fake_app/public/422.html
@@ -289,11 +288,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
289
288
  version: '0'
290
289
  required_rubygems_version: !ruby/object:Gem::Requirement
291
290
  requirements:
292
- - - ">"
291
+ - - ">="
293
292
  - !ruby/object:Gem::Version
294
- version: 1.3.1
293
+ version: '0'
295
294
  requirements: []
296
- rubygems_version: 3.2.20
295
+ rubygems_version: 3.1.4
297
296
  signing_key:
298
297
  specification_version: 4
299
298
  summary: You'll be in stitches at how easy it is to create a service at Stitch Fix
@@ -352,7 +351,6 @@ test_files:
352
351
  - spec/fake_app/db/schema_modern.rb
353
352
  - spec/fake_app/db/seeds.rb
354
353
  - spec/fake_app/db/test.sqlite3
355
- - spec/fake_app/doc/api.md
356
354
  - spec/fake_app/lib/tasks/generate_api_key.rake
357
355
  - spec/fake_app/public/404.html
358
356
  - spec/fake_app/public/422.html
@@ -1,4 +0,0 @@
1
- Apitome Documentation
2
- =====================
3
-
4
- This file was automatically generated, and can be found at `doc/api.md`.