+
+ [
+ [CollectionsController.new, api_fixture('collections')['user_agreement_in_anonymously_accessible_project']],
+ [CollectionsController.new, api_fixture('collections')['user_agreement_in_anonymously_accessible_project'], false],
+ [JobsController.new, api_fixture('jobs')['running_job_in_publicly_accessible_project']],
+ [JobsController.new, api_fixture('jobs')['running_job_in_publicly_accessible_project'], false],
+ [PipelineInstancesController.new, api_fixture('pipeline_instances')['pipeline_in_publicly_accessible_project']],
+ [PipelineInstancesController.new, api_fixture('pipeline_instances')['pipeline_in_publicly_accessible_project'], false],
+ [PipelineTemplatesController.new, api_fixture('pipeline_templates')['pipeline_template_in_publicly_accessible_project']],
+ [PipelineTemplatesController.new, api_fixture('pipeline_templates')['pipeline_template_in_publicly_accessible_project'], false],
+ [ProjectsController.new, api_fixture('groups')['anonymously_accessible_project']],
+ [ProjectsController.new, api_fixture('groups')['anonymously_accessible_project'], false],
+ ].each do |controller, fixture, anon_config=true|
+ test "#{controller} show method with anonymous config enabled" do
+ if anon_config
+ Rails.configuration.anonymous_user_token = api_fixture('api_client_authorizations')['anonymous']['api_token']
+ else
+ Rails.configuration.anonymous_user_token = false
+ end
+
+ @controller = controller
+
+ get(:show, {id: fixture['uuid']})
+
+ if anon_config
+ assert_response 200
+ if controller.class == JobsController
+ assert_includes @response.inspect, fixture['script']
+ else
+ assert_includes @response.inspect, fixture['name']
+ end
+ else
+ assert_response :redirect
+ assert_match /\/users\/welcome/, @response.redirect_url
+ end
+ end
+ end
+
+ [
+ true,
+ false,
+ ].each do |config|
+ test "invoke show with include_accept_encoding_header config #{config}" do
+ Rails.configuration.include_accept_encoding_header_in_api_requests = config
+
+ @controller = CollectionsController.new
+ get(:show, {id: api_fixture('collections')['foo_file']['uuid']}, session_for(:admin))
+
+ assert_equal([['.', 'foo', 3]], assigns(:object).files)
+ end
+ end
+
+ test 'Edit name and verify that a duplicate is not created' do
+ @controller = ProjectsController.new
+ project = api_fixture("groups")["aproject"]
+ post :update, {
+ id: project["uuid"],
+ project: {
+ name: 'test name'
+ },
+ format: :json
+ }, session_for(:active)
+ assert_includes @response.body, 'test name'
+ updated = assigns(:object)
+ assert_equal updated.uuid, project["uuid"]
+ assert_equal 'test name', updated.name
+ end
+
+ [
+ [VirtualMachinesController.new, 'hostname', false],
+ [UsersController.new, 'first_name', true],
+ ].each do |controller, expect_str, expect_home_link|
+ test "access #{controller.controller_name} index as admin and verify Home link is#{' not' if !expect_home_link} shown" do
+ @controller = controller
+
+ get :index, {}, session_for(:admin)
+
+ assert_response 200
+ assert_includes @response.body, expect_str
+
+ home_link = "/projects/#{api_fixture('users')['active']['uuid']}"
+
+ if expect_home_link
+ refute_empty css_select("[href=\"/projects/#{api_fixture('users')['active']['uuid']}\"]")
+ else
+ assert_empty css_select("[href=\"/projects/#{api_fixture('users')['active']['uuid']}\"]")
+ end
+ end
+ end
+
+ [
+ [VirtualMachinesController.new, 'hostname', true],
+ [UsersController.new, 'first_name', false],
+ ].each do |controller, expect_str, expect_delete_link|
+ test "access #{controller.controller_name} index as admin and verify Delete option is#{' not' if !expect_delete_link} shown" do
+ @controller = controller
+
+ get :index, {}, session_for(:admin)
+
+ assert_response 200
+ assert_includes @response.body, expect_str
+ if expect_delete_link
+ refute_empty css_select('[data-method=delete]')
+ else
+ assert_empty css_select('[data-method=delete]')
+ end
+ end
+ end