punk 0.3.6 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="