diff --git a/devops-service/devops-service.rb b/devops-service/devops-service.rb index 89878bb..c352e72 100644 --- a/devops-service/devops-service.rb +++ b/devops-service/devops-service.rb @@ -64,12 +64,8 @@ class DevopsService < Sinatra::Base begin mongo.key provider.ssh_key, Key::SYSTEM rescue RecordNotFound => e - begin - k = Key.new({"id" => provider.ssh_key, "path" => provider.certificate_path, "scope" => Key::SYSTEM}) - mongo.key_insert k - rescue InvalidRecord => e - puts "ERROR: an error occured during inserting #{provider.name} key" - end + k = Key.new({"id" => provider.ssh_key, "path" => provider.certificate_path, "scope" => Key::SYSTEM}) + mongo.key_insert k end end end diff --git a/devops-service/routes/v2.0/project.rb b/devops-service/routes/v2.0/project.rb index c89063f..f619218 100644 --- a/devops-service/routes/v2.0/project.rb +++ b/devops-service/routes/v2.0/project.rb @@ -515,7 +515,7 @@ module Version2_0 private def create_roles project_id, envs, logger all_roles = KnifeCommands.roles - return "Can't get roles list" if all_roles.nil? + return " Can't get roles list" if all_roles.nil? roles = {:new => [], :error => [], :exist => []} envs.each do |e| role_name = KnifeCommands.role_name(project_id, e.identifier) @@ -543,11 +543,14 @@ module Version2_0 end def create_roles_response roles - info = "" - info += " Project roles '#{roles[:new].join("', '")}' have been automaticaly created" unless roles[:new].empty? - info += " Project roles '#{roles[:exist].join("', '")}' weren't created because they exist" unless roles[:exist].empty? - info += " Project roles '#{roles[:error].join("', '")}' weren't created because of internal error" unless roles[:error].empty? - info + if roles.is_a?(String) + roles + else + info = "" + info += " Project roles '#{roles[:new].join("', '")}' have been automaticaly created" unless roles[:new].empty? + info += " Project roles '#{roles[:exist].join("', '")}' weren't created because they exist" unless roles[:exist].empty? + info += " Project roles '#{roles[:error].join("', '")}' weren't created because of internal error" unless roles[:error].empty? + end end end end diff --git a/devops-service/tests/generate_tests.rb b/devops-service/tests/generate_tests.rb index bd4eced..dd7cdc2 100755 --- a/devops-service/tests/generate_tests.rb +++ b/devops-service/tests/generate_tests.rb @@ -65,6 +65,7 @@ templates = { "templates/api_v2/10_create/10_image.feature.erb" => "features/api_v2/10_create/10_image.feature", "templates/api_v2/10_create/20_project.feature.erb" => "features/api_v2/10_create/20_project.feature", "templates/api_v2/10_create/30_script.feature.erb" => "features/api_v2/10_create/30_script.feature", + "templates/api_v2/10_create/40_deploy_env.feature.erb" => "features/api_v2/10_create/40_deploy_env.feature", "templates/api_v2/10_create/00_user.feature.erb" => "features/api_v2/10_create/00_user.feature", #update @@ -73,6 +74,7 @@ templates = { #delete "templates/api_v2/90_delete/10_script.feature.erb" => "features/api_v2/90_delete/10_script.feature", + "templates/api_v2/90_delete/20_deploy_env.feature.erb" => "features/api_v2/90_delete/20_deploy_env.feature", "templates/api_v2/90_delete/80_project.feature.erb" => "features/api_v2/90_delete/80_project.feature", "templates/api_v2/90_delete/90_image.feature.erb" => "features/api_v2/90_delete/90_image.feature", "templates/api_v2/90_delete/99_filter.feature.erb" => "features/api_v2/90_delete/99_filter.feature", diff --git a/devops-service/tests/templates/api_v2/10_create/20_project.feature.erb b/devops-service/tests/templates/api_v2/10_create/20_project.feature.erb index a56f477..ca71f7a 100644 --- a/devops-service/tests/templates/api_v2/10_create/20_project.feature.erb +++ b/devops-service/tests/templates/api_v2/10_create/20_project.feature.erb @@ -56,3 +56,25 @@ Feature: create project } """ Then response should be '201' + + + @static + Scenario: Create project <%= @config["static"]["project"]["name"] %> + When I send POST '/v2.0/project' query with JSON body + """ + { + "deploy_envs": [ + { + "identifier": "<%= @config["static"]["project"]["env"] %>", + "run_list": [], + "expires": null, + "provider": "static", + "users": [ + "<%= @config["username"] %>" + ] + } + ], + "name": "<%= @config["static"]["project"]["name"] %>" + } + """ + Then response should be '201' diff --git a/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb b/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb new file mode 100644 index 0000000..d513a03 --- /dev/null +++ b/devops-service/tests/templates/api_v2/10_create/40_deploy_env.feature.erb @@ -0,0 +1,25 @@ +@project @deploy_env +Feature: Delete deploy env + + @static + <% project_name = @config["static"]["project"]["name"] %> + Scenario: Delete deploy env for project <%= project_name %> + When I send PUT '/v2.0/project/<%= project_name %>' query with JSON body + """ + { + "deploy_envs": [ + { + "identifier": "test", + "run_list": [], + "expires": null, + "provider": "static", + "users": [ + "test" + ] + } + ], + "name": "<%= project_name %>" + } + """ + Then response should be '200' + diff --git a/devops-service/tests/templates/api_v2/90_delete/20_deploy_env.feature.erb b/devops-service/tests/templates/api_v2/90_delete/20_deploy_env.feature.erb new file mode 100644 index 0000000..d513a03 --- /dev/null +++ b/devops-service/tests/templates/api_v2/90_delete/20_deploy_env.feature.erb @@ -0,0 +1,25 @@ +@project @deploy_env +Feature: Delete deploy env + + @static + <% project_name = @config["static"]["project"]["name"] %> + Scenario: Delete deploy env for project <%= project_name %> + When I send PUT '/v2.0/project/<%= project_name %>' query with JSON body + """ + { + "deploy_envs": [ + { + "identifier": "test", + "run_list": [], + "expires": null, + "provider": "static", + "users": [ + "test" + ] + } + ], + "name": "<%= project_name %>" + } + """ + Then response should be '200' + diff --git a/devops-service/tests/templates/api_v2/90_delete/80_project.feature.erb b/devops-service/tests/templates/api_v2/90_delete/80_project.feature.erb index 9d4e79e..e72d0d3 100644 --- a/devops-service/tests/templates/api_v2/90_delete/80_project.feature.erb +++ b/devops-service/tests/templates/api_v2/90_delete/80_project.feature.erb @@ -47,6 +47,31 @@ Feature: delete project } """ + + @static + Scenario: Delete static project with user without privileges + When I send DELETE '/v2.0/project/<%= @config["static"]["project"]["name"] %>' query with user without privileges + Then response should be '401' + + @static + Scenario: Delete static project without header 'Accept' + When I send DELETE '/v2.0/project/<%= @config["static"]["project"]["name"] %>' query without header 'Accept' + Then response should be '406' + + @static + Scenario: Delete static project + When I send DELETE '/v2.0/project/<%= @config["static"]["project"]["name"] %>' query + Then response should be '200' + And the Content-Type header should include 'application/json' + And the JSON response should be an object + And response should be JSON object like: + """ + { + "message" : "Project '<%= @config["static"]["project"]["name"] %>' is deleted" + } + """ + + Scenario: Delete unknown project When I send DELETE '/v2.0/project/foo' query Then response should be '404'