Merge pull request #2164 from consul/feature/consul_installation_details

Consul installation details
This commit is contained in:
BertoCQ
2017-12-04 22:21:30 +01:00
committed by GitHub
3 changed files with 80 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
class InstallationController < ApplicationController
skip_authorization_check
def details
respond_to do |format|
format.any { render json: consul_installation_details.to_json, content_type: 'application/json' }
end
end
private
def consul_installation_details
{
release: 'v0.11'
}.merge(features: settings_feature_flags)
end
def settings_feature_flags
Setting.where("key LIKE 'feature.%'").each_with_object({}) { |x, n| n[x.key.remove('feature.')] = x.value }
end
end

View File

@@ -36,6 +36,8 @@ Rails.application.routes.draw do
get '/welcome', to: 'welcome#welcome'
get '/cuentasegura', to: 'welcome#verification', as: :cuentasegura
get '/consul.json', to: "installation#details"
resources :debates do
member do
post :vote

View File

@@ -0,0 +1,54 @@
require 'rails_helper'
describe InstallationController, type: :request do
describe "consul.json" do
let(:feature_settings) do
{
'debates' => nil,
'spending_proposals' => 't',
'polls' => nil,
'twitter_login' => nil,
'facebook_login' => nil,
'google_login' => nil,
'public_stats' => nil,
'budgets' => nil,
'signature_sheets' => nil,
'legislation' => nil,
'user.recommendations' => nil,
'community' => nil,
'map' => 't',
'spending_proposal_features.voting_allowed' => 't'
}
end
before do
feature_settings.each { |feature_name, feature_value| Setting["feature.#{feature_name}"] = feature_value }
end
after do
Setting['feature.debates'] = true
Setting['feature.spending_proposals'] = nil
Setting['feature.polls'] = true
Setting['feature.twitter_login'] = true
Setting['feature.facebook_login'] = true
Setting['feature.google_login'] = true
Setting['feature.public_stats'] = true
Setting['feature.budgets'] = true
Setting['feature.signature_sheets'] = true
Setting['feature.legislation'] = true
Setting['feature.user.recommendations'] = true
Setting['feature.community'] = true
Setting['feature.map'] = nil
Setting['feature.spending_proposal_features.voting_allowed'] = nil
end
specify "with query string inside query params" do
get '/consul.json'
expect(response).to have_http_status(:ok)
expect(JSON.parse(response.body)['release']).not_to be_empty
expect(JSON.parse(response.body)['features']).to eq(feature_settings)
end
end
end