conjur-asset-ui 1.3.2 → 1.4.2

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.jshintrc +41 -0
  4. data/CHANGELOG.md +7 -0
  5. data/Gemfile +3 -1
  6. data/README.md +38 -4
  7. data/Rakefile +69 -1
  8. data/TODO.md +31 -0
  9. data/bower.json +98 -0
  10. data/conjur-asset-ui.gemspec +3 -3
  11. data/features/navigation_bar.feature +31 -0
  12. data/features/step_definitions/custom_step.rb +32 -0
  13. data/features/support/env.rb +38 -0
  14. data/features/support/hooks.rb +30 -0
  15. data/features/support/world.rb +17 -0
  16. data/gulpfile.js +139 -0
  17. data/lib/conjur/command/ui.rb +1 -1
  18. data/lib/conjur/webserver/server.rb +14 -8
  19. data/lib/conjur-asset-ui-version.rb +1 -1
  20. data/package.json +47 -0
  21. data/preprocessor.js +7 -0
  22. data/public/_client_libs.html +1 -16
  23. data/public/build/css/styles.css +87 -0
  24. data/public/build/css/vendor.css +5 -0
  25. data/public/build/fonts/glyphicons-halflings-regular.eot +0 -0
  26. data/public/{fonts → build/fonts}/glyphicons-halflings-regular.svg +47 -47
  27. data/public/{fonts → build/fonts}/glyphicons-halflings-regular.ttf +0 -0
  28. data/public/build/fonts/glyphicons-halflings-regular.woff +0 -0
  29. data/public/build/js/app.min.js +4 -0
  30. data/public/build/js/vendor.min.js +23 -0
  31. data/public/build/maps/app.min.js.map +1 -0
  32. data/public/build/maps/vendor.min.js.map +1 -0
  33. data/public/css/styles.less +246 -17
  34. data/public/index.html.erb +11 -10
  35. data/public/js/init.js +186 -97
  36. data/public/js/lib/sorted-set.no-require.js +3 -28
  37. data/public/js/models/groupRecord.js +14 -12
  38. data/public/js/models/hostRecord.js +13 -8
  39. data/public/js/models/layerRecord.js +14 -12
  40. data/public/js/models/namespace.js +2 -0
  41. data/public/js/models/policyList.js +3 -1
  42. data/public/js/models/policyRecord.js +8 -8
  43. data/public/js/models/record.js +59 -27
  44. data/public/js/models/resourceList.js +28 -10
  45. data/public/js/models/userList.js +7 -2
  46. data/public/js/models/userRecord.js +14 -9
  47. data/public/js/models/variableList.js +18 -7
  48. data/public/js/models/variableRecord.js +18 -14
  49. data/public/js/routers.js +74 -37
  50. data/public/js/views/annotations.js +39 -28
  51. data/public/js/views/audit.js +31 -25
  52. data/public/js/views/breadcrumbs.js +62 -0
  53. data/public/js/views/chart.js +617 -0
  54. data/public/js/views/dashboard.js +144 -65
  55. data/public/js/views/generic.js +16 -9
  56. data/public/js/views/group.js +103 -55
  57. data/public/js/views/groups.js +3 -7
  58. data/public/js/views/host.js +192 -56
  59. data/public/js/views/hosts.js +2 -6
  60. data/public/js/views/layer.js +136 -82
  61. data/public/js/views/layers.js +2 -6
  62. data/public/js/views/mixins/search.js +12 -5
  63. data/public/js/views/mixins/tabs.js +95 -55
  64. data/public/js/views/navSearch.js +16 -5
  65. data/public/js/views/owned.js +14 -8
  66. data/public/js/views/permissions.js +244 -178
  67. data/public/js/views/policies.js +2 -4
  68. data/public/js/views/policy.js +65 -38
  69. data/public/js/views/resource.js +54 -34
  70. data/public/js/views/role.js +59 -37
  71. data/public/js/views/searchResults.js +205 -138
  72. data/public/js/views/sections.js +226 -0
  73. data/public/js/views/time.js +38 -13
  74. data/public/js/views/user.js +288 -59
  75. data/public/js/views/users.js +2 -7
  76. data/public/js/views/variable.js +293 -53
  77. data/public/js/views/variables.js +4 -8
  78. metadata +34 -56
  79. data/.git-hooks/pre_commit/ensure_livescript_compiled.rb +0 -31
  80. data/.overcommit.yml +0 -5
  81. data/compile_ls +0 -6
  82. data/livescript/views/audit.ls +0 -136
  83. data/public/_client_code.html +0 -42
  84. data/public/css/bootstrap.css +0 -7
  85. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  86. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  87. data/public/js/lib/JSXTransformer.js +0 -10862
  88. data/public/js/lib/async.js +0 -958
  89. data/public/js/lib/backbone.js +0 -2
  90. data/public/js/lib/bootstrap.js +0 -6
  91. data/public/js/lib/date.extensions.js +0 -141
  92. data/public/js/lib/less.js +0 -16
  93. data/public/js/lib/moment.js +0 -7768
  94. data/public/js/lib/prelude-browser-min.js +0 -1
  95. data/public/js/lib/react-bootstrap.js +0 -5346
  96. data/public/js/lib/react-bootstrap.min.js +0 -4
  97. data/public/js/lib/underscore-min.js +0 -6
  98. data/public/js/lib/underscore.string.min.js +0 -1
  99. data/public/js/main.js +0 -57
  100. data/vendor/prelude-ls/.gitignore +0 -2
  101. data/vendor/prelude-ls/.travis.yml +0 -3
  102. data/vendor/prelude-ls/CHANGELOG.md +0 -81
  103. data/vendor/prelude-ls/LICENSE +0 -22
  104. data/vendor/prelude-ls/Makefile +0 -50
  105. data/vendor/prelude-ls/README.md +0 -15
  106. data/vendor/prelude-ls/browser/prelude-browser-min.js +0 -1
  107. data/vendor/prelude-ls/browser/prelude-browser.js +0 -1172
  108. data/vendor/prelude-ls/lib/Func.js +0 -40
  109. data/vendor/prelude-ls/lib/List.js +0 -602
  110. data/vendor/prelude-ls/lib/Num.js +0 -129
  111. data/vendor/prelude-ls/lib/Obj.js +0 -153
  112. data/vendor/prelude-ls/lib/Str.js +0 -68
  113. data/vendor/prelude-ls/lib/index.js +0 -164
  114. data/vendor/prelude-ls/package.json +0 -50
  115. data/vendor/prelude-ls/package.ls +0 -46
  116. data/vendor/prelude-ls/src/Func.ls +0 -17
  117. data/vendor/prelude-ls/src/List.ls +0 -299
  118. data/vendor/prelude-ls/src/Num.ls +0 -83
  119. data/vendor/prelude-ls/src/Obj.ls +0 -61
  120. data/vendor/prelude-ls/src/Str.ls +0 -32
  121. data/vendor/prelude-ls/src/index.ls +0 -56
  122. data/vendor/prelude-ls/test/Func.ls +0 -36
  123. data/vendor/prelude-ls/test/List.ls +0 -751
  124. data/vendor/prelude-ls/test/Num.ls +0 -258
  125. data/vendor/prelude-ls/test/Obj.ls +0 -145
  126. data/vendor/prelude-ls/test/Prelude.ls +0 -49
  127. data/vendor/prelude-ls/test/Str.ls +0 -208
  128. data/vendor/prelude-ls/test/browser.html +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 004d5a67925d8666c970bfa85db6f2e18f2e8674
