Skip to content

Commit ca7ff9c

Browse files
GaneshSPatilzabil
authored andcommitted
Changed the package material check-connection request from GET to POST (#2550)
* Changed the package material check-connection request from GET to POST Changed check_connection GET call to POST on package_as_material page * Added header constraints on the request
1 parent 5b074e2 commit ca7ff9c

File tree

5 files changed

+29
-18
lines changed

5 files changed

+29
-18
lines changed

server/webapp/WEB-INF/rails.new/app/assets/javascripts/package_material_check_connection.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,25 @@
1515
*************************GO-LICENSE-END**********************************/
1616

1717
PackageMaterialCheckConnection = function (url) {
18-
1918
_bind = function (parent_container_selector, check_connection_selector, connection_message_selector) {
2019
jQuery(parent_container_selector).on('click', check_connection_selector, function (e) {
2120
var connection_message_element = jQuery(connection_message_selector);
22-
connection_message_element.removeClass("error_message").removeClass("ok_message").text('Checking connection...');
21+
var authToken = jQuery(parent_container_selector).parents('form').find('[name=authenticity_token]');
22+
var inputs = jQuery(parent_container_selector + " :input");
23+
var formData = jQuery.merge(inputs, authToken).serialize();
24+
formData = formData.replace("_method=PUT", "_method=POST");
25+
2326
jQuery.ajax({
24-
type: "GET",
27+
type: "POST",
2528
url: url,
26-
data: jQuery(parent_container_selector + " :input").serialize(),
29+
data: formData,
2730
dataType: 'text',
28-
success: function (data) {
29-
var value = JSON.parse(data);
31+
beforeSend: function(xhr) {
32+
xhr.setRequestHeader('Confirm', 'true');
33+
connection_message_element.removeClass("error_message").removeClass("ok_message").text('Checking connection...');
34+
},
35+
complete: function (response) {
36+
var value = JSON.parse(response.responseText);
3037
if (value.error) {
3138
connection_message_element.removeClass("ok_message").addClass("error_message").text(value.error);
3239
} else {
@@ -36,7 +43,7 @@ PackageMaterialCheckConnection = function (url) {
3643
});
3744
return false;
3845
});
39-
}
46+
};
4047

4148
return {
4249
bind: _bind

server/webapp/WEB-INF/rails.new/config/routes.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@
142142
get "admin/package_definitions/:repo_id/:package_id/for_new_pipeline_wizard" => "admin/package_definitions#show_for_new_pipeline_wizard", as: :package_definitions_show_for_new_pipeline_wizard
143143
get "admin/package_definitions/:repo_id/:package_id/with_repository_list" => "admin/package_definitions#show_with_repository_list", as: :package_definitions_show_with_repository_list
144144
delete "admin/package_definitions/:repo_id/:package_id" => "admin/package_definitions#destroy", as: :package_definition_delete
145-
get "admin/package_definitions/check_connection" => "admin/package_definitions#check_connection", as: :package_definition_check_connection
145+
post "admin/package_definitions/check_connection" => "admin/package_definitions#check_connection", as: :package_definition_check_connection, constraints: HeaderConstraint.new
146146

147147
get "admin/package_repositories/new" => "admin/package_repositories#new", as: :package_repositories_new
148-
get "admin/package_repositories/check_connection" => "admin/package_repositories#check_connection", as: :package_repositories_check_connection
148+
post "admin/package_repositories/check_connection" => "admin/package_repositories#check_connection", as: :package_repositories_check_connection, constraints: HeaderConstraint.new
149149
get "admin/package_repositories/list" => "admin/package_repositories#list", as: :package_repositories_list
150150
get "admin/package_repositories/:id/edit" => "admin/package_repositories#edit", as: :package_repositories_edit
151151
post "admin/package_repositories" => "admin/package_repositories#create", as: :package_repositories_create

server/webapp/WEB-INF/rails.new/spec/controllers/admin/package_definitions_controller_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@
5555
package_definition_delete_path(:repo_id => "repoid", :package_id => "packageid").should == "/admin/package_definitions/repoid/packageid"
5656
end
5757

58+
it "should resolve route to check connection for repo" do
59+
expect_any_instance_of(HeaderConstraint).to receive(:matches?).with(any_args).and_return(true)
60+
expect({:post => "admin/package_definitions/check_connection"}).to route_to(:controller => "admin/package_definitions", :action => "check_connection")
61+
expect(package_definition_check_connection_path).to eq("/admin/package_definitions/check_connection")
62+
end
63+
5864
end
5965

6066
describe "action" do

server/webapp/WEB-INF/rails.new/spec/controllers/admin/package_repositories_controller_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@
5656
end
5757

5858
it "should resolve route to check connection for repo" do
59-
expect({:get => "/admin/package_repositories/check_connection?id=foo"}).to route_to(:controller => "admin/package_repositories", :action => "check_connection", :id => "foo")
59+
expect_any_instance_of(HeaderConstraint).to receive(:matches?).with(any_args).and_return(true)
60+
expect({:post => "admin/package_repositories/check_connection"}).to route_to(:controller => "admin/package_repositories", :action => "check_connection")
6061
expect(package_repositories_check_connection_path).to eq("/admin/package_repositories/check_connection")
6162
end
6263

server/webapp/WEB-INF/rails.new/spec/javascripts/package_material_check_connection_spec.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,24 @@ describe("package_material_check_connection", function () {
6161
jQuery.ajax = function (options) {
6262
actual_options = options;
6363
var waiting_message_element = jQuery('#connection_message');
64-
assertEquals('Checking connection...', waiting_message_element.text());
65-
assertEquals("Waiting message should not have success or error classes", false, waiting_message_element.hasClass("error_message"));
66-
assertEquals("Waiting message should not have success or error classes", false, waiting_message_element.hasClass("ok_message"));
67-
options.success('{"success":"Connection OK. Successfully accessed repository metadata at file:///tmp/repo/repodata/repomd.xml"}');
64+
options.complete({"responseText": '{ "success": "Connection OK. Successfully accessed repository metadata at file:///tmp/repo/repodata/repomd.xml" }'});
6865
};
6966
jQuery("#check_connection_button").click();
7067
assertEquals("admin/package_repositories/check_connection", actual_options.url);
71-
assertEquals("GET", actual_options.type);
68+
assertEquals("POST", actual_options.type);
7269
assertEquals("text", actual_options.dataType);
7370
assertEquals(jQuery('#parent_container :input').serialize(), actual_options.data);
74-
assertEquals("Should set ok_message class", true, jQuery("#connection_message").hasClass("ok_message"))
71+
assertEquals("Should set ok_message class", true, jQuery("#connection_message").hasClass("ok_message"));
7572
assertEquals("Connection ok message not showing up", "Connection OK. Successfully accessed repository metadata at file:///tmp/repo/repodata/repomd.xml", jQuery("#connection_message").text())
7673
});
7774

7875
it("testShouldCheckConnectionFailureMessage", function () {
7976
new PackageMaterialCheckConnection("admin/package_repositories/check_connection_button").bind("#parent_container", "#check_connection_button", "#connection_message");
8077
jQuery.ajax = function (options) {
81-
options.success('{"error":"Error in connection!!"}');
78+
options.complete({"responseText": '{"error":"Error in connection!!"}' });
8279
};
8380
jQuery("#check_connection_button").click();
84-
assertEquals("Should set error_message class", true, jQuery("#connection_message").hasClass("error_message"))
81+
assertEquals("Should set error_message class", true, jQuery("#connection_message").hasClass("error_message"));
8582
assertEquals("Error message not showing up", "Error in connection!!", jQuery("#connection_message").text())
8683
});
8784

0 commit comments

Comments
 (0)