punk 0.0.3 → 0.2.0

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +9 -0
  3. data/.github/workflows/ship.yml +28 -0
  4. data/.github/workflows/test.yml +45 -0
  5. data/.rdoc_options +23 -0
  6. data/.rgignore +1 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +243 -0
  9. data/Gemfile +6 -6
  10. data/Gemfile.lock +18 -30
  11. data/README.md +8 -0
  12. data/Rakefile +7 -9
  13. data/VERSION +1 -1
  14. data/app/migrations/001_lets_punk.rb +3 -0
  15. data/app/routes/hello.rb +4 -0
  16. data/bin/punk +0 -1
  17. data/env/.gitignore +3 -0
  18. data/env/spec/test.sh +3 -0
  19. data/env/test.sh +5 -0
  20. data/lib/punk/actions/.keep +0 -0
  21. data/lib/punk/actions/groups/list.rb +24 -0
  22. data/lib/punk/actions/sessions/clear.rb +21 -0
  23. data/lib/punk/actions/sessions/create.rb +64 -0
  24. data/lib/punk/actions/sessions/list.rb +18 -0
  25. data/lib/punk/actions/sessions/verify.rb +24 -0
  26. data/lib/punk/actions/tenants/list.rb +18 -0
  27. data/lib/punk/actions/users/list_group.rb +18 -0
  28. data/lib/punk/actions/users/list_tenant.rb +18 -0
  29. data/lib/punk/actions/users/show.rb +18 -0
  30. data/lib/punk/commands/http.rb +3 -3
  31. data/lib/punk/commands/list.rb +12 -6
  32. data/lib/punk/config/defaults.json +3 -0
  33. data/lib/punk/config/schema.json +3 -0
  34. data/lib/punk/core/app.rb +6 -8
  35. data/lib/punk/core/commander.rb +9 -6
  36. data/lib/punk/core/exec.rb +2 -0
  37. data/lib/punk/core/load.rb +0 -1
  38. data/lib/punk/framework/command.rb +5 -1
  39. data/lib/punk/framework/plugins/validation.rb +0 -14
  40. data/lib/punk/framework/runnable.rb +1 -1
  41. data/lib/punk/helpers/loggable.rb +1 -1
  42. data/lib/punk/migrations/001_punk.rb +103 -0
  43. data/lib/punk/models/.keep +0 -0
  44. data/lib/punk/models/group.rb +20 -0
  45. data/lib/punk/models/group_user_metadata.rb +17 -0
  46. data/lib/punk/models/identity.rb +29 -0
  47. data/lib/punk/models/session.rb +89 -0
  48. data/lib/punk/models/tenant.rb +19 -0
  49. data/lib/punk/models/tenant_user_metadata.rb +17 -0
  50. data/lib/punk/models/user.rb +31 -0
  51. data/lib/punk/routes/groups.rb +31 -0
  52. data/lib/punk/routes/plivo.rb +4 -0
  53. data/lib/punk/routes/sessions.rb +108 -0
  54. data/lib/punk/routes/swagger.rb +9 -0
  55. data/lib/punk/routes/tenants.rb +29 -0
  56. data/lib/punk/routes/users.rb +36 -0
  57. data/lib/punk/services/.keep +0 -0
  58. data/lib/punk/services/challenge_claim.rb +46 -0
  59. data/lib/punk/services/create_identities.rb +25 -0
  60. data/lib/punk/services/generate_swagger.rb +25 -0
  61. data/lib/punk/services/prove_claim.rb +29 -0
  62. data/lib/punk/services/secret.rb +9 -0
  63. data/lib/punk/templates/groups/list.jbuilder +7 -0
  64. data/lib/punk/templates/plivo.slim +16 -0
  65. data/lib/punk/templates/sessions/list.jbuilder +6 -0
  66. data/lib/punk/templates/sessions/pending.jbuilder +4 -0
  67. data/lib/punk/templates/tenants/list.jbuilder +7 -0
  68. data/lib/punk/templates/tenants/list.slim +8 -0
  69. data/lib/punk/templates/users/list.jbuilder +7 -0
  70. data/lib/punk/templates/users/list.rcsv +4 -0
  71. data/lib/punk/templates/users/show.jbuilder +5 -0
  72. data/lib/punk/views/groups/list.rb +22 -0
  73. data/lib/punk/views/plivo_store.rb +15 -0
  74. data/lib/punk/views/sessions/list.rb +22 -0
  75. data/lib/punk/views/sessions/pending.rb +28 -0
  76. data/lib/punk/views/tenants/list.rb +22 -0
  77. data/lib/punk/views/users/list.rb +22 -0
  78. data/lib/punk/views/users/show.rb +22 -0
  79. data/lib/punk/workers/.keep +0 -0
  80. data/lib/punk/workers/expire_sessions.rb +9 -0
  81. data/lib/punk/workers/geocode_session_worker.rb +48 -0
  82. data/lib/punk/workers/identify_session_worker.rb +45 -0
  83. data/lib/punk/workers/secret.rb +18 -0
  84. data/lib/punk/workers/send_email_worker.rb +51 -0
  85. data/lib/punk/workers/send_sms_worker.rb +40 -0
  86. data/punk.gemspec +149 -16
  87. data/schema.psql +345 -0
  88. data/spec/actions/groups/punk/list_groups_action_spec.rb +36 -0
  89. data/spec/actions/sessions/punk/clear_session_action_spec.rb +29 -0
  90. data/spec/actions/sessions/punk/create_session_action_spec.rb +33 -0
  91. data/spec/actions/sessions/punk/list_sessions_action_spec.rb +26 -0
  92. data/spec/actions/sessions/punk/verify_session_action_spec.rb +59 -0
  93. data/spec/actions/tenants/punk/list_tenants_action_spec.rb +25 -0
  94. data/spec/actions/users/punk/list_group_users_action_spec.rb +26 -0
  95. data/spec/actions/users/punk/list_tenant_users_action_spec.rb +26 -0
  96. data/spec/factories/group.rb +12 -0
  97. data/spec/factories/group_user_metadata.rb +10 -0
  98. data/spec/factories/identity.rb +19 -0
  99. data/spec/factories/session.rb +12 -0
  100. data/spec/factories/tenant.rb +10 -0
  101. data/spec/factories/tenant_user_metadata.rb +10 -0
  102. data/spec/factories/user.rb +12 -0
  103. data/spec/lib/commands/auth_spec.rb +11 -0
  104. data/spec/lib/commands/generate_spec.rb +7 -0
  105. data/spec/lib/commands/http_spec.rb +23 -0
  106. data/spec/lib/commands/list_spec.rb +7 -0
  107. data/spec/lib/commands/swagger_spec.rb +7 -0
  108. data/spec/lib/engine/punk_env_spec.rb +13 -0
  109. data/spec/lib/engine/punk_exec_spec.rb +9 -0
  110. data/spec/lib/engine/punk_init_spec.rb +9 -0
  111. data/spec/lib/engine/punk_store_spec.rb +10 -0
  112. data/spec/lib/punk.env +7 -0
  113. data/spec/models/punk/group_spec.rb +50 -0
  114. data/spec/models/punk/group_user_metadata_spec.rb +61 -0
  115. data/spec/models/punk/identity_spec.rb +61 -0
  116. data/spec/models/punk/session_spec.rb +156 -0
  117. data/spec/models/punk/tenant_spec.rb +51 -0
  118. data/spec/models/punk/tenant_user_metadata_spec.rb +61 -0
  119. data/spec/models/punk/user_spec.rb +115 -0
  120. data/spec/routes/groups/get_groups_spec.rb +33 -0
  121. data/spec/routes/plivo/get_plivo_spec.rb +11 -0
  122. data/spec/routes/sessions/delete_session_spec.rb +11 -0
  123. data/spec/routes/sessions/get_sessions_spec.rb +30 -0
  124. data/spec/routes/sessions/patch_session_spec.rb +11 -0
  125. data/spec/routes/sessions/post_session_spec.rb +11 -0
  126. data/spec/routes/swagger/get_swagger_spec.rb +12 -0
  127. data/spec/routes/tenants/get_tenants_spec.rb +31 -0
  128. data/spec/routes/users/get_users_spec.rb +60 -0
  129. data/spec/services/punk/challenge_claim_service_spec.rb +7 -0
  130. data/spec/services/punk/create_identities_service_spec.rb +14 -0
  131. data/spec/services/punk/generate_swagger_service_spec.rb +7 -0
  132. data/spec/services/punk/prove_claim_service_spec.rb +7 -0
  133. data/spec/services/punk/secret_service_spec.rb +7 -0
  134. data/spec/spec_helper.rb +122 -0
  135. data/spec/vcr_cassettes/PUNK_GeocodeSessionWorker/updates_the_session_data.yml +57 -0
  136. data/spec/vcr_cassettes/PUNK_IdentifySessionWorker/updates_the_session_data.yml +112 -0
  137. data/spec/views/punk/plivo_store_spec.rb +7 -0
  138. data/spec/views/sessions/punk/list_sessions_view_spec.rb +7 -0
  139. data/spec/views/sessions/punk/pending_session_view_spec.rb +7 -0
  140. data/spec/views/tenants/punk/list_tenants_view_spec.rb +7 -0
  141. data/spec/views/users/punk/list_groups_view_spec.rb +7 -0
  142. data/spec/views/users/punk/list_users_view_spec.rb +7 -0
  143. data/spec/workers/punk/expire_sessions_worker_spec.rb +31 -0
  144. data/spec/workers/punk/geocode_session_worker_spec.rb +14 -0
  145. data/spec/workers/punk/identify_session_worker_spec.rb +15 -0
  146. data/spec/workers/punk/secret_worker_spec.rb +20 -0
  147. data/spec/workers/punk/send_email_worker_spec.rb +46 -0
  148. data/spec/workers/punk/send_sms_worker_spec.rb +33 -0
  149. metadata +169 -13
  150. data/lib/punk/views/all.rb +0 -4
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::PlivoStore do
4
+ context 'when no spec has been written' do
5
+ it 'shows a warning'
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::ListSessionsView do
4
+ context 'when no spec has been written' do
5
+ it 'shows a warning'
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::PendingSessionView do
4
+ context 'when no spec has been written' do
5
+ it 'shows a warning'
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::ListTenantsView do
4
+ context 'when no spec has been written' do
5
+ it 'shows a warning'
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::ListGroupsView do
4
+ context 'when no spec has been written' do
5
+ it 'shows a warning'
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::ListUsersView do
4
+ context 'when no spec has been written' do
5
+ it 'shows a warning'
6
+ end
7
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::ExpireSessionsWorker do
4
+ before do
5
+ create(:session, state: :pending)
6
+ create(:session, state: :active)
7
+ end
8
+
9
+ it "does not expires new pending" do
10
+ expect(PUNK::Session.count).to eq(2)
11
+ described_class.perform_async
12
+ described_class.drain
13
+ expect(PUNK::Session.expired.count).to eq(0)
14
+ end
15
+
16
+ it "expires pending sessions after five minutes" do
17
+ expect(PUNK::Session.pending.count).to eq(1)
18
+ Timecop.travel(5.minutes.from_now)
19
+ described_class.perform_async
20
+ described_class.drain
21
+ expect(PUNK::Session.pending.count).to eq(0)
22
+ end
23
+
24
+ it "expires unused active sessions after one month" do
25
+ expect(PUNK::Session.active.count).to eq(1)
26
+ Timecop.travel(32.days.from_now)
27
+ described_class.perform_async
28
+ described_class.drain
29
+ expect(PUNK::Session.expired.count).to eq(2)
30
+ end
31
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::GeocodeSessionWorker, :vcr do
4
+ let(:remote_addr) { '42.221.129.61' }
5
+ let(:session) { create(:session, remote_addr: remote_addr) }
6
+
7
+ it 'updates the session data' do
8
+ expect(session.data).to eq({})
9
+ described_class.perform_async(session_id: session.id)
10
+ described_class.drain
11
+ session.reload
12
+ expect(session.data).not_to eq({})
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
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' }
6
+ let(:session) { create(:session, user_agent: user_agent, remote_addr: remote_addr) }
7
+
8
+ it 'updates the session data' do
9
+ expect(session.data).to eq({})
10
+ described_class.perform_async(session_id: session.id)
11
+ described_class.drain
12
+ session.reload
13
+ expect(session.data.to_h).not_to eq({})
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::SecretWorker do
4
+ let(:name) { Faker::Alphanumeric.alpha }
5
+
6
+ it "is valid with valid attributes" do
7
+ expect { described_class.perform_async(name: name) }.to change(described_class.jobs, :size).by(1)
8
+ expect { described_class.drain }.not_to raise_error
9
+ end
10
+
11
+ it "is invalid without a name" do
12
+ expect { described_class.perform_async }.to change(described_class.jobs, :size).by(1)
13
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
14
+ end
15
+
16
+ it "can be performed immediately" do
17
+ expect { described_class.perform_now(name: name) }.not_to raise_error
18
+ expect { described_class.perform_now }.to raise_error(PUNK::BadRequest, "validation failed")
19
+ end
20
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::SendEmailWorker do
4
+ let(:from) { Faker::Internet.email }
5
+ let(:to) { Faker::Internet.email }
6
+ let(:title) { Faker::Name.name }
7
+ let(:template) { Faker::Alphanumeric.alpha }
8
+
9
+ before do
10
+ require 'mailgun-ruby'
11
+ Mailgun::Client.deliveries.clear
12
+ end
13
+
14
+ it "is valid with valid attributes" do
15
+ expect { described_class.perform_async(from: from, to: to, subject: title, template: template) }.to change(described_class.jobs, :size).by(1)
16
+ expect { described_class.drain }.not_to raise_error
17
+ end
18
+
19
+ it "is invalid without a from address" do
20
+ expect { described_class.perform_async(to: to, subject: title, template: template) }.to change(described_class.jobs, :size).by(1)
21
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
22
+ end
23
+
24
+ it "is invalid without a to address" do
25
+ expect { described_class.perform_async(from: from, subject: title, template: template) }.to change(described_class.jobs, :size).by(1)
26
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
27
+ end
28
+
29
+ it "is invalid without a subject" do
30
+ expect { described_class.perform_async(from: from, to: to, template: template) }.to change(described_class.jobs, :size).by(1)
31
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
32
+ end
33
+
34
+ it "is invalid without a template" do
35
+ expect { described_class.perform_async(from: from, to: to, subject: title) }.to change(described_class.jobs, :size).by(1)
36
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
37
+ end
38
+
39
+ it "sends an email" do
40
+ described_class.perform_async(from: from, to: to, subject: title, template: template)
41
+ described_class.drain
42
+ email = Mailgun::Client.deliveries.first
43
+ expect(email[:from]).to eq(from)
44
+ expect(email[:subject]).to eq(title)
45
+ end
46
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe PUNK::SendSmsWorker do
4
+ let(:to) { generate(:phone) }
5
+ let(:body) { Faker::Lorem.sentence }
6
+
7
+ before do
8
+ PUNK.cache.delete(:plivo)
9
+ end
10
+
11
+ it "is valid with valid attributes" do
12
+ expect { described_class.perform_async(to: to, body: body) }.to change(described_class.jobs, :size).by(1)
13
+ expect { described_class.drain }.not_to raise_error
14
+ end
15
+
16
+ it "is invalid without a to number" do
17
+ expect { described_class.perform_async(body: body) }.to change(described_class.jobs, :size).by(1)
18
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
19
+ end
20
+
21
+ it "is invalid without a message body" do
22
+ expect { described_class.perform_async(to: to) }.to change(described_class.jobs, :size).by(1)
23
+ expect { described_class.drain }.to raise_error(PUNK::BadRequest, "validation failed")
24
+ end
25
+
26
+ it "sends an sms" do
27
+ described_class.perform_async(to: to, body: body)
28
+ described_class.drain
29
+ sms = PUNK.cache.get(:plivo).first
30
+ expect(sms[:from]).to eq(PUNK.get.plivo.number)
31
+ expect(sms[:body]).to eq(body)
32
+ end
33
+ end
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.0.3
4
+ version: 0.2.0
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-01-08 00:00:00.000000000 Z
11
+ date: 2021-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -291,19 +291,19 @@ dependencies:
291
291
  - !ruby/object:Gem::Version