4
- data.tar.gz: e68ee6f56a3e28d9655b3be64b800922160bd05a
3
+ metadata.gz: e84b34bd073f6957e24c4681011fc2a76e885910
4
+ data.tar.gz: fa39fd6270a10f8574a6b5b3b9e23bfd4f6700b0
5
5
  SHA512:
6
- metadata.gz: ed49e281210248383a42fa7724c7d25b1de67d705ae2176ac7beed20905d0e28808d1e7ee5ac91609cb34e8921741dc61bacc74b0bb241a558335940f9106116
7
- data.tar.gz: b8466d4847da829f68d47031cb51e68a91bdc3271bf45f21a8ea836ebe0391c50aa7807b0a13891e9972929cda2545ee07062afa7b67097c2a6e1d6a7afa4dc7
6
+ metadata.gz: d0b428ca78cdafe84e6bc7b32c0adfd46ee67b9a150ee409a35a1699aca87e849ba51fffe9d7a0434fad28e51c45721681ea28bc947383dcca4b80ab3721bdbe
7
+ data.tar.gz: 9fe20dd4f9f496533bbcd8edb561ac34171602268052a4ec60167c3c861755fceb08b8926f33980b1aaa24c724fc8d90a5c9fb4e32b4de987b0bfc17dcd85490
data/.gitignore CHANGED
@@ -17,4 +17,6 @@ test/version_tmp
17
17
  tmp
