diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 000000000..871a1abe5 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,52 @@ +--- +engines: + brakeman: + enabled: true + bundler-audit: + enabled: true + csslint: + enabled: true + coffeelint: + enabled: true + duplication: + enabled: true + config: + languages: + - ruby + - javascript + - python + - php + eslint: + enabled: true + fixme: + enabled: true + config: + strings: + - FIXME + - TODO + - HACK + rubocop: + enabled: true + reek: + enabled: true +ratings: + paths: + - Gemfile.lock + - "**.erb" + - "**.haml" + - "**.rb" + - "**.rhtml" + - "**.slim" + - "**.css" + - "**.coffee" + - "**.inc" + - "**.js" + - "**.jsx" + - "**.module" + - "**.php" + - "**.py" +exclude_paths: +- config/ +- db/ +- spec/ +- vendor/ diff --git a/.csslintrc b/.csslintrc new file mode 100644 index 000000000..aacba956e --- /dev/null +++ b/.csslintrc @@ -0,0 +1,2 @@ +--exclude-exts=.min.css +--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..96212a359 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +**/*{.,-}min.js diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 000000000..a6a0ce9c4 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,277 @@ +--- +parserOptions: + sourceType: module + ecmaFeatures: + jsx: true + +env: + amd: true + browser: true + es6: true + jquery: true + node: true + +# http://eslint.org/docs/rules/ +rules: + # Possible Errors + no-await-in-loop: off + no-cond-assign: error + no-console: off + no-constant-condition: error + no-control-regex: error + no-debugger: error + no-dupe-args: error + no-dupe-keys: error + no-duplicate-case: error + no-empty-character-class: error + no-empty: error + no-ex-assign: error + no-extra-boolean-cast: error + no-extra-parens: off + no-extra-semi: error + no-func-assign: error + no-inner-declarations: + - error + - functions + no-invalid-regexp: error + no-irregular-whitespace: error + no-negated-in-lhs: error + no-obj-calls: error + no-prototype-builtins: off + no-regex-spaces: error + no-sparse-arrays: error + no-template-curly-in-string: off + no-unexpected-multiline: error + no-unreachable: error + no-unsafe-finally: off + no-unsafe-negation: off + use-isnan: error + valid-jsdoc: off + valid-typeof: error + + # Best Practices + accessor-pairs: error + array-callback-return: off + block-scoped-var: off + class-methods-use-this: off + complexity: + - error + - 6 + consistent-return: off + curly: off + default-case: off + dot-location: off + dot-notation: off + eqeqeq: error + guard-for-in: error + no-alert: error + no-caller: error + no-case-declarations: error + no-div-regex: error + no-else-return: off + no-empty-function: off + no-empty-pattern: error + no-eq-null: error + no-eval: error + no-extend-native: error + no-extra-bind: error + no-extra-label: off + no-fallthrough: error + no-floating-decimal: off + no-global-assign: off + no-implicit-coercion: off + no-implied-eval: error + no-invalid-this: off + no-iterator: error + no-labels: + - error + - allowLoop: true + allowSwitch: true + no-lone-blocks: error + no-loop-func: error + no-magic-number: off + no-multi-spaces: off + no-multi-str: off + no-native-reassign: error + no-new-func: error + no-new-wrappers: error + no-new: error + no-octal-escape: error + no-octal: error + no-param-reassign: off + no-proto: error + no-redeclare: error + no-restricted-properties: off + no-return-assign: error + no-return-await: off + no-script-url: error + no-self-assign: off + no-self-compare: error + no-sequences: off + no-throw-literal: off + no-unmodified-loop-condition: off + no-unused-expressions: error + no-unused-labels: off + no-useless-call: error + no-useless-concat: error + no-useless-escape: off + no-useless-return: off + no-void: error + no-warning-comments: off + no-with: error + prefer-promise-reject-errors: off + radix: error + require-await: off + vars-on-top: off + wrap-iife: error + yoda: off + + # Strict + strict: off + + # Variables + init-declarations: off + no-catch-shadow: error + no-delete-var: error + no-label-var: error + no-restricted-globals: off + no-shadow-restricted-names: error + no-shadow: off + no-undef-init: error + no-undef: off + no-undefined: off + no-unused-vars: off + no-use-before-define: off + + # Node.js and CommonJS + callback-return: error + global-require: error + handle-callback-err: error + no-mixed-requires: off + no-new-require: off + no-path-concat: error + no-process-env: off + no-process-exit: error + no-restricted-modules: off + no-sync: off + + # Stylistic Issues + array-bracket-spacing: off + block-spacing: off + brace-style: off + camelcase: off + capitalized-comments: off + comma-dangle: + - error + - never + comma-spacing: off + comma-style: off + computed-property-spacing: off + consistent-this: off + eol-last: off + func-call-spacing: off + func-name-matching: off + func-names: off + func-style: off + id-length: off + id-match: off + indent: off + jsx-quotes: off + key-spacing: off + keyword-spacing: off + line-comment-position: off + linebreak-style: off + lines-around-comment: off + lines-around-directive: off + max-depth: off + max-len: off + max-nested-callbacks: off + max-params: off + max-statements-per-line: off + max-statements: + - error + - 30 + multiline-ternary: off + new-cap: off + new-parens: off + newline-after-var: off + newline-before-return: off + newline-per-chained-call: off + no-array-constructor: off + no-bitwise: off + no-continue: off + no-inline-comments: off + no-lonely-if: off + no-mixed-operators: off + no-mixed-spaces-and-tabs: off + no-multi-assign: off + no-multiple-empty-lines: off + no-negated-condition: off + no-nested-ternary: off + no-new-object: off + no-plusplus: off + no-restricted-syntax: off + no-spaced-func: off + no-tabs: off + no-ternary: off + no-trailing-spaces: off + no-underscore-dangle: off + no-unneeded-ternary: off + object-curly-newline: off + object-curly-spacing: off + object-property-newline: off + one-var-declaration-per-line: off + one-var: off + operator-assignment: off + operator-linebreak: off + padded-blocks: off + quote-props: off + quotes: off + require-jsdoc: off + semi-spacing: off + semi: off + sort-keys: off + sort-vars: off + space-before-blocks: off + space-before-function-paren: off + space-in-parens: off + space-infix-ops: off + space-unary-ops: off + spaced-comment: off + template-tag-spacing: off + unicode-bom: off + wrap-regex: off + + # ECMAScript 6 + arrow-body-style: off + arrow-parens: off + arrow-spacing: off + constructor-super: off + generator-star-spacing: off + no-class-assign: off + no-confusing-arrow: off + no-const-assign: off + no-dupe-class-members: off + no-duplicate-imports: off + no-new-symbol: off + no-restricted-imports: off + no-this-before-super: off + no-useless-computed-key: off + no-useless-constructor: off + no-useless-rename: off + no-var: off + object-shorthand: off + prefer-arrow-callback: off + prefer-const: off + prefer-destructuring: off + prefer-numeric-literals: off + prefer-rest-params: off + prefer-reflect: off + prefer-spread: off + prefer-template: off + require-yield: off + rest-spread-spacing: off + sort-imports: off + symbol-description: off + template-curly-spacing: off + yield-star-spacing: off diff --git a/.reek b/.reek new file mode 100644 index 000000000..d94291666 --- /dev/null +++ b/.reek @@ -0,0 +1,3 @@ +exclude_paths: + - db/migrate/ + - db/data/ diff --git a/.rubocop.yml b/.rubocop.yml index c9689567c..d9e50b9a2 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,10 +1,10 @@ AllCops: - RunRailsCops: true - - Exclude: + Exclude: - 'Guardfile' # stuff generated by AR and rails - 'config/deploy-example.rb' + - 'config/environments/development-example.rb' + - 'config/environments/staging-example.rb' - 'db/schema.rb' - 'db/schema-read-only.rb' - 'db/whois_schema.rb' @@ -15,9 +15,10 @@ AllCops: - 'spec/support/epp.rb' - 'spec/support/epp_contact_xml_builder.rb' - 'vendor/bundle/**/*' + - 'lib/tasks/import.rake' Metrics/LineLength: - Max: 120 + Max: 120 # default 80 Metrics/MethodLength: Max: 25 # default 10 diff --git a/.travis.yml b/.travis.yml index 4e6723544..f5fd67bc0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,10 +14,13 @@ before_script: - "RAILS_ENV=test bundle exec rake db:migrate" script: - "RAILS_ENV=test bundle exec rspec" +after_success: + - "bundle exec codeclimate-test-reporter" services: - postgresql addons: postgresql: "9.4" + code_climate: branches: only: - master diff --git a/Gemfile b/Gemfile index fea2da382..e6cfb5b64 100644 --- a/Gemfile +++ b/Gemfile @@ -8,10 +8,11 @@ end if Bundler::VERSION < '2' source 'https://rubygems.org' # core -gem 'rails', '4.2.7.1' # when update, all initializers eis_custom files needs check/update -gem 'iso8601', '0.8.6' # for dates and times -gem 'hashie-forbidden_attributes', '0.1.1' + gem 'SyslogLogger', '2.0', require: 'syslog/logger' +gem 'hashie-forbidden_attributes', '0.1.1' +gem 'iso8601', '0.8.6' # for dates and times +gem 'rails', '4.2.7.1' # when update, all initializers eis_custom files needs check/update gem 'rest-client' # load env @@ -34,54 +35,59 @@ gem 'haml-rails', '0.9.0' # haml for views gem 'nokogiri', '1.7.1' # For XML parsing # style -gem 'sass-rails', '5.0.3' # sass style gem 'bootstrap-sass', '3.3.5.1' # bootstrap style +gem 'sass-rails', '5.0.6' # sass style # js -gem 'uglifier', '2.7.2' # minifies js + gem 'coffee-rails', '4.1.0' # coffeescript support -gem 'turbolinks', '2.5.3' # faster page load +gem 'uglifier', '2.7.2' # minifies js gem 'jquery-rails', '4.0.4' # jquery +gem 'turbolinks', '2.5.3' # faster page load gem 'selectize-rails', '0.12.1' # include selectize.js for select -gem 'therubyracer', '0.12.2', platforms: :ruby gem 'jquery-validation-rails', '1.13.1' # validate on client side +gem 'therubyracer', '0.12.2', platforms: :ruby # view helpers gem 'kaminari', '0.16.3' # pagination -gem 'nprogress-rails', '0.1.6.7' # visual loader -gem 'html5_validators', '1.2.2' # model requements now automatically on html form gem 'coderay', '1.1.0' # xml console visualize +gem 'html5_validators', '1.2.2' # model requements now automatically on html form +gem 'nprogress-rails', '0.1.6.7' # visual loader gem 'select2-rails', '3.5.9.3' # for autocomplete gem 'bootstrap-datepicker-rails', '1.3.1.1' # datepicker gem 'liquid', '3.0.6' # for email templates # rights -gem 'devise', '3.5.4' # authenitcation gem 'cancancan', '1.11.0' # autharization +gem 'devise', '3.5.4' # authenitcation # rest api gem 'grape', '0.12.0' gem 'jbuilder', '2.2.16' # json api # registry specfic -gem 'simpleidn', '0.0.7' # For punycode gem 'isikukood' # for EE-id validation -gem 'money-rails', '1.4.1' +gem 'simpleidn', '0.0.7' # For punycode +gem 'money-rails' # deploy -gem 'whenever', '0.9.4', require: false gem 'data_migrate', github: 'internetee/data-migrate', ref: '35d22b09ff37a4e9d61ab326ad5d8eb0edf1fc81' +gem 'whenever', '0.9.4', require: false # country listing -gem 'countries', '0.11.4' +gem 'countries', :require => 'countries/global' # cloning activerecord objects gem 'deep_cloneable', '2.1.1' # id + mid login -gem 'digidoc_client', '0.2.1' +# gem 'digidoc_client', '0.3.0' +gem 'digidoc_client', + github: 'tarmotalu/digidoc_client', + ref: '1645e83a5a548addce383f75703b0275c5310c32' + gem 'epp', '1.5.0', github: 'internetee/epp' gem 'epp-xml', '1.1.0', github: 'internetee/epp-xml' @@ -89,8 +95,8 @@ gem 'uuidtools', '2.1.5' # For unique IDs (used by the epp gem) # que gem 'que', '0.10.0' -gem 'que-web', '0.4.0' gem 'daemons-rails', '1.2.1' +gem 'que-web', '0.4.0' gem 'que_mailer', github: 'prehnRA/que-mailer', branch: 'master' @@ -104,14 +110,17 @@ gem 'pdfkit', '0.6.2' # for datepicker gem 'jquery-ui-rails', '5.0.5' +# codeclimate + + group :development do + gem 'guard', '2.12.9' # run tests automatically gem 'spring', '1.3.6' gem 'spring-commands-rspec', '1.0.4' - gem 'guard', '2.12.9' # run tests automatically - gem 'guard-rspec', '4.5.2' gem 'guard-rails', '0.7.1' # run EPP server automatically - gem 'rubocop', '0.32.1' + gem 'guard-rspec', '4.5.2' gem 'guard-rubocop', '1.2.0' + gem 'rubocop', '0.48.1' # deploy gem 'mina', '0.3.1' # for fast deployment @@ -120,25 +129,22 @@ end group :development, :test do # test stack - gem 'rspec-rails', '3.5.0' gem 'capybara', '2.4.4' - gem 'phantomjs-binaries', '1.9.2.4' - gem 'poltergeist', '1.6.0' # We are using PhantomJS instead - gem 'phantomjs', '1.9.8.0' + gem 'rspec-rails', '3.5.2' gem 'fabrication', '2.13.2' # Replacement for fixtures + gem 'phantomjs-binaries', '1.9.2.4' + gem 'phantomjs', '1.9.8.0' + gem 'poltergeist', '1.6.0' # We are using PhantomJS instead gem 'launchy', '2.4.3' # for opening browser automatically # debug gem 'pry', '0.10.1' # code review - gem 'simplecov', '0.10.0', require: false - gem 'rubycritic', '1.4.0' + gem 'rubycritic', '3.2.0' gem 'bullet', '4.14.7' # for finding database optimizations - gem 'bundler-audit', - github: 'rubysec/bundler-audit', - ref: 'f89ef7fae1090bbad825ea76812d56d72b417055' # for finding future vulnerable gems - gem 'brakeman', '3.0.5', require: false # for security audit' + gem 'bundler-audit' + gem 'brakeman', '3.6.1', require: false # for security audit' # tmp, otherwise conflics with breakman # gem 'html2haml', github: 'haml/html2haml', ref: '6984f50bdbbd6291535027726a5697f28778ee8d' gem 'html2haml', '2.1.0' @@ -156,6 +162,8 @@ end group :test do gem 'database_cleaner' - gem 'factory_girl_rails' + gem 'factory_girl_rails' + gem 'codeclimate-test-reporter', "~> 1.0.0" + gem 'simplecov' gem 'webmock' end diff --git a/Gemfile.lock b/Gemfile.lock index 106cfdb76..9da6c4831 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,19 +45,21 @@ GIT rails (>= 4.0) GIT - remote: https://github.com/rubysec/bundler-audit.git - revision: f89ef7fae1090bbad825ea76812d56d72b417055 - ref: f89ef7fae1090bbad825ea76812d56d72b417055 + remote: https://github.com/tarmotalu/digidoc_client.git + revision: 1645e83a5a548addce383f75703b0275c5310c32 + ref: 1645e83a5a548addce383f75703b0275c5310c32 specs: - bundler-audit (0.4.0) - bundler (~> 1.2) - thor (~> 0.18) + digidoc_client (0.3.0) + crack (>= 0.1.8) + httpclient (>= 2.3.4) + mime-types (>= 1.16) + nokogiri (>= 1.4.0) + savon (>= 2.4.0) GEM remote: https://rubygems.org/ specs: SyslogLogger (2.0) - abstract_type (0.0.7) actionmailer (4.2.7.1) actionpack (= 4.2.7.1) actionview (= 4.2.7.1) @@ -95,9 +97,6 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - adamantium (0.2.0) - ice_nine (~> 0.11.0) - memoizable (~> 0.4.0) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) airbrake (6.0.0) @@ -108,8 +107,6 @@ GEM nokogiri arel (6.0.4) ast (2.3.0) - astrolabe (1.3.1) - parser (~> 2.2) autodoc (0.6.0) actionpack activesupport (>= 3.0.0) @@ -126,20 +123,14 @@ GEM bootstrap-sass (3.3.5.1) autoprefixer-rails (>= 5.0.0.1) sass (>= 3.3.0) - brakeman (3.0.5) - erubis (~> 2.6) - fastercsv (~> 1.5) - haml (>= 3.0, < 5.0) - highline (~> 1.6.20) - multi_json (~> 1.2) - ruby2ruby (~> 2.1.1) - ruby_parser (~> 3.7.0) - sass (~> 3.0) - terminal-table (~> 1.4) + brakeman (3.6.1) builder (3.2.3) bullet (4.14.7) activesupport (>= 3.0.0) uniform_notifier (~> 1.9.0) + bundler-audit (0.5.0) + bundler (~> 1.2) + thor (~> 0.18) cancancan (1.11.0) capybara (2.4.4) mime-types (>= 1.16) @@ -149,6 +140,10 @@ GEM xpath (~> 2.0) chronic (0.10.2) cliver (0.3.2) + codeclimate-engine-rb (0.4.0) + virtus (~> 1.0) + codeclimate-test-reporter (1.0.8) + simplecov (<= 0.13) coderay (1.1.0) coercible (1.0.0) descendants_tracker (~> 0.0.1) @@ -159,16 +154,14 @@ GEM coffee-script-source execjs coffee-script-source (1.12.2) - concord (0.1.5) - adamantium (~> 0.2.0) - equalizer (~> 0.0.9) concurrent-ruby (1.0.5) - countries (0.11.4) - currencies (~> 0.4.2) + countries (2.0.8) i18n_data (~> 0.7.0) + money (~> 6.7) + sixarm_ruby_unaccent (~> 1.1) + unicode_utils (~> 1.4) crack (0.4.3) safe_yaml (~> 1.0.0) - currencies (0.4.2) daemons (1.2.4) daemons-rails (1.2.1) daemons @@ -185,13 +178,7 @@ GEM responders thread_safe (~> 0.1) warden (~> 1.2.3) - diff-lcs (1.2.5) - digidoc_client (0.2.1) - crack (>= 0.1.8) - httpclient (>= 2.3.4) - mime-types (>= 1.16) - nokogiri (>= 1.4.0) - savon (>= 2.4.0) + diff-lcs (1.3) docile (1.1.5) domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) @@ -204,16 +191,18 @@ GEM factory_girl_rails (4.8.0) factory_girl (~> 4.8.0) railties (>= 3.0.0) - fastercsv (1.5.5) ffi (1.9.18) figaro (1.1.1) thor (~> 0.14) - flay (2.4.0) + flay (2.8.1) + erubis (~> 2.7.0) + path_expander (~> 1.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - flog (4.2.1) + flog (4.6.1) + path_expander (~> 1.0) ruby_parser (~> 3.1, > 3.1.0) - sexp_processor (~> 4.4) + sexp_processor (~> 4.8) formatador (0.2.5) globalid (0.3.7) activesupport (>= 4.1.0) @@ -261,7 +250,6 @@ GEM hashie (3.5.5) hashie-forbidden_attributes (0.1.1) hashie (>= 3.0) - highline (1.6.21) hpricot (0.8.6) html2haml (2.1.0) erubis (~> 2.7.0) @@ -275,7 +263,7 @@ GEM httpi (2.4.2) rack socksify - i18n (0.7.0) + i18n (0.8.1) i18n_data (0.7.0) ice_nine (0.11.2) isikukood (0.1.2) @@ -311,8 +299,6 @@ GEM lumberjack (1.0.11) mail (2.6.4) mime-types (>= 1.16, < 4) - memoizable (0.4.2) - thread_safe (~> 0.3, >= 0.3.1) method_source (0.8.2) mime-types (3.1) mime-types-data (~> 3.2015) @@ -322,14 +308,15 @@ GEM rake mini_portile2 (2.1.0) minitest (5.10.1) - monetize (1.1.0) - money (~> 6.5.0) - money (6.5.1) - i18n (>= 0.6.4, <= 0.7.0) - money-rails (1.4.1) + monetize (1.6.0) + money (~> 6.8) + money (6.8.3) + i18n (>= 0.6.4, < 0.9) + sixarm_ruby_unaccent (>= 1.1.1, < 2) + money-rails (1.8.0) activesupport (>= 3.0) - monetize (~> 1.1.0) - money (~> 6.5.0) + monetize (~> 1.6.0) + money (~> 6.8.1) railties (>= 3.0) multi_json (1.12.1) multi_xml (0.6.0) @@ -344,8 +331,9 @@ GEM nprogress-rails (0.1.6.7) open4 (1.3.4) orm_adapter (0.5.0) - parser (2.2.3.0) - ast (>= 1.1, < 3.0) + parser (2.4.0.0) + ast (~> 2.2) + path_expander (1.0.1) pdfkit (0.6.2) pg (0.19.0) phantomjs (1.9.8.0) @@ -359,7 +347,6 @@ GEM polyamorous (1.3.1) activerecord (>= 3.0) powerpack (0.1.1) - procto (0.0.3) pry (0.10.1) coderay (~> 1.1.0) method_source (~> 0.8.1) @@ -420,10 +407,10 @@ GEM rb-inotify (0.9.8) ffi (>= 0.5.0) rdoc (4.3.0) - reek (1.6.5) - parser (~> 2.2.0.pre.7) - rainbow (>= 1.99, < 3.0) - unparser (~> 0.2.2) + reek (4.6.1) + codeclimate-engine-rb (~> 0.4.0) + parser (>= 2.3.1.2, < 2.5) + rainbow (~> 2.0) ref (2.0.0) request_store (1.1.0) responders (2.3.0) @@ -444,7 +431,7 @@ GEM rspec-mocks (3.5.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.5.0) - rspec-rails (3.5.0) + rspec-rails (3.5.2) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) @@ -453,33 +440,33 @@ GEM rspec-mocks (~> 3.5.0) rspec-support (~> 3.5.0) rspec-support (3.5.0) - rubocop (0.32.1) - astrolabe (~> 1.3) - parser (>= 2.2.2.5, < 3.0) + rubocop (0.48.1) + parser (>= 2.3.3.1, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) - ruby-progressbar (~> 1.4) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) ruby-progressbar (1.8.1) - ruby2ruby (2.1.4) - ruby_parser (~> 3.1) - sexp_processor (~> 4.0) ruby_dep (1.5.0) - ruby_parser (3.7.3) + ruby_parser (3.8.4) sexp_processor (~> 4.1) - rubycritic (1.4.0) - flay (= 2.4.0) - flog (= 4.2.1) - parser (>= 2.2.0, < 3.0) - reek (= 1.6.5) + rubycritic (3.2.0) + flay (~> 2.8) + flog (~> 4.4) + launchy (= 2.4.3) + parser (= 2.4.0) + rainbow (~> 2.1) + reek (~> 4.4) + ruby_parser (~> 3.8) virtus (~> 1.0) safe_yaml (1.0.4) sass (3.4.23) - sass-rails (5.0.3) - railties (>= 4.0.0, < 5.0) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) - tilt (~> 1.1) + tilt (>= 1.1, < 3) savon (2.11.1) akami (~> 1.2) builder (>= 2.1.2) @@ -506,6 +493,7 @@ GEM rack (~> 1.5) rack-protection (~> 1.4) tilt (>= 1.3, < 3) + sixarm_ruby_unaccent (1.1.1) slop (3.6.0) socksify (1.7.1) spring (1.3.6) @@ -520,8 +508,6 @@ GEM sprockets (>= 3.0.0) sys-uname (0.9.0) ffi (>= 1.0.0) - terminal-table (1.7.3) - unicode-display_width (~> 1.1.1) therubyracer (0.12.2) libv8 (~> 3.16.14.0) ref @@ -538,19 +524,12 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.2) - unicode-display_width (1.1.3) + unicode-display_width (1.2.0) + unicode_utils (1.4.0) unicorn (5.3.0) kgio (~> 2.6) raindrops (~> 0.7) uniform_notifier (1.9.0) - unparser (0.2.4) - abstract_type (~> 0.0.7) - adamantium (~> 0.2.0) - concord (~> 0.1.5) - diff-lcs (~> 1.2.5) - equalizer (~> 0.0.9) - parser (~> 2.2.2) - procto (~> 0.0.2) uuidtools (2.1.5) validates_email_format_of (1.6.3) i18n @@ -586,20 +565,21 @@ DEPENDENCIES autodoc bootstrap-datepicker-rails (= 1.3.1.1) bootstrap-sass (= 3.3.5.1) - brakeman (= 3.0.5) + brakeman (= 3.6.1) bullet (= 4.14.7) - bundler-audit! + bundler-audit cancancan (= 1.11.0) capybara (= 2.4.4) + codeclimate-test-reporter (~> 1.0.0) coderay (= 1.1.0) coffee-rails (= 4.1.0) - countries (= 0.11.4) + countries daemons-rails (= 1.2.1) data_migrate! database_cleaner deep_cloneable (= 2.1.1) devise (= 3.5.4) - digidoc_client (= 0.2.1) + digidoc_client! epp (= 1.5.0)! epp-xml (= 1.1.0)! fabrication (= 2.13.2) @@ -624,7 +604,7 @@ DEPENDENCIES launchy (= 2.4.3) liquid (= 3.0.6) mina (= 0.3.1) - money-rails (= 1.4.1) + money-rails nokogiri (= 1.7.1) nprogress-rails (= 0.1.6.7) paper_trail! @@ -643,14 +623,14 @@ DEPENDENCIES rails-settings-cached (= 0.4.1) ransack (= 1.5.1) rest-client - rspec-rails (= 3.5.0) - rubocop (= 0.32.1) - rubycritic (= 1.4.0) - sass-rails (= 5.0.3) + rspec-rails (= 3.5.2) + rubocop (= 0.48.1) + rubycritic (= 3.2.0) + sass-rails (= 5.0.6) sdoc (= 0.4.1) select2-rails (= 3.5.9.3) selectize-rails (= 0.12.1) - simplecov (= 0.10.0) + simplecov simpleidn (= 0.0.7) spring (= 1.3.6) spring-commands-rspec (= 1.0.4) diff --git a/README.md b/README.md index 8ee6384a2..49a27815b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ Domain Registry =============== [![Build Status](https://travis-ci.org/internetee/registry.svg?branch=master)](https://travis-ci.org/internetee/registry) +[![Code Climate](https://codeclimate.com/github/internetee/registry/badges/gpa.svg)](https://codeclimate.com/github/internetee/registry) +[![Issue Count](https://codeclimate.com/github/internetee/registry/badges/issue_count.svg)](https://codeclimate.com/github/internetee/registry) +[![Test Coverage](https://codeclimate.com/github/internetee/registry/badges/coverage.svg)](https://codeclimate.com/github/internetee/registry/coverage) +[![Documentation Status](https://readthedocs.org/projects/eeregistry/badge/?version=latest)](http://docs.internet.ee/en/latest/?badge=latest) Full stack top-level domain (TLD) management. @@ -460,8 +464,3 @@ Please follow WHOIS server readme: https://github.com/internetee/whois - -## Code Status - -Alpha release status, only model tests: -[![Build Status](https://travis-ci.org/domify/registry.svg?branch=master)](https://travis-ci.org/domify/registry) diff --git a/app/controllers/registrant/sessions_controller.rb b/app/controllers/registrant/sessions_controller.rb index 91589d510..e1523c919 100644 --- a/app/controllers/registrant/sessions_controller.rb +++ b/app/controllers/registrant/sessions_controller.rb @@ -29,6 +29,7 @@ class Registrant::SessionsController < Devise::SessionsController phone = params[:user][:phone] endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger unless Rails.env.test? if Rails.env.test? && phone == "123" @user = ApiUser.find_by(identity_code: "14212128025") @@ -70,6 +71,7 @@ class Registrant::SessionsController < Devise::SessionsController def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger unless Rails.env.test? client.session_code = session[:mid_session_code] auth_status = client.authentication_status diff --git a/app/controllers/registrar/sessions_controller.rb b/app/controllers/registrar/sessions_controller.rb index 20cde12b7..cd33590c2 100644 --- a/app/controllers/registrar/sessions_controller.rb +++ b/app/controllers/registrar/sessions_controller.rb @@ -103,6 +103,7 @@ class Registrar phone = params[:user][:phone] endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger unless Rails.env.test? # country_codes = {'+372' => 'EST'} phone.gsub!('+372', '') @@ -139,6 +140,7 @@ class Registrar def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger unless Rails.env.test? client.session_code = session[:mid_session_code] auth_status = client.authentication_status diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 427a330f3..be8cbb65f 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -18,7 +18,6 @@ class DomainNameValidator < ActiveModel::EachValidator return true if origins.include?(value) general_domains = /(#{origins.join('|')})/ - # general_domains = /(.pri.ee|.com.ee|.fie.ee|.med.ee|.ee)/ # it's punycode if value[2] == '-' && value[3] == '-' @@ -39,7 +38,7 @@ class DomainNameValidator < ActiveModel::EachValidator def validate_blocked(value) return true unless value return false if BlockedDomain.where(name: value).count > 0 - ZonefileSetting.where(origin: value).count == 0 + ZonefileSetting.where(origin: value).count.zero? end end end diff --git a/coffeelint.json b/coffeelint.json new file mode 100644 index 000000000..86422e323 --- /dev/null +++ b/coffeelint.json @@ -0,0 +1,129 @@ +{ + "arrow_spacing": { + "level": "ignore" + }, + "braces_spacing": { + "level": "ignore", + "spaces": 0, + "empty_object_spaces": 0 + }, + "camel_case_classes": { + "level": "error" + }, + "coffeescript_error": { + "level": "error" + }, + "colon_assignment_spacing": { + "level": "ignore", + "spacing": { + "left": 0, + "right": 0 + } + }, + "cyclomatic_complexity": { + "value": 10, + "level": "ignore" + }, + "duplicate_key": { + "level": "error" + }, + "empty_constructor_needs_parens": { + "level": "ignore" + }, + "ensure_comprehensions": { + "level": "warn" + }, + "eol_last": { + "level": "ignore" + }, + "indentation": { + "value": 2, + "level": "error" + }, + "line_endings": { + "level": "ignore", + "value": "unix" + }, + "max_line_length": { + "value": 80, + "level": "error", + "limitComments": true + }, + "missing_fat_arrows": { + "level": "ignore", + "is_strict": false + }, + "newlines_after_classes": { + "value": 3, + "level": "ignore" + }, + "no_backticks": { + "level": "error" + }, + "no_debugger": { + "level": "warn", + "console": false + }, + "no_empty_functions": { + "level": "ignore" + }, + "no_empty_param_list": { + "level": "ignore" + }, + "no_implicit_braces": { + "level": "ignore", + "strict": true + }, + "no_implicit_parens": { + "strict": true, + "level": "ignore" + }, + "no_interpolation_in_single_quotes": { + "level": "ignore" + }, + "no_plusplus": { + "level": "ignore" + }, + "no_stand_alone_at": { + "level": "ignore" + }, + "no_tabs": { + "level": "error" + }, + "no_this": { + "level": "ignore" + }, + "no_throwing_strings": { + "level": "error" + }, + "no_trailing_semicolons": { + "level": "error" + }, + "no_trailing_whitespace": { + "level": "error", + "allowed_in_comments": false, + "allowed_in_empty_lines": true + }, + "no_unnecessary_double_quotes": { + "level": "ignore" + }, + "no_unnecessary_fat_arrows": { + "level": "warn" + }, + "non_empty_constructor_needs_parens": { + "level": "ignore" + }, + "prefer_english_operator": { + "level": "ignore", + "doubleNotLevel": "ignore" + }, + "space_operators": { + "level": "ignore" + }, + "spacing_after_comma": { + "level": "ignore" + }, + "transform_messes_up_line_numbers": { + "level": "warn" + } +} diff --git a/config/application-example.yml b/config/application-example.yml index 6ef70c9a0..20b9370e1 100644 --- a/config/application-example.yml +++ b/config/application-example.yml @@ -41,6 +41,7 @@ time_zone: 'Tallinn' # more zones by rake time:zones:all openssl_config_path: '/etc/ssl/openssl.cnf' crl_dir: '/home/registry/registry/shared/ca/crl' +crl_path: '/home/registry/registry/shared/ca/crl/crl.pem' ca_cert_path: '/home/registry/registry/shared/ca/certs/ca.crt.pem' ca_key_path: '/home/registry/registry/shared/ca/private/ca.key.pem' ca_key_password: 'your-root-key-password' diff --git a/config/initializers/digidoc.rb b/config/initializers/digidoc.rb deleted file mode 100644 index 2b103f750..000000000 --- a/config/initializers/digidoc.rb +++ /dev/null @@ -1 +0,0 @@ -Digidoc::Client.logger = Rails.application.config.logger diff --git a/doc/certificates.md b/doc/certificates.md index 4caea4988..bcb28a039 100644 --- a/doc/certificates.md +++ b/doc/certificates.md @@ -90,6 +90,7 @@ Create certificate revocation list (prompts for pass phrase): Configure registry registry/shared/config/application.yml to match the CA settings: openssl_config_path: '/etc/ssl/openssl.cnf' + crl_dir: '/home/registry/registry/shared/ca/crl/' crl_path: '/home/registry/registry/shared/ca/crl/crl.pem' ca_cert_path: '/home/registry/registry/shared/ca/certs/ca.crt.pem' ca_key_path: '/home/registry/registry/shared/ca/private/ca.key.pem' @@ -100,7 +101,7 @@ Configure registry registry/shared/config/application.yml to match the CA settin Configure registry epp registry-epp/shared/config/application.yml: - webclient_ips: '54.154.91.240' + webclient_ips: '127.0.0.1' # IP where webclient is running Configure EPP port 700 virtual host: diff --git a/doc/epp/contact.md b/doc/epp/contact.md index dbfdc893f..3ec314b9e 100644 --- a/doc/epp/contact.md +++ b/doc/epp/contact.md @@ -39,7 +39,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 1 Contact identificator Attribute: "type" "org" # Business registry code - "priv" # National idendtification number + "priv" # National identification number "birthday" # Birthday date in format in YYYY-MM-DD Attribute: "cc" "EE" # Country code in ISO_3166-1 aplha 2 @@ -76,7 +76,7 @@ More info: https://en.wikipedia.org/wiki/Latin_script_in_Unicode 0-1 Contact identificator Attribute: "type" "org" # Business registry code - "priv" # National idendtification number + "priv" # National identification number "birthday" # Birthday date in format in YYYY-MM-DD Attribute: "cc" "EE" # Country code in ISO_3166-1 aplha 2 diff --git a/lib/sorted_country.rb b/lib/sorted_country.rb index 1fc514d3f..e831c007b 100644 --- a/lib/sorted_country.rb +++ b/lib/sorted_country.rb @@ -32,12 +32,12 @@ class SortedCountry end def all_sorted - @all_sorted ||= Country.all.sort_by { |name, _code| name.first } + @all_sorted ||= Country.all.sort_by(&:name) end def all_sorted_truncated - @all_sorted_truncated ||= - all_sorted.map { |name, code| [truncate(name, length: 26), code] } + @all_sorted_truncated ||= + all_sorted.map { |country| [truncate(name, length: 26), country.alpha2] } end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 110e8df27..b4a4443ee 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -8,12 +8,6 @@ require 'money-rails/test_helpers' require 'support/requests/session_helpers' require 'support/requests/epp_helpers' require 'support/features/session_helpers' - -if ENV['ROBOT'] - require 'simplecov' - SimpleCov.start 'rails' -end - require 'support/matchers/alias_attribute' require 'support/matchers/active_job' require 'support/matchers/epp/code' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 68a2c0be1..664043716 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,4 +1,9 @@ require 'webmock/rspec' +if ENV['TRAVIS'] + require 'simplecov' + SimpleCov.start +end + RSpec.configure do |config| # https://github.com/rspec/rspec-rails/issues/1076