diff --git a/app/controllers/admin/external_environments_controller.rb b/app/controllers/admin/external_environments_controller.rb new file mode 100644 index 0000000..e87bcc0 --- /dev/null +++ b/app/controllers/admin/external_environments_controller.rb @@ -0,0 +1,13 @@ +class ExternalEnvironmentsController < AdminController + protect 'edit_environment_features', :environment + + def index + @environments = ExternalEnvironment.all + end + + def save_environments + environment.update(params[:environment]) + redirect_to action: :index + session[:notice] = _('External environments updated successfully.') + end +end diff --git a/app/controllers/admin/federated_networks_controller.rb b/app/controllers/admin/federated_networks_controller.rb deleted file mode 100644 index a55db08..0000000 --- a/app/controllers/admin/federated_networks_controller.rb +++ /dev/null @@ -1,13 +0,0 @@ -class FederatedNetworksController < AdminController - protect 'edit_environment_features', :environment - - def index - @networks = FederatedNetwork.all - end - - def save_networks - environment.update(params[:environment]) - redirect_to action: :index - session[:notice] = _('Federated networks updated successfully.') - end -end diff --git a/app/models/environment.rb b/app/models/environment.rb index 49a8cf4..43b5613 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -15,7 +15,7 @@ class Environment < ApplicationRecord :members_whitelist, :highlighted_news_amount, :portal_news_amount, :date_format, :signup_intro, :enable_feed_proxy, :http_feed_proxy, :https_feed_proxy, - :disable_feed_ssl, :federated_network_ids + :disable_feed_ssl, :external_environment_ids has_many :users @@ -24,8 +24,8 @@ class Environment < ApplicationRecord false end - has_many :environment_federated_networks, :dependent => :destroy - has_many :federated_networks, :through => :environment_federated_networks + has_many :environment_external_environments, :dependent => :destroy + has_many :external_environments, :through => :environment_external_environments has_many :tasks, :dependent => :destroy, :as => 'target' has_many :search_terms, :as => :context diff --git a/app/models/environment_external_environment.rb b/app/models/environment_external_environment.rb new file mode 100644 index 0000000..bda7594 --- /dev/null +++ b/app/models/environment_external_environment.rb @@ -0,0 +1,8 @@ +class EnvironmentExternalEnvironment < ActiveRecord::Base + belongs_to :environment + belongs_to :external_environment + + attr_accessible :environment, :external_environment + + validates_uniqueness_of :external_environment, :scope => :environment +end diff --git a/app/models/environment_federated_network.rb b/app/models/environment_federated_network.rb deleted file mode 100644 index 66ad03b..0000000 --- a/app/models/environment_federated_network.rb +++ /dev/null @@ -1,8 +0,0 @@ -class EnvironmentFederatedNetwork < ActiveRecord::Base - belongs_to :environment - belongs_to :federated_network - - attr_accessible :environment, :federated_network - - validates_uniqueness_of :federated_network, :scope => :environment -end diff --git a/app/models/external_environment.rb b/app/models/external_environment.rb new file mode 100644 index 0000000..aa05e7e --- /dev/null +++ b/app/models/external_environment.rb @@ -0,0 +1,9 @@ +class ExternalEnvironment < ActiveRecord::Base + validates_presence_of :url, :name, :identifier + validates_uniqueness_of :url, :name, :identifier + + attr_accessible :name, :url, :thumbnail, :screenshot, :identifier + + has_many :environment_external_environments, dependent: :destroy + has_many :environments, through: :environment_external_environments +end diff --git a/app/models/federated_network.rb b/app/models/federated_network.rb deleted file mode 100644 index 592c84d..0000000 --- a/app/models/federated_network.rb +++ /dev/null @@ -1,9 +0,0 @@ -class FederatedNetwork < ActiveRecord::Base - validates_presence_of :url, :name, :identifier - validates_uniqueness_of :url, :name, :identifier - - attr_accessible :name, :url, :thumbnail, :screenshot, :identifier - - has_many :environment_federated_networks, dependent: :destroy - has_many :environments, through: :environment_federated_networks -end diff --git a/app/views/admin_panel/index.html.erb b/app/views/admin_panel/index.html.erb index 172ca77..4afd306 100644 --- a/app/views/admin_panel/index.html.erb +++ b/app/views/admin_panel/index.html.erb @@ -12,7 +12,7 @@
+ <%= _('Select which external environments you want to enable in your environment') %> +
+ + <%= labelled_form_for(:environment, :url => {:action => 'save_environments'}) do |f| %> +<%= _('No external environments available') %>
+<% end %> diff --git a/app/views/federated_networks/index.html.erb b/app/views/federated_networks/index.html.erb deleted file mode 100644 index 12ec762..0000000 --- a/app/views/federated_networks/index.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -- <%= _('Select which federated networks you want to enable in your environment') %> -
- - <%= labelled_form_for(:environment, :url => {:action => 'save_networks'}) do |f| %> -<%= _('No federated networks available') %>
-<% end %> diff --git a/config/schedule.rb b/config/schedule.rb index 2a27bd2..2167800 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -26,7 +26,7 @@ every 1.day do end every 1.day do - rake 'federated_network:update' + rake 'external_environment:update' end diff --git a/db/migrate/20160405175153_create_external_environment.rb b/db/migrate/20160405175153_create_external_environment.rb new file mode 100644 index 0000000..8fd19cd --- /dev/null +++ b/db/migrate/20160405175153_create_external_environment.rb @@ -0,0 +1,11 @@ +class CreateExternalEnvironment < ActiveRecord::Migration + def change + create_table :external_environments do |t| + t.string :name + t.string :url + t.string :identifier + t.string :screenshot + t.string :thumbnail + end + end +end diff --git a/db/migrate/20160405175153_create_federated_network.rb b/db/migrate/20160405175153_create_federated_network.rb deleted file mode 100644 index 8070002..0000000 --- a/db/migrate/20160405175153_create_federated_network.rb +++ /dev/null @@ -1,11 +0,0 @@ -class CreateFederatedNetwork < ActiveRecord::Migration - def change - create_table :federated_networks do |t| - t.string :name - t.string :url - t.string :identifier - t.string :screenshot - t.string :thumbnail - end - end -end diff --git a/db/migrate/20160406145351_environment_external_environments.rb b/db/migrate/20160406145351_environment_external_environments.rb new file mode 100644 index 0000000..d0ccb18 --- /dev/null +++ b/db/migrate/20160406145351_environment_external_environments.rb @@ -0,0 +1,12 @@ +class EnvironmentExternalEnvironments < ActiveRecord::Migration + def self.up + create_table :environment_external_environments do |t| + t.references :environment, index: true + t.references :external_environment, index: true + end + end + + def self.down + drop_table :environment_external_environments + end +end diff --git a/db/migrate/20160406145351_environment_federated_networks.rb b/db/migrate/20160406145351_environment_federated_networks.rb deleted file mode 100644 index fdbbcad..0000000 --- a/db/migrate/20160406145351_environment_federated_networks.rb +++ /dev/null @@ -1,12 +0,0 @@ -class EnvironmentFederatedNetworks < ActiveRecord::Migration - def self.up - create_table :environment_federated_networks do |t| - t.references :environment, index: true - t.references :federated_network, index: true - end - end - - def self.down - drop_table :environment_federated_networks - end -end diff --git a/db/schema.rb b/db/schema.rb index f59a9c0..9d86ca4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -370,9 +370,9 @@ ActiveRecord::Schema.define(version: 20160422163123) do t.datetime "updated_at" end - create_table "environment_federated_networks", force: :cascade do |t| + create_table "environment_external_environments", force: :cascade do |t| t.integer "environment_id" - t.integer "federated_network_id" + t.integer "external_environment_id" end create_table "environments", force: :cascade do |t| @@ -429,7 +429,7 @@ ActiveRecord::Schema.define(version: 20160422163123) do add_index "favorite_enterprise_people", ["person_id", "enterprise_id"], name: "index_favorite_enterprise_people_on_person_id_and_enterprise_id", using: :btree add_index "favorite_enterprise_people", ["person_id"], name: "index_favorite_enterprise_people_on_person_id", using: :btree - create_table "federated_networks", force: :cascade do |t| + create_table "external_environments", force: :cascade do |t| t.string "name" t.string "url" t.string "identifier" diff --git a/features/external_environments.feature b/features/external_environments.feature new file mode 100644 index 0000000..2d0d10a --- /dev/null +++ b/features/external_environments.feature @@ -0,0 +1,20 @@ +Feature: external environments + As an administrator + I want to associate my environment with external environments + + Background: + Given I am logged in as admin + Given the following external environments + | id | name | url | + | 1 | Test | test.org | + + Scenario: admin user could access the external environments + Given I follow "Administration" + When I follow "External environments" + Then I should be on /admin/external_environments + + Scenario: admin user could associated a external environment to the environment + Given I go to /admin/external_environments + And I check "environment_external_environment_ids_1" + When I press "Save changes" + Then I should be on /admin/external_environments diff --git a/features/federated_networks.feature b/features/federated_networks.feature deleted file mode 100644 index 66e02c6..0000000 --- a/features/federated_networks.feature +++ /dev/null @@ -1,20 +0,0 @@ -Feature: federated networks - As an administrator - I want to associate my environment with federated networks - - Background: - Given I am logged in as admin - Given the following federated networks - | id | name | url | - | 1 | Test | test.org | - - Scenario: admin user could access the federated networks - Given I follow "Administration" - When I follow "Federated Networks" - Then I should be on /admin/federated_networks - - Scenario: admin user could associated a federated network to the environment - Given I go to /admin/federated_networks - And I check "environment_federated_network_ids_1" - When I press "Save changes" - Then I should be on /admin/federated_networks diff --git a/features/step_definitions/noosfero_steps.rb b/features/step_definitions/noosfero_steps.rb index 8353703..1686420 100644 --- a/features/step_definitions/noosfero_steps.rb +++ b/features/step_definitions/noosfero_steps.rb @@ -55,11 +55,11 @@ Given /^the following (community|communities|enterprises?|organizations?)$/ do | end end -Given /^the following federated networks$/ do |table| +Given /^the following external environments$/ do |table| environment = Environment.default table.hashes.each do |row| - federated_network = FederatedNetwork.create!(row, :without_protection => true) - environment.federated_networks << federated_network + external_environment = ExternalEnvironment.create!(row, :without_protection => true) + environment.external_environments << external_environment end end diff --git a/lib/external_environment_updater.rb b/lib/external_environment_updater.rb new file mode 100644 index 0000000..c6db4dc --- /dev/null +++ b/lib/external_environment_updater.rb @@ -0,0 +1,35 @@ +module ExternalEnvironmentUpdater + require 'json' + require 'net/http' + require './app/models/external_environment' + + def self.import_json + source = 'http://directory.noosfero.org/all.json' + begin + resp = Net::HTTP.get_response(URI.parse(source)) + rescue Exception => ex + Rails.logger.error "Import External Environments Error: #{ex}" + end + JSON.parse(resp.body) + end + + def self.process_data + data = import_json + + if data.key?('sites') + data['sites'].each do |site| + if site.key?('name') && site.key?('url') && site.key?('id') + external_environment = ExternalEnvironment.find_or_create_by(identifier: site['id']) + external_environment.update(name: site['name'], + url: site['url'], + screenshot: site['screnshot'], + thumbnail: site['thumbnail']) + else + Rails.logger.error 'External environment JSON has site without name or url' + end + end + else + Rails.logger.error 'External environment JSON has no sites key' + end + end +end diff --git a/lib/federated_network_updater.rb b/lib/federated_network_updater.rb deleted file mode 100644 index 983db55..0000000 --- a/lib/federated_network_updater.rb +++ /dev/null @@ -1,35 +0,0 @@ -module FederatedNetworkUpdater - require 'json' - require 'net/http' - require './app/models/federated_network' - - def self.import_json - source = 'http://directory.noosfero.org/all.json' - begin - resp = Net::HTTP.get_response(URI.parse(source)) - rescue Exception => ex - Rails.logger.error "Import Federated Networks Error: #{ex}" - end - JSON.parse(resp.body) - end - - def self.process_data - data = import_json - - if data.key?('sites') - data['sites'].each do |site| - if site.key?('name') && site.key?('url') && site.key?('id') - federated_network = FederatedNetwork.find_or_create_by(identifier: site['id']) - federated_network.update(name: site['name'], - url: site['url'], - screenshot: site['screnshot'], - thumbnail: site['thumbnail']) - else - Rails.logger.error 'Federated network JSON has site without name or url' - end - end - else - Rails.logger.error 'Federated network JSON has no sites key' - end - end -end diff --git a/lib/tasks/external_environment_update.rake b/lib/tasks/external_environment_update.rake new file mode 100644 index 0000000..4c3d7f1 --- /dev/null +++ b/lib/tasks/external_environment_update.rake @@ -0,0 +1,7 @@ +namespace :external_environment do + desc 'Task to import external environments' + task :update do + sh 'rails', 'runner', 'ExternalEnvironmentUpdater::process_data' + puts 'External environments are up to date' + end +end diff --git a/lib/tasks/federated_network_update.rake b/lib/tasks/federated_network_update.rake deleted file mode 100644 index 949ae01..0000000 --- a/lib/tasks/federated_network_update.rake +++ /dev/null @@ -1,7 +0,0 @@ -namespace :federated_network do - desc 'Task to import federated networks' - task :update do - sh 'rails', 'runner', 'FederatedNetworkUpdater::process_data' - puts 'Federated Networks are up to date' - end -end diff --git a/public/stylesheets/application.scss b/public/stylesheets/application.scss index c8851d1..75d085c 100644 --- a/public/stylesheets/application.scss +++ b/public/stylesheets/application.scss @@ -52,7 +52,7 @@ @import 'admin-panel'; @import 'manage-fields'; @import 'environment-users'; -@import 'federation'; +@import 'external-environment'; @import 'content'; @import 'comments'; diff --git a/public/stylesheets/external-environment.scss b/public/stylesheets/external-environment.scss new file mode 100644 index 0000000..d54ce09 --- /dev/null +++ b/public/stylesheets/external-environment.scss @@ -0,0 +1,17 @@ +.external-environment-thumbnail { + width: 44%; + display: block; + float: left; + margin-left: 20px; + margin-top: 10px; + text-overflow: unset; + height: 220px; +} + +.external-environment-thumbnail img{ + width: 80%; +} + +.external-environment-button { + clear: both; +} diff --git a/public/stylesheets/federation.scss b/public/stylesheets/federation.scss deleted file mode 100644 index 6ff9d6c..0000000 --- a/public/stylesheets/federation.scss +++ /dev/null @@ -1,17 +0,0 @@ -.federation-thumbnail { - width: 44%; - display: block; - float: left; - margin-left: 20px; - margin-top: 10px; - text-overflow: unset; - height: 220px; -} - -.federation-thumbnail img{ - width: 80%; -} - -.federation-button { - clear: both; -} diff --git a/test/functional/external_environment_controller_test.rb b/test/functional/external_environment_controller_test.rb new file mode 100644 index 0000000..dd6ce6d --- /dev/null +++ b/test/functional/external_environment_controller_test.rb @@ -0,0 +1,37 @@ +require_relative '../test_helper' +require 'external_environments_controller' +include ExternalEnvironmentUpdater + +class ExternalEnvironmentsControllerTest < ActionController::TestCase + all_fixtures + def setup + @controller = ExternalEnvironmentsController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + ExternalEnvironment.destroy_all + @external_environment = ExternalEnvironment.create!(name: 'Test', url: 'test.org', + identifier: 'Testing') + login_as(create_admin_user(Environment.default)) + end + + should 'list external environments' do + get :index + assert_response :success + assert_template 'index' + assert assigns(:environments) + end + + should 'save external environments' do + post :save_environments, environment: { external_environment_ids: [@external_environment] } + assert_response 302 + assert_redirected_to controller: 'external_environments', action: 'index' + assert Environment.default.external_environments, @external_environment + assert_equal 'External environments updated successfully.', session[:notice] + end + + should 'not allow non admin user to update external environments' do + login_as('johndoe') + post :save_environments, environment: { external_environment_ids: [@external_environment] } + assert_response 403 + end +end diff --git a/test/functional/federated_network_controller_test.rb b/test/functional/federated_network_controller_test.rb deleted file mode 100644 index b529f0c..0000000 --- a/test/functional/federated_network_controller_test.rb +++ /dev/null @@ -1,37 +0,0 @@ -require_relative '../test_helper' -require 'federated_networks_controller' -include FederatedNetworkUpdater - -class FederatedNetworksControllerTest < ActionController::TestCase - all_fixtures - def setup - @controller = FederatedNetworksController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - FederatedNetwork.destroy_all - @federated_network = FederatedNetwork.create!(name: 'Test', url: 'test.org', - identifier: 'Testing') - login_as(create_admin_user(Environment.default)) - end - - should 'list federated networks' do - get :index - assert_response :success - assert_template 'index' - assert assigns(:networks) - end - - should 'save federated networks' do - post :save_networks, environment: { federated_network_ids: [@federated_network] } - assert_response 302 - assert_redirected_to controller: 'federated_networks', action: 'index' - assert Environment.default.federated_networks, @federated_network - assert_equal 'Federated networks updated successfully.', session[:notice] - end - - should 'not allow non admin user to update federated networks' do - login_as('johndoe') - post :save_networks, environment: { federated_network_ids: [@federated_network] } - assert_response 403 - end -end diff --git a/test/unit/external_environment_test.rb b/test/unit/external_environment_test.rb new file mode 100644 index 0000000..7d6e456 --- /dev/null +++ b/test/unit/external_environment_test.rb @@ -0,0 +1,139 @@ +require_relative '../test_helper' + +class ExternalEnvironmentTest < ActiveSupport::TestCase + def setup + ExternalEnvironment.destroy_all + end + + should 'try to process a wrong json without sites key' do + json = { + 'name' => 'Blogoosfero', + 'url' => 'http://blogoosfero.cc/', + 'id' => 'blogoosfero', + 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', + 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' + } + ExternalEnvironmentUpdater.stubs(:import_json).returns(json) + ExternalEnvironmentUpdater::process_data + + assert_equal ExternalEnvironment.find_by_url('http://blogoosfero.cc'), nil + end + + should 'try to process a wrong json with sites but without url' do + json = { + 'sites' => [ + { 'name' => 'Blogoosfero', + 'id' => 'blogoosfero', + 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', + 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' + } + ] + } + ExternalEnvironmentUpdater.stubs(:import_json).returns(json) + ExternalEnvironmentUpdater::process_data + + assert_equal ExternalEnvironment.find_by_name('Blogoosfero'), nil + end + + should 'try to process a wrong json with sites but without name' do + json = { + 'sites' => [ + { 'url' => 'test.org', + 'id' => 'blogoosfero', + 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', + 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' + } + ] + } + ExternalEnvironmentUpdater.stubs(:import_json).returns(json) + ExternalEnvironmentUpdater::process_data + + assert_equal ExternalEnvironment.find_by_url('test.org'), nil + end + + should 'try to process a wrong json with sites but without identifier' do + json = { + 'sites' => [ + { 'name' => 'Blogoosfero', + 'url' => 'test.org', + 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', + 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' + } + ] + } + ExternalEnvironmentUpdater.stubs(:import_json).returns(json) + ExternalEnvironmentUpdater::process_data + + assert_equal ExternalEnvironment.find_by_url('test.org'), nil + end + + should 'try to update site info' do + ExternalEnvironment.create(name: 'Test', url: 'test.org') + json = { + 'sites' => [ + { 'name' => 'Test', + 'url' => 'test.org', + 'id' => 'blogoosfero', + 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', + 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' + } + ] + } + + ExternalEnvironmentUpdater.stubs(:import_json).returns(json) + + ExternalEnvironmentUpdater::process_data + + external_environment = ExternalEnvironment.find_by_url('test.org') + + assert_equal external_environment.name, 'Test' + assert_equal external_environment.identifier, 'blogoosfero' + assert_equal external_environment.screenshot, 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png' + assert_equal external_environment.thumbnail, 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' + end + + should 'external environment should have unique url' do + f1 = ExternalEnvironment.create(name: 'Test2', url: 'http://www.test.com', + identifier: 'Federation') + assert(f1.valid?, 'not a valid external environment on f1') + + f2 = ExternalEnvironment.create(name: 'Test3', url: f1.url, + identifier: 'Federation') + assert_not(f2.valid?, 'f2 should not be a valid external environment') + end + + should 'validades presence of url on external environment' do + f = ExternalEnvironment.create(name: 'testname', identifier: 'Federation') + assert_not(f.valid?, 'should not be a valid external environment') + end + + should 'external environment should have unique name' do + f1 = ExternalEnvironment.create(name: 'Test', url: 'http://www.test.com', + identifier: 'Federation') + assert(f1.valid?, 'not a valid external environment on f1') + + f2 = ExternalEnvironment.create(name: f1.name, url: 'test.org', + identifier: 'Federation2') + assert_not(f2.valid?, 'f2 should not be a valid external environment') + end + + should 'validades presence of name on external environment' do + f = ExternalEnvironment.create(url: 'test.org', identifier: 'Federation') + assert_not(f.valid?, 'should not be a valid external environment') + end + + should 'external environment should have unique identifier' do + f1 = ExternalEnvironment.create(name: 'Test', url: 'http://www.test.com', + identifier: 'Federation') + assert(f1.valid?, 'not a valid external environment on f1') + + f2 = ExternalEnvironment.create(name: 'Test2', url: 'test.org', + identifier: f1.identifier) + assert_not(f2.valid?, 'f2 should not be a valid external environment') + end + + should 'validades presence of identifier on external environment' do + f = ExternalEnvironment.create(name: 'Test', url: 'test.org') + assert_not(f.valid?, 'should not be a valid external environment') + end +end diff --git a/test/unit/federated_network_test.rb b/test/unit/federated_network_test.rb deleted file mode 100644 index a55b65e..0000000 --- a/test/unit/federated_network_test.rb +++ /dev/null @@ -1,139 +0,0 @@ -require_relative '../test_helper' - -class FederatedNetworkTest < ActiveSupport::TestCase - def setup - FederatedNetwork.destroy_all - end - - should 'try to process a wrong json without sites key' do - json = { - 'name' => 'Blogoosfero', - 'url' => 'http://blogoosfero.cc/', - 'id' => 'blogoosfero', - 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', - 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' - } - FederatedNetworkUpdater.stubs(:import_json).returns(json) - FederatedNetworkUpdater::process_data - - assert_equal FederatedNetwork.find_by_url('http://blogoosfero.cc'), nil - end - - should 'try to process a wrong json with sites but without url' do - json = { - 'sites' => [ - { 'name' => 'Blogoosfero', - 'id' => 'blogoosfero', - 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', - 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' - } - ] - } - FederatedNetworkUpdater.stubs(:import_json).returns(json) - FederatedNetworkUpdater::process_data - - assert_equal FederatedNetwork.find_by_name('Blogoosfero'), nil - end - - should 'try to process a wrong json with sites but without name' do - json = { - 'sites' => [ - { 'url' => 'test.org', - 'id' => 'blogoosfero', - 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', - 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' - } - ] - } - FederatedNetworkUpdater.stubs(:import_json).returns(json) - FederatedNetworkUpdater::process_data - - assert_equal FederatedNetwork.find_by_url('test.org'), nil - end - - should 'try to process a wrong json with sites but without identifier' do - json = { - 'sites' => [ - { 'name' => 'Blogoosfero', - 'url' => 'test.org', - 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', - 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' - } - ] - } - FederatedNetworkUpdater.stubs(:import_json).returns(json) - FederatedNetworkUpdater::process_data - - assert_equal FederatedNetwork.find_by_url('test.org'), nil - end - - should 'try to update site info' do - FederatedNetwork.create(name: 'Test', url: 'test.org') - json = { - 'sites' => [ - { 'name' => 'Test', - 'url' => 'test.org', - 'id' => 'blogoosfero', - 'screnshot' => 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png', - 'thumbnail' => 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' - } - ] - } - - FederatedNetworkUpdater.stubs(:import_json).returns(json) - - FederatedNetworkUpdater::process_data - - federated_network = FederatedNetwork.find_by_url('test.org') - - assert_equal federated_network.name, 'Test' - assert_equal federated_network.identifier, 'blogoosfero' - assert_equal federated_network.screenshot, 'http://directorncly.noosfero.org/sites/blogoosfero/screenshot.png' - assert_equal federated_network.thumbnail, 'http://directory.noosfero.org/sites/blogoosfero/screenshot.thumb.png' - end - - should 'federated network should have unique url' do - f1 = FederatedNetwork.create(name: 'Test2', url: 'http://www.test.com', - identifier: 'Federation') - assert(f1.valid?, 'not a valid federated network on f1') - - f2 = FederatedNetwork.create(name: 'Test3', url: f1.url, - identifier: 'Federation') - assert_not(f2.valid?, 'f2 should not be a valid federated network') - end - - should 'validades presence of url on federated network' do - f = FederatedNetwork.create(name: 'testname', identifier: 'Federation') - assert_not(f.valid?, 'should not be a valid federated network') - end - - should 'federated network should have unique name' do - f1 = FederatedNetwork.create(name: 'Test', url: 'http://www.test.com', - identifier: 'Federation') - assert(f1.valid?, 'not a valid federated network on f1') - - f2 = FederatedNetwork.create(name: f1.name, url: 'test.org', - identifier: 'Federation2') - assert_not(f2.valid?, 'f2 should not be a valid federated network') - end - - should 'validades presence of name on federated network' do - f = FederatedNetwork.create(url: 'test.org', identifier: 'Federation') - assert_not(f.valid?, 'should not be a valid federated network') - end - - should 'federated network should have unique identifier' do - f1 = FederatedNetwork.create(name: 'Test', url: 'http://www.test.com', - identifier: 'Federation') - assert(f1.valid?, 'not a valid federated network on f1') - - f2 = FederatedNetwork.create(name: 'Test2', url: 'test.org', - identifier: f1.identifier) - assert_not(f2.valid?, 'f2 should not be a valid federated network') - end - - should 'validades presence of identifier on federated network' do - f = FederatedNetwork.create(name: 'Test', url: 'test.org') - assert_not(f.valid?, 'should not be a valid federated network') - end -end -- libgit2 0.21.2