arcadex 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/db/migrate/20141020173616_add_max_uses_to_arcadex_tokens.rb +5 -0
  3. data/lib/arcadex/authentication.rb +45 -51
  4. data/lib/arcadex/create.rb +2 -1
  5. data/lib/arcadex/header.rb +8 -21
  6. data/lib/arcadex/version.rb +1 -1
  7. data/test/dummy/db/development.sqlite3 +0 -0
  8. data/test/dummy/db/schema.rb +2 -1
  9. data/test/dummy/db/test.sqlite3 +0 -0
  10. data/test/dummy/log/development.log +15 -0
  11. data/test/dummy/log/test.log +35 -0
  12. data/test/test_app/Gemfile +77 -0
  13. data/test/test_app/Gemfile.lock +281 -0
  14. data/test/test_app/README.md +1 -0
  15. data/test/test_app/Rakefile +6 -0
  16. data/test/test_app/app/admin/arcadex_token.rb +94 -0
  17. data/test/test_app/app/admin/dashboard.rb +69 -0
  18. data/test/test_app/app/admin/defcon_admin_user.rb +99 -0
  19. data/test/test_app/app/admin/people_user.rb +83 -0
  20. data/test/test_app/app/assets/javascripts/active_admin.js.coffee +1 -0
  21. data/test/test_app/app/assets/javascripts/application.js +16 -0
  22. data/test/test_app/app/assets/stylesheets/active_admin.css.scss +17 -0
  23. data/test/test_app/app/assets/stylesheets/application.css +13 -0
  24. data/test/test_app/app/controllers/api/v1/api_controller.rb +71 -0
  25. data/test/test_app/app/controllers/app_index_controller.rb +4 -0
  26. data/test/test_app/app/controllers/application_controller.rb +21 -0
  27. data/test/test_app/app/helpers/application_helper.rb +2 -0
  28. data/test/test_app/app/views/app_index/app.html.erb +0 -0
  29. data/test/test_app/app/views/layouts/app_index.html.erb +9 -0
  30. data/test/test_app/app/views/layouts/application.html.erb +14 -0
  31. data/test/test_app/bin/bundle +3 -0
  32. data/test/test_app/bin/rails +4 -0
  33. data/test/test_app/bin/rake +4 -0
  34. data/test/test_app/config.ru +4 -0
  35. data/test/test_app/config/application.rb +27 -0
  36. data/test/test_app/config/boot.rb +4 -0
  37. data/test/test_app/config/database.yml +25 -0
  38. data/test/test_app/config/environment.rb +5 -0
  39. data/test/test_app/config/environments/development.rb +29 -0
  40. data/test/test_app/config/environments/production.rb +80 -0
  41. data/test/test_app/config/environments/test.rb +36 -0
  42. data/test/test_app/config/initializers/active_admin.rb +252 -0
  43. data/test/test_app/config/initializers/backtrace_silencers.rb +7 -0
  44. data/test/test_app/config/initializers/filter_parameter_logging.rb +4 -0
  45. data/test/test_app/config/initializers/inflections.rb +16 -0
  46. data/test/test_app/config/initializers/mime_types.rb +5 -0
  47. data/test/test_app/config/initializers/secret_token.rb +12 -0
  48. data/test/test_app/config/initializers/session_store.rb +3 -0
  49. data/test/test_app/config/initializers/wrap_parameters.rb +14 -0
  50. data/test/test_app/config/locales/en.yml +23 -0
  51. data/test/test_app/config/routes.rb +66 -0
  52. data/test/test_app/config/schedule.rb +20 -0
  53. data/test/test_app/db/development.sqlite3 +0 -0
  54. data/test/test_app/db/migrate/20141016225515_create_active_admin_comments.rb +19 -0
  55. data/test/test_app/db/migrate/20141016225555_create_people_users.people.rb +14 -0
  56. data/test/test_app/db/migrate/20141016225556_create_arcadex_tokens.arcadex.rb +12 -0
  57. data/test/test_app/db/migrate/20141016225557_add_index_to_token.arcadex.rb +6 -0
  58. data/test/test_app/db/migrate/20141016225558_add_first_ip_address_to_arcadex_tokens.arcadex.rb +6 -0
  59. data/test/test_app/db/migrate/20141016225559_add_current_ip_address_to_arcadex_tokens.arcadex.rb +6 -0
  60. data/test/test_app/db/migrate/20141016225560_add_times_used_to_arcadex_tokens.arcadex.rb +6 -0
  61. data/test/test_app/db/migrate/20141016225561_add_expiration_minutes_to_arcadex_tokens.arcadex.rb +6 -0
  62. data/test/test_app/db/migrate/20141016225562_create_defcon_admin_users.defcon.rb +16 -0
  63. data/test/test_app/db/migrate/20141016225563_add_index_to_defcon_admin_users.defcon.rb +6 -0
  64. data/test/test_app/db/migrate/20141016225564_add_email_to_defcon_admin_users.defcon.rb +7 -0
  65. data/test/test_app/db/migrate/20141020173805_add_max_uses_to_arcadex_tokens.arcadex.rb +6 -0
  66. data/test/test_app/db/production.sqlite3 +0 -0
  67. data/test/test_app/db/schema.rb +73 -0
  68. data/test/test_app/db/seeds.rb +10 -0
  69. data/test/test_app/db/test.sqlite3 +0 -0
  70. data/test/test_app/engines/people/Gemfile +14 -0
  71. data/test/test_app/engines/people/Gemfile.lock +81 -0
  72. data/test/test_app/engines/people/MIT-LICENSE +20 -0
  73. data/test/test_app/engines/people/README.md +1 -0
  74. data/test/test_app/engines/people/Rakefile +34 -0
  75. data/test/test_app/engines/people/app/assets/javascripts/people/application.js +13 -0
  76. data/test/test_app/engines/people/app/assets/javascripts/people/users.js +2 -0
  77. data/test/test_app/engines/people/app/assets/stylesheets/people/application.css +13 -0
  78. data/test/test_app/engines/people/app/assets/stylesheets/people/users.css +4 -0
  79. data/test/test_app/engines/people/app/assets/stylesheets/scaffold.css +56 -0
  80. data/test/test_app/engines/people/app/controllers/people/api/v1/application_controller.rb +5 -0
  81. data/test/test_app/engines/people/app/controllers/people/api/v1/users_controller.rb +169 -0
  82. data/test/test_app/engines/people/app/controllers/people/application_controller.rb +4 -0
  83. data/test/test_app/engines/people/app/controllers/people/users_controller.rb +62 -0
  84. data/test/test_app/engines/people/app/helpers/people/application_helper.rb +4 -0
  85. data/test/test_app/engines/people/app/helpers/people/users_helper.rb +4 -0
  86. data/test/test_app/engines/people/app/models/people/user.rb +9 -0
  87. data/test/test_app/engines/people/app/models/people/v1/user.rb +32 -0
  88. data/test/test_app/engines/people/app/serializers/people/v1/user_serializer.rb +43 -0
  89. data/test/test_app/engines/people/app/views/layouts/people/default/application.html.erb +14 -0
  90. data/test/test_app/engines/people/app/views/people/users/_form.html.erb +29 -0
  91. data/test/test_app/engines/people/app/views/people/users/edit.html.erb +6 -0
  92. data/test/test_app/engines/people/app/views/people/users/index.html.erb +31 -0
  93. data/test/test_app/engines/people/app/views/people/users/new.html.erb +5 -0
  94. data/test/test_app/engines/people/app/views/people/users/show.html.erb +19 -0
  95. data/test/test_app/engines/people/bin/rails +12 -0
  96. data/test/test_app/engines/people/config/routes.rb +28 -0
  97. data/test/test_app/engines/people/db/migrate/20141016225548_create_people_users.rb +13 -0
  98. data/test/test_app/engines/people/lib/people.rb +4 -0
  99. data/test/test_app/engines/people/lib/people/engine.rb +5 -0
  100. data/test/test_app/engines/people/lib/people/version.rb +3 -0
  101. data/test/test_app/engines/people/lib/tasks/people_tasks.rake +4 -0
  102. data/test/test_app/engines/people/people.gemspec +33 -0
  103. data/test/test_app/engines/people/test/controllers/people/users_controller_test.rb +51 -0
  104. data/test/test_app/engines/people/test/dummy/README.rdoc +28 -0
  105. data/test/test_app/engines/people/test/dummy/Rakefile +6 -0
  106. data/test/test_app/engines/people/test/dummy/app/assets/javascripts/application.js +13 -0
  107. data/test/test_app/engines/people/test/dummy/app/assets/stylesheets/application.css +13 -0
  108. data/test/test_app/engines/people/test/dummy/app/controllers/application_controller.rb +5 -0
  109. data/test/test_app/engines/people/test/dummy/app/helpers/application_helper.rb +2 -0
  110. data/test/test_app/engines/people/test/dummy/app/views/layouts/application.html.erb +14 -0
  111. data/test/test_app/engines/people/test/dummy/bin/bundle +3 -0
  112. data/test/test_app/engines/people/test/dummy/bin/rails +4 -0
  113. data/test/test_app/engines/people/test/dummy/bin/rake +4 -0
  114. data/test/test_app/engines/people/test/dummy/config.ru +4 -0
  115. data/test/test_app/engines/people/test/dummy/config/application.rb +23 -0
  116. data/test/test_app/engines/people/test/dummy/config/boot.rb +5 -0
  117. data/test/test_app/engines/people/test/dummy/config/database.yml +25 -0
  118. data/test/test_app/engines/people/test/dummy/config/environment.rb +5 -0
  119. data/test/test_app/engines/people/test/dummy/config/environments/development.rb +29 -0
  120. data/test/test_app/engines/people/test/dummy/config/environments/production.rb +80 -0
  121. data/test/test_app/engines/people/test/dummy/config/environments/test.rb +36 -0
  122. data/test/test_app/engines/people/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  123. data/test/test_app/engines/people/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  124. data/test/test_app/engines/people/test/dummy/config/initializers/inflections.rb +16 -0
  125. data/test/test_app/engines/people/test/dummy/config/initializers/mime_types.rb +5 -0
  126. data/test/test_app/engines/people/test/dummy/config/initializers/secret_token.rb +12 -0
  127. data/test/test_app/engines/people/test/dummy/config/initializers/session_store.rb +3 -0
  128. data/test/test_app/engines/people/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  129. data/test/test_app/engines/people/test/dummy/config/locales/en.yml +23 -0
  130. data/test/test_app/engines/people/test/dummy/config/routes.rb +4 -0
  131. data/test/test_app/engines/people/test/dummy/public/404.html +58 -0
  132. data/test/test_app/engines/people/test/dummy/public/422.html +58 -0
  133. data/test/test_app/engines/people/test/dummy/public/500.html +57 -0
  134. data/test/test_app/engines/people/test/dummy/public/favicon.ico +0 -0
  135. data/test/test_app/engines/people/test/fixtures/people/users.yml +11 -0
  136. data/test/test_app/engines/people/test/helpers/people/users_helper_test.rb +6 -0
  137. data/test/test_app/engines/people/test/integration/navigation_test.rb +10 -0
  138. data/test/test_app/engines/people/test/models/people/user_test.rb +9 -0
  139. data/test/test_app/engines/people/test/people_test.rb +7 -0
  140. data/test/test_app/engines/people/test/test_helper.rb +15 -0
  141. data/test/test_app/gems/authorization/Gemfile +14 -0
  142. data/test/test_app/gems/authorization/Gemfile.lock +81 -0
  143. data/test/test_app/gems/authorization/MIT-LICENSE +20 -0
  144. data/test/test_app/gems/authorization/README.rdoc +3 -0
  145. data/test/test_app/gems/authorization/Rakefile +32 -0
  146. data/test/test_app/gems/authorization/authorization.gemspec +22 -0
  147. data/test/test_app/gems/authorization/lib/authorization.rb +4 -0
  148. data/test/test_app/gems/authorization/lib/authorization/people/v1/user.rb +90 -0
  149. data/test/test_app/gems/authorization/lib/authorization/version.rb +3 -0
  150. data/test/test_app/gems/authorization/lib/tasks/authorization_tasks.rake +4 -0
  151. data/test/test_app/gems/authorization/test/authorization_test.rb +7 -0
  152. data/test/test_app/gems/authorization/test/dummy/README.rdoc +28 -0
  153. data/test/test_app/gems/authorization/test/dummy/Rakefile +6 -0
  154. data/test/test_app/gems/authorization/test/dummy/app/assets/javascripts/application.js +13 -0
  155. data/test/test_app/gems/authorization/test/dummy/app/assets/stylesheets/application.css +13 -0
  156. data/test/test_app/gems/authorization/test/dummy/app/controllers/application_controller.rb +5 -0
  157. data/test/test_app/gems/authorization/test/dummy/app/helpers/application_helper.rb +2 -0
  158. data/test/test_app/gems/authorization/test/dummy/app/views/layouts/application.html.erb +14 -0
  159. data/test/test_app/gems/authorization/test/dummy/bin/bundle +3 -0
  160. data/test/test_app/gems/authorization/test/dummy/bin/rails +4 -0
  161. data/test/test_app/gems/authorization/test/dummy/bin/rake +4 -0
  162. data/test/test_app/gems/authorization/test/dummy/config.ru +4 -0
  163. data/test/test_app/gems/authorization/test/dummy/config/application.rb +23 -0
  164. data/test/test_app/gems/authorization/test/dummy/config/boot.rb +5 -0
  165. data/test/test_app/gems/authorization/test/dummy/config/database.yml +25 -0
  166. data/test/test_app/gems/authorization/test/dummy/config/environment.rb +5 -0
  167. data/test/test_app/gems/authorization/test/dummy/config/environments/development.rb +29 -0
  168. data/test/test_app/gems/authorization/test/dummy/config/environments/production.rb +80 -0
  169. data/test/test_app/gems/authorization/test/dummy/config/environments/test.rb +36 -0
  170. data/test/test_app/gems/authorization/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  171. data/test/test_app/gems/authorization/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  172. data/test/test_app/gems/authorization/test/dummy/config/initializers/inflections.rb +16 -0
  173. data/test/test_app/gems/authorization/test/dummy/config/initializers/mime_types.rb +5 -0
  174. data/test/test_app/gems/authorization/test/dummy/config/initializers/secret_token.rb +12 -0
  175. data/test/test_app/gems/authorization/test/dummy/config/initializers/session_store.rb +3 -0
  176. data/test/test_app/gems/authorization/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  177. data/test/test_app/gems/authorization/test/dummy/config/locales/en.yml +23 -0
  178. data/test/test_app/gems/authorization/test/dummy/config/routes.rb +56 -0
  179. data/test/test_app/gems/authorization/test/dummy/public/404.html +58 -0
  180. data/test/test_app/gems/authorization/test/dummy/public/422.html +58 -0
  181. data/test/test_app/gems/authorization/test/dummy/public/500.html +57 -0
  182. data/test/test_app/gems/authorization/test/dummy/public/favicon.ico +0 -0
  183. data/test/test_app/gems/authorization/test/test_helper.rb +15 -0
  184. data/test/test_app/log/development.log +79 -0
  185. data/test/test_app/log/production.log +12 -0
  186. data/test/test_app/log/test.log +13884 -0
  187. data/test/test_app/public/404.html +58 -0
  188. data/test/test_app/public/422.html +58 -0
  189. data/test/test_app/public/500.html +57 -0
  190. data/test/test_app/public/favicon.ico +0 -0
  191. data/test/test_app/public/robots.txt +5 -0
  192. data/test/test_app/spec/controllers/app_index_controller_spec.rb +12 -0
  193. data/test/test_app/spec/engines/people/api/v1/models/user_spec.rb +61 -0
  194. data/test/test_app/spec/engines/people/api/v1/requests/user_spec.rb +244 -0
  195. data/test/test_app/spec/engines/people/api/v1/routing/user_spec.rb +91 -0
  196. data/test/test_app/spec/factories/people_user_1_factory.rb +14 -0
  197. data/test/test_app/spec/rails_helper.rb +47 -0
  198. data/test/test_app/spec/spec_helper.rb +78 -0
  199. data/test/test_app/spec/support/factory_girl.rb +16 -0
  200. data/test/test_app/spec/support/request_helpers.rb +7 -0
  201. metadata +381 -2
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/404.html -->
52
+ <div class="dialog">
53
+ <h1>The page you were looking for doesn't exist.</h1>
54
+ <p>You may have mistyped the address or the page may have moved.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/422.html -->
52
+ <div class="dialog">
53
+ <h1>The change you wanted was rejected.</h1>
54
+ <p>Maybe you tried to change something you didn't have access to.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/500.html -->
52
+ <div class="dialog">
53
+ <h1>We're sorry, but something went wrong.</h1>
54
+ </div>
55
+ <p>If you are the application owner check the logs for more information.</p>
56
+ </body>
57
+ </html>
File without changes
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-agent: *
5
+ # Disallow: /
@@ -0,0 +1,12 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe AppIndexController, :type => :controller do
4
+
5
+ describe "GET app" do
6
+ it "returns http success" do
7
+ get :app
8
+ expect(response).to be_success
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,61 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe ::People::V1::User, '.username', :type => :model do
4
+ it "does not save when nil" do
5
+ user = FactoryGirl.build(:people_user_1, :username => nil)
6
+ expect(user.save).to equal(false)
7
+ end
8
+ it "does not save with invalid characters" do
9
+ #user = FactoryGirl.build(:people_user_1, :username => "!@#$%)")
10
+ #expect(user.save).to equal(false)
11
+ end
12
+ end
13
+ RSpec.describe ::People::V1::User, '.email', :type => :model do
14
+ it "does not save when nil" do
15
+ user = FactoryGirl.build(:people_user_1, :email => nil)
16
+ expect(user.save).to equal(false)
17
+ end
18
+ it "does not save with invalid characters" do
19
+ #user = FactoryGirl.build(:people_user_1, :email => "!@#$%)")
20
+ #expect(user.save).to equal(false)
21
+ end
22
+ end
23
+ RSpec.describe ::People::V1::User, '.password_digest', :type => :model do
24
+ it "does not save when nil" do
25
+ user = FactoryGirl.build(:people_user_1, :password => nil, :password_confirmation => nil)
26
+ expect(user.save).to equal(false)
27
+ end
28
+ it "does not save when not a match" do
29
+ user = FactoryGirl.build(:people_user_1, :password => "firstAttempt", :password_confirmation => "secondAttempt")
30
+ expect(user.save).to equal(false)
31
+ end
32
+ it "saves with a matching password and password_confirmation" do
33
+ user = FactoryGirl.build(:people_user_1, :password => "good_password", :password_confirmation => "good_password")
34
+ expect(user.save).to equal(true)
35
+ end
36
+ end
37
+ RSpec.describe ::People::V1::User, :type => :model do
38
+ describe "dependencies" do
39
+ before(:example) do
40
+ @user = FactoryGirl.create(:people_user_1)
41
+ end
42
+ it "deletes ... when deleted" do
43
+
44
+ end
45
+ end
46
+ end
47
+ RSpec.describe ::People::V1::User, :type => :model do
48
+ describe "callbacks" do
49
+ before(:example) do
50
+ @user = FactoryGirl.create(:people_user_1)
51
+ end
52
+
53
+ it "creates an authentication token" do
54
+ expect(@user.tokens.any?).to equal(true)
55
+ end
56
+ it "does not create an empty auth token" do
57
+ expect(@user.tokens[0].auth_token.nil?).to equal(false)
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,244 @@
1
+ require "rails_helper"
2
+
3
+ #-#-#-#-#REST#-#-#-#-#
4
+ RSpec.describe ::People::V1::User, :type => :request do
5
+ describe "Index" do
6
+ before(:example) do
7
+ @user = FactoryGirl.create(:people_user_1)
8
+ token = @user.tokens[0].auth_token
9
+ @header = {"Auth-Token" => token, "Email" => @user.email}
10
+ end
11
+ # get /api/1/users
12
+ it "checks index json response" do
13
+ FactoryGirl.create_list(:people_user_1, 10)
14
+ get 'api/1/users', nil, @header
15
+ expect(response.status).to eq(200) #ok
16
+ expect(json["users"]).to_not eq(nil)
17
+ end
18
+ end
19
+ end
20
+ RSpec.describe ::People::V1::User, :type => :request do
21
+ describe "Show" do
22
+ before(:example) do
23
+ @user = FactoryGirl.create(:people_user_1)
24
+ token = @user.tokens[0].auth_token
25
+ @header = {"Auth-Token" => token, "Email" => @user.email}
26
+ end
27
+ # get /api/1/users/1
28
+ it "checks show json response" do
29
+ get 'api/1/users/1', nil, @header
30
+ expect(response.status).to eq(200) #ok
31
+ expect(json["user"]["id"]).to eq(1)
32
+ end
33
+ end
34
+ end
35
+ RSpec.describe ::People::V1::User, :type => :request do
36
+ describe "Update" do
37
+ before(:example) do
38
+ @user = FactoryGirl.create(:people_user_1)
39
+ token = @user.tokens[0].auth_token
40
+ @header = {"Auth-Token" => token, "Email" => @user.email}
41
+ end
42
+ # put /api/1/users/1
43
+ it "checks update json response" do
44
+ attrs = FactoryGirl.attributes_for(:people_user_1)
45
+ attrs["email"] = "Cole@LaunchU.com"
46
+ hash = {"user" => attrs}
47
+ #This uses users 1 header
48
+ put 'api/1/users/1', hash, @header
49
+ expect(response.status).to eq(200) #ok
50
+ expect(json["user"]["email"]).to eq("cole@launchu.com")
51
+ end
52
+ it "makes sure a user cannot alter another users information" do
53
+ FactoryGirl.create(:people_user_1)
54
+ attrs = FactoryGirl.attributes_for(:people_user_1)
55
+ attrs["email"] = "Cole@LaunchU.com"
56
+ hash = {"user" => attrs}
57
+ #This uses users 2 header
58
+ put 'api/1/users/2', hash, @header
59
+ expect(response.status).to eq(403) #forbidden
60
+ end
61
+ it "makes sure a user can't update to bad values" do
62
+ attrs = FactoryGirl.attributes_for(:people_user_1)
63
+ attrs["email"] = ""
64
+ hash = {"user" => attrs}
65
+ #This uses users 1 header
66
+ put 'api/1/users/1', hash, @header
67
+ expect(response.status).to eq(422) #ok
68
+ end
69
+ end
70
+ end
71
+ #-#-#-#-#Collection Routes#-#-#-#-#
72
+ RSpec.describe ::People::V1::User, :type => :request do
73
+ describe "Register" do
74
+ before(:example) do
75
+ @attrs = FactoryGirl.attributes_for(:people_user_1)
76
+ end
77
+ # post /api/1/users/register
78
+ it "checks response of a register request with a valid user object" do
79
+ post 'api/1/users/register', :user => @attrs
80
+ expect(response.status).to eq(200) #ok
81
+ expect(::People::V1::User.all.count).to eq(1)
82
+ #A valid token needs to be returned
83
+ expect(json["token"]["auth_token"]).to_not eq(nil)
84
+ token = ::People::V1::User.find(1).tokens[0]
85
+ expect(json["token"]["auth_token"]).to eq(token.auth_token)
86
+ end
87
+ # post /api/1/users/register
88
+ it "checks response of a register request with mismatched passwords" do
89
+ @attrs["password"] = "password1"
90
+ @attrs["password_confirmation"] = "password2"
91
+ post 'api/1/users/register', :user => @attrs
92
+ expect(response.status).to eq(422) #invalid_resource
93
+ expect(::People::V1::User.all.count).to eq(0)
94
+ #Errors need to be returned
95
+ expect(json["errors"]).to_not eq(nil)
96
+ end
97
+ end
98
+ end
99
+ RSpec.describe ::People::V1::User, :type => :request do
100
+ describe "Login" do
101
+ before(:example) do
102
+ @attrs = FactoryGirl.attributes_for(:people_user_1)
103
+ end
104
+ # post /api/1/users/login
105
+ it "checks response of a valid login request" do
106
+ @attrs["password"] = "password123"
107
+ @attrs["password_confirmation"] = "password123"
108
+ user = FactoryGirl.create(:people_user_1,@attrs)
109
+ old_auth_token = user.tokens[0].auth_token
110
+ #It needs to send an email and password
111
+ hash = {"user" => @attrs}
112
+ post 'api/1/users/login', hash
113
+ expect(response.status).to eq(200) #ok
114
+ #A valid and new token need to be returned
115
+ expect(json["token"]["auth_token"]).to_not eq(old_auth_token)
116
+ #This token should be the newest token in the database
117
+ new_auth_token = ::People::V1::User.find(1).tokens.order("created_at").last.auth_token
118
+ expect(json["token"]["auth_token"]).to eq(new_auth_token)
119
+ end
120
+ # post /api/1/users/login
121
+ it "checks response of an invalid login request with an invalid password" do
122
+ @attrs["password"] = "password123"
123
+ @attrs["password_confirmation"] = "password123"
124
+ user = FactoryGirl.create(:people_user_1,@attrs)
125
+ #The password needs to be invalid
126
+ @attrs["password"] = "wrongPassword"
127
+ hash = {"user" => @attrs}
128
+ #It needs to send an email and password
129
+ post 'api/1/users/login', hash
130
+ expect(response.status).to eq(401) #unauthorized
131
+ #Errors need to be returned
132
+ expect(json["errors"]).to_not eq(nil)
133
+ end
134
+ end
135
+ end
136
+ RSpec.describe ::People::V1::User, :type => :request do
137
+ describe "Logout" do
138
+ before(:example) do
139
+ @attrs = FactoryGirl.attributes_for(:people_user_1)
140
+ end
141
+ # get /api/1/users/1/logout
142
+ it "checks logout response and makes sure token is deleted" do
143
+ user = FactoryGirl.create(:people_user_1,@attrs)
144
+ token = user.tokens[0].auth_token
145
+ header = {"Auth-Token" => token, "Email" => user.email}
146
+ post 'api/1/users/logout', nil, header
147
+ expect(::People::V1::User.count).to eq(1)
148
+ expect(response.status).to eq(200) #ok
149
+ expect(::Arcadex::Token.count).to eq(0)
150
+ end
151
+ end
152
+ end
153
+ RSpec.describe ::People::V1::User, :type => :request do
154
+ describe "Authenticate" do
155
+ before(:example) do
156
+ @attrs = FactoryGirl.attributes_for(:people_user_1)
157
+ end
158
+ # post /api/1/users/authenticate
159
+ it "checks a valid authenticate request" do
160
+ user = FactoryGirl.create(:people_user_1,@attrs)
161
+ token = user.tokens[0].auth_token
162
+ header = {"Auth-Token" => token, "Email" => user.email}
163
+ hash = {"user" => @attrs}
164
+ post "api/1/users/authenticate/#{user.id}", hash, header
165
+ expect(response.status).to eq(200) #ok
166
+ end
167
+ # post /api/1/users/authenticate
168
+ it "checks an invalid authenticate request" do
169
+ user = FactoryGirl.create(:people_user_1,@attrs)
170
+ token = user.tokens[0].auth_token
171
+ header = {"Auth-Token" => token, "Email" => user.email}
172
+ @attrs["password"] = "false_password"
173
+ hash = {"user" => @attrs}
174
+ post "api/1/users/authenticate/#{user.id}", hash, header
175
+ expect(response.status).to eq(401) #unauthorized
176
+ end
177
+ end
178
+ end
179
+ RSpec.describe ::People::V1::User, :type => :request do
180
+ describe "Login_Status" do
181
+ before(:example) do
182
+ @attrs = FactoryGirl.attributes_for(:people_user_1)
183
+ end
184
+ # get /api/1/users/login_status
185
+ it "returns 200 okay if token is valid" do
186
+ user = FactoryGirl.create(:people_user_1,@attrs)
187
+ token = user.tokens[0].auth_token
188
+ header = {"Auth-Token" => token, "Email" => user.email}
189
+ get "api/1/users/login_status", nil, header
190
+ expect(response.status).to eq(200) #ok
191
+ end
192
+ # get /api/1/users/login_status
193
+ it "returns a 401 if token is not valid" do
194
+ user = FactoryGirl.create(:people_user_1,@attrs)
195
+ token = user.tokens[0].auth_token + "not_valid"
196
+ header = {"Auth-Token" => token, "Email" => user.email}
197
+ get "api/1/users/login_status", nil, header
198
+ expect(response.status).to eq(401) #unauthorized
199
+ end
200
+ # get /api/1/users/login_status
201
+ it "returns a 401 if token does not exist" do
202
+ user = FactoryGirl.create(:people_user_1,@attrs)
203
+ token = user.tokens[0].auth_token
204
+ header = {"Email" => user.email}
205
+ get "api/1/users/login_status", nil, header
206
+ expect(response.status).to eq(401) #unauthorized
207
+ end
208
+ end
209
+ end
210
+ #-#-#-#-#Serialization#-#-#-#-#
211
+ RSpec.describe ::People::V1::User, :type => :request do
212
+ describe "Serialization" do
213
+ before(:example) do
214
+ @user = FactoryGirl.create(:people_user_1)
215
+ token = @user.tokens[0].auth_token
216
+ @header = {"Auth-Token" => token, "Email" => @user.email}
217
+ end
218
+ # get /api/1/users
219
+ it "checks only appropriate attributes are sent back for index" do
220
+ FactoryGirl.create_list(:people_user_1, 10)
221
+ get 'api/1/users', nil, @header
222
+ expect(response.status).to eq(200) #ok
223
+ expect(::People::V1::User.count).to eq(11)
224
+ expect(::Arcadex::Token.count).to eq(11)
225
+ expect(json["users"][0]["password_digest"]).to eq(nil)
226
+ expect(json["users"][0]["created_at"]).to_not eq(nil)
227
+ expect(json["users"][0]["updated_at"]).to_not eq(nil)
228
+ end
229
+ end
230
+ end
231
+ #-#-#-#-#Errors#-#-#-#-#
232
+ RSpec.describe ::People::V1::User, :type => :request do
233
+ describe "Authorization" do
234
+ before(:example) do
235
+ @user = FactoryGirl.create(:people_user_1)
236
+ token = @user.tokens[0].auth_token
237
+ @header = {"Auth-Token" => token, "Email" => @user.email}
238
+ end
239
+ it "checks for 404 response" do
240
+ get 'api/1/users/20', nil, @header
241
+ expect(response.status).to eq(404) #not_found
242
+ end
243
+ end
244
+ end