punk 0.3.6 → 0.4.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.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.rubocop.yml +1091 -93
  4. data/.standard.yml +2 -0
  5. data/Gemfile +60 -60
  6. data/Gemfile.lock +22 -17
  7. data/README.md +7 -3
  8. data/Rakefile +9 -7
  9. data/VERSION +1 -1
  10. data/app/migrations/001_lets_punk.rb +1 -1
  11. data/app/routes/hello.rb +1 -1
  12. data/bin/punk +5 -5
  13. data/lib/punk.rb +7 -7
  14. data/lib/punk/actions/sessions/create.rb +3 -3
  15. data/lib/punk/actions/sessions/verify.rb +2 -2
  16. data/lib/punk/commands/auth.rb +4 -4
  17. data/lib/punk/commands/generate.rb +5 -5
  18. data/lib/punk/commands/http.rb +4 -4
  19. data/lib/punk/commands/list.rb +10 -10
  20. data/lib/punk/core/app.rb +41 -41
  21. data/lib/punk/core/boot.rb +5 -5
  22. data/lib/punk/core/cli.rb +3 -3
  23. data/lib/punk/core/commander.rb +28 -28
  24. data/lib/punk/core/commands.rb +8 -8
  25. data/lib/punk/core/env.rb +27 -27
  26. data/lib/punk/core/exec.rb +8 -8
  27. data/lib/punk/core/interface.rb +19 -19
  28. data/lib/punk/core/load.rb +2 -2
  29. data/lib/punk/core/logger.rb +3 -3
  30. data/lib/punk/core/monkey.rb +1 -1
  31. data/lib/punk/core/pry.rb +2 -2
  32. data/lib/punk/core/settings.rb +4 -4
  33. data/lib/punk/core/version.rb +1 -1
  34. data/lib/punk/core/worker.rb +6 -6
  35. data/lib/punk/framework/all.rb +8 -8
  36. data/lib/punk/framework/model.rb +6 -5
  37. data/lib/punk/framework/plugins/all.rb +1 -1
  38. data/lib/punk/framework/plugins/validation.rb +8 -8
  39. data/lib/punk/framework/service.rb +5 -3
  40. data/lib/punk/framework/worker.rb +3 -3
  41. data/lib/punk/helpers/all.rb +5 -5
  42. data/lib/punk/helpers/loggable.rb +3 -3
  43. data/lib/punk/helpers/publishable.rb +1 -1
  44. data/lib/punk/helpers/renderable.rb +10 -10
  45. data/lib/punk/helpers/validatable.rb +7 -6
  46. data/lib/punk/migrations/001_punk.rb +12 -12
  47. data/lib/punk/models/group.rb +1 -1
  48. data/lib/punk/models/identity.rb +1 -1
  49. data/lib/punk/models/session.rb +7 -7
  50. data/lib/punk/models/tenant.rb +1 -1
  51. data/lib/punk/models/user.rb +2 -2
  52. data/lib/punk/plugins/all.rb +2 -2
  53. data/lib/punk/plugins/cors.rb +2 -2
  54. data/lib/punk/plugins/ssl.rb +1 -1
  55. data/lib/punk/routes/groups.rb +1 -1
  56. data/lib/punk/routes/plivo.rb +1 -1
  57. data/lib/punk/routes/sessions.rb +2 -2
  58. data/lib/punk/routes/swagger.rb +2 -2
  59. data/lib/punk/routes/tenants.rb +1 -1
  60. data/lib/punk/routes/users.rb +1 -1
  61. data/lib/punk/services/challenge_claim.rb +5 -5
  62. data/lib/punk/services/generate_swagger.rb +6 -6
  63. data/lib/punk/services/prove_claim.rb +1 -1
  64. data/lib/punk/startup/cache.rb +3 -3
  65. data/lib/punk/startup/database.rb +4 -4
  66. data/lib/punk/startup/environment.rb +6 -6
  67. data/lib/punk/startup/logger.rb +2 -2
  68. data/lib/punk/startup/task.rb +5 -5
  69. data/lib/punk/views/fail.rb +2 -2
  70. data/lib/punk/views/groups/list.rb +2 -2
  71. data/lib/punk/views/info.rb +2 -2
  72. data/lib/punk/views/plivo_store.rb +2 -2
  73. data/lib/punk/views/sessions/list.rb +2 -2
  74. data/lib/punk/views/sessions/pending.rb +2 -2
  75. data/lib/punk/views/tenants/list.rb +2 -2
  76. data/lib/punk/views/users/list.rb +2 -2
  77. data/lib/punk/views/users/show.rb +2 -2
  78. data/lib/punk/workers/geocode_session_worker.rb +3 -3
  79. data/lib/punk/workers/identify_session_worker.rb +1 -1
  80. data/lib/punk/workers/send_email_worker.rb +3 -3
  81. data/lib/punk/workers/send_sms_worker.rb +3 -3
  82. data/punk.gemspec +8 -4
  83. data/spec/actions/groups/punk/list_groups_action_spec.rb +9 -9
  84. data/spec/actions/sessions/punk/clear_session_action_spec.rb +11 -11
  85. data/spec/actions/sessions/punk/create_session_action_spec.rb +9 -9
  86. data/spec/actions/sessions/punk/list_sessions_action_spec.rb +8 -8
  87. data/spec/actions/sessions/punk/verify_session_action_spec.rb +24 -24
  88. data/spec/actions/tenants/punk/list_tenants_action_spec.rb +6 -6
  89. data/spec/actions/users/punk/list_group_users_action_spec.rb +6 -6
  90. data/spec/actions/users/punk/list_tenant_users_action_spec.rb +6 -6
  91. data/spec/factories/group.rb +1 -1
  92. data/spec/factories/group_user_metadata.rb +1 -1
  93. data/spec/factories/identity.rb +4 -4
  94. data/spec/factories/session.rb +1 -1
  95. data/spec/factories/tenant.rb +1 -1
  96. data/spec/factories/tenant_user_metadata.rb +1 -1
  97. data/spec/factories/user.rb +1 -1
  98. data/spec/lib/commands/generate_spec.rb +2 -2
  99. data/spec/lib/commands/list_spec.rb +2 -2
  100. data/spec/lib/commands/swagger_spec.rb +2 -2
  101. data/spec/lib/engine/punk_env_spec.rb +4 -4
  102. data/spec/lib/engine/punk_exec_spec.rb +2 -2
  103. data/spec/lib/engine/punk_init_spec.rb +2 -2
  104. data/spec/lib/engine/punk_store_spec.rb +2 -2
  105. data/spec/models/punk/group_spec.rb +4 -4
  106. data/spec/models/punk/group_user_metadata_spec.rb +2 -2
  107. data/spec/models/punk/identity_spec.rb +17 -17
  108. data/spec/models/punk/session_spec.rb +4 -4
  109. data/spec/models/punk/tenant_spec.rb +3 -3
  110. data/spec/models/punk/tenant_user_metadata_spec.rb +2 -2
  111. data/spec/models/punk/user_spec.rb +9 -9
  112. data/spec/routes/groups/get_groups_spec.rb +4 -4
  113. data/spec/routes/plivo/get_plivo_spec.rb +1 -1
  114. data/spec/routes/sessions/delete_session_spec.rb +1 -1
  115. data/spec/routes/sessions/get_sessions_spec.rb +5 -5
  116. data/spec/routes/sessions/patch_session_spec.rb +1 -1
  117. data/spec/routes/sessions/post_session_spec.rb +1 -1
  118. data/spec/routes/swagger/get_swagger_spec.rb +1 -1
  119. data/spec/routes/tenants/get_tenants_spec.rb +5 -5
  120. data/spec/routes/users/get_users_spec.rb +6 -6
  121. data/spec/services/punk/challenge_claim_service_spec.rb +2 -2
  122. data/spec/services/punk/create_identities_service_spec.rb +1 -1
  123. data/spec/services/punk/generate_swagger_service_spec.rb +2 -2
  124. data/spec/services/punk/prove_claim_service_spec.rb +2 -2
  125. data/spec/services/punk/secret_service_spec.rb +2 -2
  126. data/spec/spec_helper.rb +27 -27
  127. data/spec/views/punk/plivo_store_spec.rb +2 -2
  128. data/spec/views/sessions/punk/list_sessions_view_spec.rb +2 -2
  129. data/spec/views/sessions/punk/pending_session_view_spec.rb +2 -2
  130. data/spec/views/tenants/punk/list_tenants_view_spec.rb +2 -2
  131. data/spec/views/users/punk/list_groups_view_spec.rb +2 -2
  132. data/spec/views/users/punk/list_users_view_spec.rb +2 -2
  133. data/spec/workers/punk/geocode_session_worker_spec.rb +2 -2
  134. data/spec/workers/punk/identify_session_worker_spec.rb +3 -3
  135. data/spec/workers/punk/send_email_worker_spec.rb +1 -1
  136. metadata +18 -3