18
18
  .idea
19
19
  .DS_Store
20
-
20
+ bower_components/
21
+ node_modules/
22
+ public/build/
data/.jshintrc ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "bitwise": true,
3
+ "camelcase": true,
4
+ "curly": true,
5
+ "eqeqeq": true,
6
+ "es3": true,
7
+ "forin": true,
8
+ "freeze": true,
9
+ "immed": false,
10
+ "indent": 4,
11
+ "latedef": true,
12
+ "newcap": false,
13
+ "noarg": true,
14
+ "noempty": true,
15
+ "nonbsp": true,
16
+ "nonew": true,
17
+ "plusplus": false,
18
+ // "quotmark": "single",
19
+ "undef": true,
20
+ "unused": true,
21
+ "strict": true,
22
+ "maxparams": 8,
23
+ "maxdepth": 4,
24
+ "maxstatements": 20,
25
+ "maxcomplexity": 20,
26
+ "maxlen": 100,
27
+ "browser": true,
28
+ "couch": false,
29
+ "devel": true,
30
+ "dojo": false,
31
+ "jquery": true,
32
+ "mootools": false,
33
+ "node": false,
34
+ "nonstandard": true,
35
+ "phantom": false,
36
+ "prototypejs": false,
37
+ "rhino": false,
38
+ "worker": false,
39
+ "wsh": false,
40
+ "yui": false
41
+ }
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # v1.4.2
2
+
3
+ * New dashboard
4
+ * Activity graphs, warnings emphasized for User, Host, Variable pages
5
+ * Lots of bugfixes
6
+ * Build workflow updated
7
+
1
8
  # v1.3.0
2
9
 
3
10
  * resurrection of the UI
data/Gemfile CHANGED
@@ -5,4 +5,6 @@ gemspec
5
5
 
6
6
  group :development do
7
7
  gem 'pry'
8
- end
8
+ gem 'selenium-cucumber'
9
+ gem 'background_process'
10
+ end
data/README.md CHANGED
@@ -6,16 +6,16 @@ This Gem is a Conjur plugin providing UI features.
6
6
  Usage
7
7
  -----
8
8
 
9
- First install the gem, with the rather clumsy name `conjur-asset-ui-api`.
9
+ First install the gem, with the rather clumsy name `conjur-asset-ui`.
10
10
 
11
11
  ```
12
- gem install conjur-asset-ui-api
12
+ gem install conjur-asset-ui
13
13
  ```
14
14
 
15
15
  Or add the following line to your `Gemfile`:
16
16
 
17
17
  ```
18
- gem 'conjur-asset-ruby-api'
18
+ gem 'conjur-asset-ui'
19
19
  ```
20
20
 
21
21
  Next, edit your `.conjurrc` file to add the `"ui"` plugin, for example:
@@ -31,7 +31,7 @@ plugins:
31
31
  Make sure you are logged into conjur:
32
32
 
33
33
  ```
34
- conjur authn:login
34
+ conjur authn login
35
35
  ```
36
36
 