292
292
  version: '2.1'
293
293
  - !ruby/object:Gem::Dependency
294
- name: maxmind-db
294
+ name: ipstack
295
295
  requirement: !ruby/object:Gem::Requirement
296
296
  requirements:
297
297
  - - "~>"
298
298
  - !ruby/object:Gem::Version
299
- version: '1.1'
299
+ version: '0.1'
300
300
  type: :runtime
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
304
  - - "~>"
305
305
  - !ruby/object:Gem::Version
306
- version: '1.1'
306
+ version: '0.1'
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: rbnacl
309
309
  requirement: !ruby/object:Gem::Requirement
@@ -450,14 +450,14 @@ dependencies:
450
450
  requirements:
451
451
  - - "~>"
452
452
  - !ruby/object:Gem::Version
453
- version: '3.10'
453
+ version: '3.11'
454
454
  type: :runtime
455
455
  prerelease: false
456
456
  version_requirements: !ruby/object:Gem::Requirement
457
457
  requirements:
458
458
  - - "~>"
459
459
  - !ruby/object:Gem::Version
460
- version: '3.10'
460
+ version: '3.11'
461
461
  - !ruby/object:Gem::Dependency
462
462
  name: tilt-jbuilder
463
463
  requirement: !ruby/object:Gem::Requirement