@@ -3,17 +3,17 @@
3
3
  describe PUNK, "GET /users" do
4
4
  include_context "Punk"
5
5
 
6
- context 'when the user is not authenticated' do
6
+ context "when the user is not authenticated" do
7
7
  before do
8
- get '/users'
8
+ get "/users"
9
9
  end
10
10
 
11
11
  it { is_expected.not_to be_successful }
12
12
  end
13
13
 
14
- context 'when the user is authenticated' do
14
+ context "when the user is authenticated" do
15
15
  let(:tenant) { create(:tenant) }
16
- let(:identity) { create(:identity, claim_type: 'phone') }
16
+ let(:identity) { create(:identity, claim_type: "phone") }
17
17
  let(:group) { create(:group, tenant: tenant) }
18
18
  let(:tenant_user) { create(:user) }
19
19
  let(:group_user) { create(:user) }
@@ -31,7 +31,7 @@ describe PUNK, "GET /users" do
31
31
  logout
32
32
  end
33
33
 
34
- context 'without a group' do
34
+ context "without a group" do
35
35
  before do
36
36
  get "/users?tenant_id=#{tenant.id}"
37
37
  end
@@ -44,7 +44,7 @@ describe PUNK, "GET /users" do
44
44
  end
45
45
  end
46
46
 