37
37
  And run the UI:
@@ -39,3 +39,37 @@ And run the UI:
39
39
  ```
40
40
  conjur ui
41
41
  ```
42
+
43
+ ## Development
44
+
45
+ ### System Dependencies
46
+
47
+ * rvm with installed Ruby
48
+ * npm
49
+
50
+ ### Setup
51
+
52
+ Create a gemset with [rvm](http://rvm.io):
53
+
54
+ ```sh-session
55
+ $ rvm gemset use conjur-asset-ui --create
56
+ $ bundle install
57
+ ```
58
+
59
+ Run `rake deps:install`, and `rake assets:build` to build js and css assets.
60
+
61
+ ### Running the project
62
+
63
+ Open 2 terminal tabs.
64
+
65
+ In one, run `rake assets:watch`. In the other run `conjur ui`.
66
+
67
+ gulp will rebuild assets as needed when files change.
68
+
69
+ ### Testing
70
+
71
+ ```sh-session
72
+ $ rake features
73
+ # or run only features marked with wip tag
74
+ $ rake features:wip
75
+ ```
data/Rakefile CHANGED
@@ -1,3 +1,71 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+
2
3
  require 'jasmine'
3
4
  load 'jasmine/tasks/jasmine.rake'
5
+
6
+ begin
7
+ require 'cucumber'
8
+ require 'cucumber/rake/task'
9
+
10
+ Cucumber::Rake::Task.new(:features) do |t|
11
+ t.cucumber_opts = '--format pretty'
12
+ end
13
+
14
+ Cucumber::Rake::Task.new('features:wip') do |t|
15
+ t.cucumber_opts = '--format pretty --tags @wip'
16
+ end
17
+
18
+ rescue LoadError
19
+ desc 'Cucumber rake task not available'
20
+
21
+ task :features do
22
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
23
+ end
24
+ end
25
+
26
+ namespace :deps do
27
+ desc 'Installs non-ruby dependencies like gulp, bower and nodejs packages'
28
+ task :install do
29
+ sh 'sudo npm install -g gulp bower'
30
+ sh 'npm install'
31
+ sh 'bower install'
32
+ end
33
+
34
+ desc 'Updates npm and bower packages'
35
+ task :update do
36
+ sh 'npm update'
37
+ sh 'bower update'
38
+ end
39
+
40
+ desc 'Removes npm and bower packages from filesystem'
41
+ task :clean do
42
+ sh 'rm -rf node_modules'
43
+ sh 'rm -rf bower_components'
44
+ end
45
+ end
46
+
47
+ namespace :assets do
48
+ desc 'Build js and css'
49
+ task :build do
50
+ sh 'gulp build'
51
+ end
52
+
53
+ desc 'Watch the assets files and rebuild when one of them changes'
54
+ task :watch => :build do
55
+ sh 'gulp watch'
56
+ end
57
+
58
+ desc 'Clean builded assets'
59
+ task :clean do
60
+ sh 'gulp clean'
61
+ end
62
+ end
63
+
64
+ task :build => %w(deps:install assets:build)
65
+
66
+ namespace :git do
67
+ desc 'Executes git clean'
68
+ task :clean do
69
+ sh 'git clean -dfX'
70
+ end
71
+ end
data/TODO.md ADDED
@@ -0,0 +1,31 @@
1
+ # General
2
+
3
+ 1. Flux?
4
+ 2. Reflux?
5
+ 3. Astarisx?
6
+
7
+ # JS
8
+
9
+ 1. Make audit.js readable
10
+ 2. Extract from audit.js common components and refactor it
11
+ 3. Better models
12
+ 4. Create navigation menu component
13
+
14
+
15
+ # General JS
16
+
17
+ 1. Drop backbone
18
+ 2. Think how to replace backbone history
19
+ 3. Drop prelude-ls
20
+ 4. Drop jquery everywhere
21
+ 5. Find nice library for ajax requests
22
+ 6. Move from underscore to lo-dash
23
+ 7. Drop underscore.string
24
+ 8. Drop underscore-deep-extend
25
+ 9. Drop react-bootstrap and bootstrap.js
26
+
27
+ # CSS
28
+
29
+ 1. Move to SASS
30
+ 2. Break monolite file in to modules
31
+ 3. More BEM everywhere
data/bower.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "conjur-asset-ui",
3
+ "private": true,
4
+ "version": "1.2.0",
5
+ "homepage": "https://github.com/conjurinc/conjur-asset-ui",
6
+ "authors": [
7
+ "Nikolai Sevostjanov <nikolai.sevostjanov@gmail.com>"
8
+ ],
9
+ "license": "MIT",
10
+ "ignore": [
11
+ "**/.*",
12
+ "node_modules",
13
+ "bower_components",
14
+ "test",
15
+ "tests"
16
+ ],
17
+ "dependencies": {
18
+ "jquery": "~2.1.1",
19
+ "async": "~0.9.0",
20
+ "backbone": "~1.1.2",
21
+ "moment": "~2.8.3",
22
+ "underscore": "~1.7.0",
23
+ "underscore.string": "~2.3.3",
24
+ "react": "~0.11.2",
25
+ "bootstrap": "~3.2.0",
26
+ "react-bootstrap": "~0.12.0",
27
+ "d3": "~3.4.13",
28
+ "underscore-deep-extend": "~0.0.5",
29
+ "prelude-ls": "~1.1.1"
30
+ },
31
+ "overrides": {
32
+ "jquery": {
33
+ "main": [
34
+ "dist/jquery.js"
35
+ ]
36
+ },
37
+ "async": {
38
+ "main": [
39
+ "lib/async.js"
40
+ ]
41
+ },
42
+ "backbone": {
43
+ "main": [
44
+ "backbone.js"
45
+ ]
46
+ },
47
+ "moment": {
48
+ "main": [
49
+ "min/moment-with-locales.js"
50
+ ]
51
+ },
52
+ "underscore": {
53
+ "main": [
54
+ "underscore.js"
55
+ ]
56
+ },
57
+ "underscore.string": {
58
+ "main": [
59
+ "lib/underscore.string.js"
60
+ ]
61
+ },
62
+ "react": {
63
+ "main": [
64
+ "react-with-addons.js"
65
+ ]
66
+ },
67
+ "react-bootstrap": {
68
+ "main": [
69
+ "react-bootstrap.js"
70
+ ]
71
+ },
72
+ "bootstrap": {
73
+ "main": [
74
+ "dist/js/bootstrap.js",
75
+ "dist/css/bootstrap.min.css",
76
+ "dist/fonts/*.eot",
77
+ "dist/fonts/*.svg",
78
+ "dist/fonts/*.ttf",
79
+ "dist/fonts/*.woff"
80
+ ]
81
+ },
82
+ "d3": {
83
+ "main": [
84
+ "d3.js"
85
+ ]
86
+ },
87
+ "underscore-deep-extend": {
88
+ "main": [
89
+ "index.js"
90
+ ]
91
+ },
92
+ "prelude-ls": {
93
+ "main": [
94
+ "browser/prelude-browser-min.js"
95
+ ]
96
+ }
97
+ }
98
+ }
@@ -6,14 +6,14 @@ require 'conjur-asset-ui-version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "conjur-asset-ui"
8
8
  spec.version = Conjur::Asset::UI::VERSION