@@ -515,19 +515,33 @@ dependencies:
515
515
  - !ruby/object:Gem::Version
516
516
  version: '6.1'
517
517
  - !ruby/object:Gem::Dependency
518
- name: sentry-raven
518
+ name: sentry-ruby
519
+ requirement: !ruby/object:Gem::Requirement
520
+ requirements:
521
+ - - "~>"
522
+ - !ruby/object:Gem::Version
523
+ version: '4.1'
524
+ type: :runtime
525
+ prerelease: false
526
+ version_requirements: !ruby/object:Gem::Requirement
527
+ requirements:
528
+ - - "~>"
529
+ - !ruby/object:Gem::Version
530
+ version: '4.1'
531
+ - !ruby/object:Gem::Dependency
532
+ name: sentry-sidekiq
519
533
  requirement: !ruby/object:Gem::Requirement
520
534
  requirements:
521
535
  - - "~>"
522
536
  - !ruby/object:Gem::Version
523
- version: '3.1'
537
+ version: '4.1'
524
538
  type: :runtime
525
539
  prerelease: false
526
540
  version_requirements: !ruby/object:Gem::Requirement
527
541
  requirements:
528
542
  - - "~>"
529
543
  - !ruby/object:Gem::Version
530
- version: '3.1'
544
+ version: '4.1'
531
545
  - !ruby/object:Gem::Dependency