47
- context 'with a group' do
47
+ context "with a group" do
48
48
  before do
49
49
  get "/users?tenant_id=#{tenant.id}&group_id=#{group.id}"
50
50
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::ChallengeClaimService do
4
- context 'with no specs written' do
5
- it 'displays a warning'
4
+ context "with no specs written" do
5
+ it "displays a warning"
6
6
  end
7
7
  end
@@ -6,7 +6,7 @@ describe PUNK::CreateIdentitiesService do
6
6
  create(:user, email: nil)
7
7
  end
8
8
 
9
- it 'creates identities for users that are missing them' do
9
+ it "creates identities for users that are missing them" do
10
10
  expect(PUNK::Identity.count).to eq(0)
11
11
  described_class.run
12
12
  expect(PUNK::Identity.count).to eq(2)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::GenerateSwaggerService do
4
- context 'with no specs written' do
5
- it 'displays a warning'
4
+ context "with no specs written" do
5
+ it "displays a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::ProveClaimService do
4
- context 'with no specs written' do
5
- it 'displays a warning'
4
+ context "with no specs written" do
5
+ it "displays a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::SecretService do
4
- context 'with no specs written' do
5
- it 'displays a warning'
4
+ context "with no specs written" do
5
+ it "displays a warning"
6
6
  end
7
7
  end
data/spec/spec_helper.rb CHANGED
@@ -1,46 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'simplecov'
4
- require 'coveralls'
3
+ require "simplecov"
4
+ require "coveralls"
5
5
  SimpleCov.start do