9
- spec.authors = ["Jon Mason", "Kevin Gilpin", "Rafa\305\202 Rzepecki", "Hleb Rubanau"]
10
- spec.email = ["jon@conjur.net", "kgilpin@conjur.net", "rafal@conjur.net", "hleb@conjur.net"]
9
+ spec.authors = ["Jon Mason", "Kevin Gilpin", "Rafa\305\202 Rzepecki", "Hleb Rubanau", "Mikalai Sevastsyanau"]
10
+ spec.email = ["jon@conjur.net", "kgilpin@conjur.net", "rafal@conjur.net", "hleb@conjur.net", "mikalai@conjur.net"]
11
11
  spec.homepage = "http://conjur.net"
12
12
  spec.summary = "Conjur User Interface Plugin"
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split($/) + `find public/build`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
@@ -0,0 +1,31 @@
1
+ Feature: Navigation menu
2
+ Scenario: Open Dashboard page
3
+ Given I should logged in
4
+ When I click on the button Dashboard of the navigation menu
5
+ Then element having css "#content .dashboard" should be present
6
+
7
+ Scenario Outline: Open page using navigation bar
8
+ Given I should logged in
9
+ When I click on the button <btn> of the navigation menu
10
+ Then the <box> list should be present
11
+ And the <btn> button of the navigation menu should be active
12
+ And other button except the <btn> button of the navigation menu should be not active
13
+
14
+ Examples:
15
+ | btn | box |
16
+ | Users | User |
17
+ | Groups | Group |
18
+ | Hosts | Host |
19
+ | Layers | Layer |
20
+ | Variables | Variable |
21
+ | Policies | Policy |
22
+
23
+ Scenario: Open Audit page
24
+ Given I should logged in
25
+ When I click on the button Audit of the navigation menu
26
+ Then element having css "#content .audit h3" should be present
27
+ And the Audit button of the navigation menu should be active
28
+ And other button except the Audit button of the navigation menu should be not active
29
+
30
+ Scenario: Close the browser
31
+ Then I close browser
@@ -0,0 +1,32 @@
1
+ require 'selenium-cucumber'
2
+
3
+ Given(/^I should logged in$/) do
4
+ step %[I navigate to "#{login_url}"]
5
+ end
6
+
7
+ When(/^I click on the button (.*) of the navigation menu$/) do |btn|
8
+ id = navigation_btn_to_id(btn)
9
+
10
+ step %[I click on element having css ".navbar .dropdown a"]
11
+ step %[element having css "#{id} a" should be present]
12
+ step %[I click on element having css "#{id} a"]
13
+ end
14
+
15
+ Then(/^the (.*) button of the navigation menu should be active$/) do |btn|
16
+ id = navigation_btn_to_id(btn)
17
+
18
+ step %[I click on element having css ".navbar .dropdown a"]
19
+ step %[element having css "#{id}.active a" should be present]
20
+ end
21
+
22
+ Then(/^the (.*) list should be present$/) do |btn|
23
+ btn = btn.downcase
24
+
25
+ step %[element having css "#content .#{btn}Box .#{btn}List h2" should be present]
26
+ end
27
+
28
+ Then(/^other button except the (.*) button of the navigation menu should be not active$/) do |btn|
29
+ id = navigation_btn_to_id(btn)
30
+
31
+ WAIT.until { $driver.find_elements(:css => '.navbar li.active').count } == 1
32
+ end
@@ -0,0 +1,38 @@
1
+ require 'rubygems'
2
+ require 'selenium-webdriver'
3
+
4
+ def print_error
5
+ puts "\nInappropraite browser \"#{ENV['BROWSER']}\""
6
+ puts "\nUsage : cucumber BROWSER=browser_name"
7
+ puts "\nbrowser_name can be one of following :"
8
+ puts "1.ie\n2.chrome\n3.ff\n4.safari\n5.opera"
9
+ puts "\nNow using default browser \"Firefox\""
10
+ end
11
+
12
+ case ENV['BROWSER']
13
+ when 'ie'
14
+ browser_type = :ie
15
+ when 'ff'
16
+ browser_type = :ff
17
+ when 'chrome'
18
+ browser_type = :chrome
19
+ when 'opera'
20
+ browser_type = :opera
21
+ when 'safari'
22
+ browser_type = :safari
23
+ else
24
+ if ENV['BROWSER']
25
+ print_error
26
+ end
27
+
28
+ browser_type = :ff
29
+ end
30
+
31
+
32
+ begin
33
+ $driver = Selenium::WebDriver.for(browser_type)
34
+ $driver.manage().window().maximize()
35
+
36
+ rescue Exception => e
37
+ puts e.message
38
+ end