532
546
  name: skylight
533
547
  requirement: !ruby/object:Gem::Requirement
@@ -556,6 +570,20 @@ dependencies:
556
570
  - - "~>"
557
571
  - !ruby/object:Gem::Version
558
572
  version: '2.18'
573
+ - !ruby/object:Gem::Dependency
574
+ name: bundler
575
+ requirement: !ruby/object:Gem::Requirement
576
+ requirements:
577
+ - - "~>"
578
+ - !ruby/object:Gem::Version
579
+ version: '1.17'
580
+ type: :development
581
+ prerelease: false
582
+ version_requirements: !ruby/object:Gem::Requirement
583
+ requirements:
584
+ - - "~>"
585
+ - !ruby/object:Gem::Version
586
+ version: '1.17'
559
587
  - !ruby/object:Gem::Dependency
560
588
  name: gemfile_updater
561
589
  requirement: !ruby/object:Gem::Requirement
@@ -650,14 +678,36 @@ extra_rdoc_files:
650
678
  - README.md
651
679
  files:
652
680
  - ".document"
681
+ - ".editorconfig"
682
+ - ".github/workflows/ship.yml"
683
+ - ".github/workflows/test.yml"
684
+ - ".rdoc_options"
685
+ - ".rgignore"
686
+ - ".rspec"
687
+ - ".rubocop.yml"
653
688
  - Gemfile