6
- add_filter 'spec'
7
- add_filter 'lib/punk/commands/auth.rb'
8
- add_filter 'lib/punk/commands/generate.rb'
9
- add_filter 'lib/punk/commands/http.rb'
10
- add_filter 'lib/punk/commands/list.rb'
11
- add_filter 'lib/punk/core/commands.rb'
12
- add_filter 'lib/punk/framework/command.rb'
13
- add_filter 'lib/punk/plugins/cors.rb'
14
- add_filter 'lib/punk/plugins/ssl.rb'
15
- add_filter 'lib/punk/startup/logger.rb'
6
+ add_filter "spec"
7
+ add_filter "lib/punk/commands/auth.rb"
8
+ add_filter "lib/punk/commands/generate.rb"
9
+ add_filter "lib/punk/commands/http.rb"
10
+ add_filter "lib/punk/commands/list.rb"
11
+ add_filter "lib/punk/core/commands.rb"
12
+ add_filter "lib/punk/framework/command.rb"
13
+ add_filter "lib/punk/plugins/cors.rb"
14
+ add_filter "lib/punk/plugins/ssl.rb"
15
+ add_filter "lib/punk/startup/logger.rb"
16
16
  end
17
17
  Coveralls.wear!
18
18
 
19
- require_relative '../lib/punk'
19
+ require_relative "../lib/punk"
20
20
 
21
- require 'factory_bot'
22
- require 'faker'
23
- require 'timecop'
24
- require 'securerandom'
25
- require 'vcr'
26
- require 'rack/test'
21
+ require "factory_bot"
22
+ require "faker"
23
+ require "timecop"
24
+ require "securerandom"
25
+ require "vcr"
26
+ require "rack/test"
27
27
 
28
- Faker::Config.locale = 'en-US'
28
+ Faker::Config.locale = "en-US"
29
29
 
30
30
  FactoryBot.use_parent_strategy = false
31
31
 
32
32
  VCR.configure do |c|
33
33
  c.ignore_localhost = true
34
- c.cassette_library_dir = 'spec/vcr_cassettes'
34
+ c.cassette_library_dir = "spec/vcr_cassettes"
35
35
  c.hook_into :webmock
36
36
  c.configure_rspec_metadata!
37
37
  end
38
38
 
39
- PUNK.init(task: 'spec', config: { app: { name: 'Punk Test' } }).exec
39
+ PUNK.init(task: "spec", config: {app: {name: "Punk Test"}}).exec
40
40
 
41
- Sidekiq.logger = SemanticLogger['PUNK::SKQ']
41
+ Sidekiq.logger = SemanticLogger["PUNK::SKQ"]
42
42
 
43
- RSpec.shared_context 'Punk' do # rubocop:disable RSpec/ContextWording
43
+ RSpec.shared_context "Punk" do # rubocop:disable RSpec/ContextWording
44
44
  include Rack::Test::Methods
45
45
 
46
46
  subject { last_response }
@@ -57,7 +57,7 @@ RSpec.shared_context 'Punk' do # rubocop:disable RSpec/ContextWording
57
57
  "PATH_INFO" => "/sessions",
58
58
  "CONTENT_TYPE" => "text/json",
59
59
  "SCRIPT_NAME" => "",
60
- "rack.input" => StringIO.new({ claim: claim }.to_json)
60
+ "rack.input" => StringIO.new({claim: claim}.to_json)
61
61
  )
62
62
  response = ActiveSupport::JSON.decode(response[-1].first).deep_symbolize_keys
63
63
  slug = response[:slug]
@@ -68,7 +68,7 @@ RSpec.shared_context 'Punk' do # rubocop:disable RSpec/ContextWording
68
68
  "PATH_INFO" => "/sessions/#{slug}",
69
69
  "CONTENT_TYPE" => "text/json",
70
70
  "SCRIPT_NAME" => "",
71
- "rack.input" => StringIO.new({ secret: sms[:body][-7..-2] }.to_json)
71
+ "rack.input" => StringIO.new({secret: sms[:body][-7..-2]}.to_json)
72
72
  )
73
73
  end
74
74
 
@@ -84,7 +84,7 @@ end
84
84
 
85
85
  module Helpers
86
86
  def valid_uuid?(data)
