diff --git a/apps/dashboard/app/views/projects/show.html.erb b/apps/dashboard/app/views/projects/show.html.erb index 10b0bdbcfb..bf8c63b632 100644 --- a/apps/dashboard/app/views/projects/show.html.erb +++ b/apps/dashboard/app/views/projects/show.html.erb @@ -20,7 +20,10 @@
- <%= t('dashboard.project') %> <%= t('dashboard.directory') %> + <%= t('dashboard.project') %> <%= t('dashboard.directory') %> + <%- if Configuration.project_size_enabled -%> + + <%- end -%>
diff --git a/apps/dashboard/app/views/projects/show.json.jbuilder b/apps/dashboard/app/views/projects/show.json.jbuilder index 1f04d7e225..b89836c3d4 100644 --- a/apps/dashboard/app/views/projects/show.json.jbuilder +++ b/apps/dashboard/app/views/projects/show.json.jbuilder @@ -3,6 +3,8 @@ json.name @project.name json.description @project.description json.icon @project.icon json.directory @project.directory -project_size = @project.size -json.size project_size -json.human_size number_to_human_size(project_size) +if Configuration.project_size_enabled + project_size = @project.size + json.size project_size + json.human_size number_to_human_size(project_size) +end diff --git a/apps/dashboard/config/configuration_singleton.rb b/apps/dashboard/config/configuration_singleton.rb index f53aba23e3..17a0554284 100644 --- a/apps/dashboard/config/configuration_singleton.rb +++ b/apps/dashboard/config/configuration_singleton.rb @@ -53,6 +53,7 @@ def boolean_configs :motd_render_html => false, :upload_enabled => true, :download_enabled => true, + :project_size_enabled => true, }.freeze end diff --git a/apps/dashboard/test/fixtures/config/ondemand.d/booleans.yml b/apps/dashboard/test/fixtures/config/ondemand.d/booleans.yml index 7a048b730f..a5f83cb93a 100644 --- a/apps/dashboard/test/fixtures/config/ondemand.d/booleans.yml +++ b/apps/dashboard/test/fixtures/config/ondemand.d/booleans.yml @@ -12,3 +12,4 @@ cancel_session_enabled: true bc_clean_old_dirs: true hide_app_version: true motd_render_html: true +project_size_enabled: true diff --git a/apps/dashboard/test/fixtures/projects/json_response/.ondemand/manifest.yml b/apps/dashboard/test/fixtures/projects/json_response/.ondemand/manifest.yml new file mode 100644 index 0000000000..66caf75e77 --- /dev/null +++ b/apps/dashboard/test/fixtures/projects/json_response/.ondemand/manifest.yml @@ -0,0 +1,5 @@ +--- +id: json_response +name: JsonResponseName +description: JsonResponseDescription +icon: fas://user diff --git a/apps/dashboard/test/integration/projects_controller_test.rb b/apps/dashboard/test/integration/projects_controller_test.rb index d19090664b..1bf47c86b8 100644 --- a/apps/dashboard/test/integration/projects_controller_test.rb +++ b/apps/dashboard/test/integration/projects_controller_test.rb @@ -8,7 +8,7 @@ def setup Rails.application.reload_routes! end - test "should get index" do + test "should get index" do get projects_path assert_response :success end @@ -50,4 +50,41 @@ def setup assert Dir.exist?("#{dir}/projects") end end + + test "gets JSON reponse" do + project_dir = Rails.root.join('test/fixtures/projects/json_response') + OodAppkit.stubs(:dataroot).returns(project_dir) + Project.stubs(:lookup_table).returns({ 'json_response' => project_dir.to_s }) + Project.any_instance.expects(:size).once.returns(2097152) + + get project_path('json_response', format: :json) + assert_response :success + json = JSON.parse(@response.body) + assert_equal 'json_response', json['id'] + assert_equal 'JsonResponseName', json['name'] + assert_equal 'JsonResponseDescription', json['description'] + assert_equal project_dir.to_s, json['directory'] + assert_equal 'fas://user', json['icon'] + assert_equal 2097152, json['size'] + assert_equal '2 MB', json['human_size'] + end + + test "project size is not added to JSON reponse when Configuration.project_size_enabled is false" do + project_dir = Rails.root.join('test/fixtures/projects/json_response') + OodAppkit.stubs(:dataroot).returns(project_dir) + Configuration.stubs(:project_size_enabled).returns(false) + Project.stubs(:lookup_table).returns({ 'json_response' => project_dir.to_s }) + Project.any_instance.expects(:size).never + + get project_path('json_response', format: :json) + assert_response :success + json = JSON.parse(@response.body) + assert_equal 'json_response', json['id'] + assert_equal 'JsonResponseName', json['name'] + assert_equal 'JsonResponseDescription', json['description'] + assert_equal project_dir.to_s, json['directory'] + assert_equal 'fas://user', json['icon'] + assert_equal false, json.has_key?('size') + assert_equal false, json.has_key?('human_size') + end end