654
689
  - Gemfile.lock
655
690
  - LICENSE
656
691
  - README.md
657
692
  - Rakefile
658
693
  - VERSION
694
+ - app/migrations/001_lets_punk.rb
695
+ - app/routes/hello.rb
659
696
  - bin/punk
697
+ - env/.gitignore
698
+ - env/spec/test.sh
699
+ - env/test.sh
660
700
  - lib/punk.rb
701
+ - lib/punk/actions/.keep
702
+ - lib/punk/actions/groups/list.rb
703
+ - lib/punk/actions/sessions/clear.rb
704
+ - lib/punk/actions/sessions/create.rb
705
+ - lib/punk/actions/sessions/list.rb
706
+ - lib/punk/actions/sessions/verify.rb
707
+ - lib/punk/actions/tenants/list.rb
708
+ - lib/punk/actions/users/list_group.rb
709
+ - lib/punk/actions/users/list_tenant.rb
710
+ - lib/punk/actions/users/show.rb
661
711
  - lib/punk/commands/auth.rb
662
712
  - lib/punk/commands/generate.rb
663
713
  - lib/punk/commands/http.rb
@@ -701,9 +751,30 @@ files:
701
751
  - lib/punk/helpers/renderable.rb
702
752
  - lib/punk/helpers/swagger.rb