87
- data.split('-').map { |s| Integer(s, 16) }.length == 5
87
+ data.split("-").map { |s| Integer(s, 16) }.length == 5
88
88
  end
89
89
  end
90
90
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::PlivoStore do
4
- context 'when no spec has been written' do
5
- it 'shows a warning'
4
+ context "when no spec has been written" do
5
+ it "shows a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::ListSessionsView do
4
- context 'when no spec has been written' do
5
- it 'shows a warning'
4
+ context "when no spec has been written" do
5
+ it "shows a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::PendingSessionView do
4
- context 'when no spec has been written' do
5
- it 'shows a warning'
4
+ context "when no spec has been written" do
5
+ it "shows a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::ListTenantsView do
4
- context 'when no spec has been written' do
5
- it 'shows a warning'
4
+ context "when no spec has been written" do
5
+ it "shows a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::ListGroupsView do
4
- context 'when no spec has been written' do
5
- it 'shows a warning'
4
+ context "when no spec has been written" do
5
+ it "shows a warning"
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::ListUsersView do
4
- context 'when no spec has been written' do
5
- it 'shows a warning'
4
+ context "when no spec has been written" do
5
+ it "shows a warning"
6
6
  end
7
7
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::GeocodeSessionWorker, :vcr do
4
- let(:remote_addr) { '42.221.129.61' }
4
+ let(:remote_addr) { "42.221.129.61" }
5
5
  let(:session) { create(:session, remote_addr: remote_addr) }
6
6
 
7
- it 'updates the session data' do
7
+ it "updates the session data" do
8
8
  expect(session.data).to eq({})
9
9
  described_class.perform_async(session_id: session.id)
10
10
  described_class.drain
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe PUNK::IdentifySessionWorker, :vcr do
4
- let(:user_agent) { 'Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0' }
5
- let(:remote_addr) { '92.177.45.168' }
4
+ let(:user_agent) { "Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0" }
5
+ let(:remote_addr) { "92.177.45.168" }
6
6
  let(:session) { create(:session, user_agent: user_agent, remote_addr: remote_addr) }
7
7
 
8
- it 'updates the session data' do
8
+ it "updates the session data" do
9
9
  expect(session.data).to eq({})
10
10
  described_class.perform_async(session_id: session.id)
11
11
  described_class.drain
@@ -7,7 +7,7 @@ describe PUNK::SendEmailWorker do
7
7
  let(:template) { Faker::Alphanumeric.alpha }
8
8
 
9
9
  before do
10
- require 'mailgun-ruby'
10
+ require "mailgun-ruby"
11
11
  Mailgun::Client.deliveries.clear
12
12
  end
13
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: punk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lloyd Kranzky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-02 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -654,6 +654,20 @@ dependencies:
654
654
  - - "~>"
655
655
  - !ruby/object:Gem::Version
656
656
  version: '2.5'
657
+ - !ruby/object:Gem::Dependency
658
+ name: standard
659
+ requirement: !ruby/object:Gem::Requirement
660
+ requirements:
661
+ - - "~>"
662
+ - !ruby/object:Gem::Version
663
+ version: '1.0'
664
+ type: :development
665
+ prerelease: false
666
+ version_requirements: !ruby/object:Gem::Requirement
667
+ requirements:
668
+ - - "~>"
669
+ - !ruby/object:Gem::Version
670
+ version: '1.0'
657
671
  description: ''
658
672
  email: lloyd@kranzky.com
659
673
  executables:
@@ -671,6 +685,7 @@ files:
671
685
  - ".rgignore"
672
686
  - ".rspec"
673
687
  - ".rubocop.yml"
688
+ - ".standard.yml"
674
689
  - Gemfile
675
690
  - Gemfile.lock
676
691
  - LICENSE
@@ -875,7 +890,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
875
890
  requirements:
876
891
  - - ">="
877
892
  - !ruby/object:Gem::Version
878
- version: '2.1'
893
+ version: '2.6'
879
894
  required_rubygems_version: !ruby/object:Gem::Requirement
880
895
  requirements:
881
896
  - - ">="