703
753
  - lib/punk/helpers/validatable.rb
754
+ - lib/punk/migrations/001_punk.rb
755
+ - lib/punk/models/.keep
756
+ - lib/punk/models/group.rb
757
+ - lib/punk/models/group_user_metadata.rb
758
+ - lib/punk/models/identity.rb
759
+ - lib/punk/models/session.rb
760
+ - lib/punk/models/tenant.rb
761
+ - lib/punk/models/tenant_user_metadata.rb
762
+ - lib/punk/models/user.rb
704
763
  - lib/punk/plugins/all.rb
705
764
  - lib/punk/plugins/cors.rb
706
765
  - lib/punk/plugins/ssl.rb
766
+ - lib/punk/routes/groups.rb
767
+ - lib/punk/routes/plivo.rb
768
+ - lib/punk/routes/sessions.rb
769
+ - lib/punk/routes/swagger.rb
770
+ - lib/punk/routes/tenants.rb
771
+ - lib/punk/routes/users.rb
772
+ - lib/punk/services/.keep
773
+ - lib/punk/services/challenge_claim.rb
774
+ - lib/punk/services/create_identities.rb
775
+ - lib/punk/services/generate_swagger.rb
776
+ - lib/punk/services/prove_claim.rb
777
+ - lib/punk/services/secret.rb
707
778
  - lib/punk/startup/cache.rb
708
779
  - lib/punk/startup/database.rb
709
780
  - lib/punk/startup/environment.rb
@@ -713,17 +784,101 @@ files:
713
784
  - lib/punk/templates/fail.rcsv
714
785
  - lib/punk/templates/fail.slim
715
786
  - lib/punk/templates/fail.xml.slim
787
+ - lib/punk/templates/groups/list.jbuilder
716
788
  - lib/punk/templates/info.jbuilder
717
789
  - lib/punk/templates/info.rcsv
718
790
  - lib/punk/templates/info.slim
719
791
  - lib/punk/templates/info.xml.slim
720
- - lib/punk/views/all.rb
792
+ - lib/punk/templates/plivo.slim
793
+ - lib/punk/templates/sessions/list.jbuilder
794
+ - lib/punk/templates/sessions/pending.jbuilder
795
+ - lib/punk/templates/tenants/list.jbuilder
796
+ - lib/punk/templates/tenants/list.slim
797
+ - lib/punk/templates/users/list.jbuilder
798
+ - lib/punk/templates/users/list.rcsv
799
+ - lib/punk/templates/users/show.jbuilder
721
800
  - lib/punk/views/fail.rb
801
+ - lib/punk/views/groups/list.rb
722
802
  - lib/punk/views/info.rb
803
+ - lib/punk/views/plivo_store.rb
804
+ - lib/punk/views/sessions/list.rb
805
+ - lib/punk/views/sessions/pending.rb
806
+ - lib/punk/views/tenants/list.rb
807
+ - lib/punk/views/users/list.rb
808
+ - lib/punk/views/users/show.rb
809
+ - lib/punk/workers/.keep
810
+ - lib/punk/workers/expire_sessions.rb
811
+ - lib/punk/workers/geocode_session_worker.rb
812
+ - lib/punk/workers/identify_session_worker.rb
813
+ - lib/punk/workers/secret.rb
814
+ - lib/punk/workers/send_email_worker.rb
815
+ - lib/punk/workers/send_sms_worker.rb
723
816
  - punk.gemspec
817
+ - schema.psql
818
+ - spec/actions/groups/punk/list_groups_action_spec.rb
819
+ - spec/actions/sessions/punk/clear_session_action_spec.rb
820
+ - spec/actions/sessions/punk/create_session_action_spec.rb
821
+ - spec/actions/sessions/punk/list_sessions_action_spec.rb
822
+ - spec/actions/sessions/punk/verify_session_action_spec.rb
823
+ - spec/actions/tenants/punk/list_tenants_action_spec.rb
824
+ - spec/actions/users/punk/list_group_users_action_spec.rb
825
+ - spec/actions/users/punk/list_tenant_users_action_spec.rb
826
+ - spec/factories/group.rb
827
+ - spec/factories/group_user_metadata.rb
828
+ - spec/factories/identity.rb
829
+ - spec/factories/session.rb
830
+ - spec/factories/tenant.rb
831
+ - spec/factories/tenant_user_metadata.rb
832
+ - spec/factories/user.rb
833
+ - spec/lib/commands/auth_spec.rb
834
+ - spec/lib/commands/generate_spec.rb
835
+ - spec/lib/commands/http_spec.rb
836
+ - spec/lib/commands/list_spec.rb
837
+ - spec/lib/commands/swagger_spec.rb
838
+ - spec/lib/engine/punk_env_spec.rb
839
+ - spec/lib/engine/punk_exec_spec.rb
840
+ - spec/lib/engine/punk_init_spec.rb
841
+ - spec/lib/engine/punk_store_spec.rb
842
+ - spec/lib/punk.env
843
+ - spec/models/punk/group_spec.rb
844
+ - spec/models/punk/group_user_metadata_spec.rb
845
+ - spec/models/punk/identity_spec.rb
846
+ - spec/models/punk/session_spec.rb
847
+ - spec/models/punk/tenant_spec.rb
848
+ - spec/models/punk/tenant_user_metadata_spec.rb
849
+ - spec/models/punk/user_spec.rb
850
+ - spec/routes/groups/get_groups_spec.rb
851
+ - spec/routes/plivo/get_plivo_spec.rb
852
+ - spec/routes/sessions/delete_session_spec.rb
853
+ - spec/routes/sessions/get_sessions_spec.rb
854
+ - spec/routes/sessions/patch_session_spec.rb
855
+ - spec/routes/sessions/post_session_spec.rb
856
+ - spec/routes/swagger/get_swagger_spec.rb
857
+ - spec/routes/tenants/get_tenants_spec.rb
858
+ - spec/routes/users/get_users_spec.rb
859
+ - spec/services/punk/challenge_claim_service_spec.rb
860
+ - spec/services/punk/create_identities_service_spec.rb
861
+ - spec/services/punk/generate_swagger_service_spec.rb
862
+ - spec/services/punk/prove_claim_service_spec.rb
863
+ - spec/services/punk/secret_service_spec.rb
864
+ - spec/spec_helper.rb
865
+ - spec/vcr_cassettes/PUNK_GeocodeSessionWorker/updates_the_session_data.yml
866
+ - spec/vcr_cassettes/PUNK_IdentifySessionWorker/updates_the_session_data.yml
867
+ - spec/views/punk/plivo_store_spec.rb
868
+ - spec/views/sessions/punk/list_sessions_view_spec.rb
869
+ - spec/views/sessions/punk/pending_session_view_spec.rb
870
+ - spec/views/tenants/punk/list_tenants_view_spec.rb
871
+ - spec/views/users/punk/list_groups_view_spec.rb
872
+ - spec/views/users/punk/list_users_view_spec.rb
873
+ - spec/workers/punk/expire_sessions_worker_spec.rb
874
+ - spec/workers/punk/geocode_session_worker_spec.rb
875
+ - spec/workers/punk/identify_session_worker_spec.rb
876
+ - spec/workers/punk/secret_worker_spec.rb
877
+ - spec/workers/punk/send_email_worker_spec.rb
878
+ - spec/workers/punk/send_sms_worker_spec.rb
724
879
  homepage: https://github.com/kranzky/punk
725
880
  licenses:
726
- - UNLICENSE
881
+ - Unlicense
727
882
  metadata: {}
728
883
  post_install_message:
729
884
  rdoc_options: []
@@ -740,7 +895,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
740
895
  - !ruby/object:Gem::Version
741
896
  version: '0'
742
897
  requirements: []
743
- rubygems_version: 3.0.9
898
+ rubyforge_project:
899
+ rubygems_version: 2.7.6.2
744
900
  signing_key:
745
901
  specification_version: 4
746
902
  summary: Punk! is an omakase web framework for rapid prototyping.