Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-06-08 08:54:51 +0300
committerStan Hu <stanhu@gmail.com>2019-06-10 09:53:49 +0300
commit1a4d1b05012bad8a9624ed52ea563a2d54a77716 (patch)
treea3e6c6d48521d5697230d7f4c223c777ccdbd6af /spec/controllers
parent3017d2a52a3da5dc8e701f442b6d7c65c19cc054 (diff)
Fix Fogbugz Importer not working
This stopped working in GitLab 11.11 when we upgraded to Rails 5.1. Rails 5 changed ActionController::Parameters to return an Object instead of a Hash. The old behavior was deprecated in Rails 5 but finally removed in Rails 5.1 Since the controller wasn't updated properly, the callback endpoint quietly failed with the message, "Could not connect to FogBugz, check your url". To fix this, we need to call `to_h` on the `import_params` to access the Hash. We also need to do this for the user map and permit specific keys. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/33530
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/import/fogbugz_controller_spec.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/controllers/import/fogbugz_controller_spec.rb b/spec/controllers/import/fogbugz_controller_spec.rb
index f1e0923f316..f7c813576aa 100644
--- a/spec/controllers/import/fogbugz_controller_spec.rb
+++ b/spec/controllers/import/fogbugz_controller_spec.rb
@@ -11,6 +11,44 @@ describe Import::FogbugzController do
sign_in(user)
end
+ describe 'POST #callback' do
+ let(:token) { FFaker::Lorem.characters(8) }
+ let(:uri) { 'https://example.com' }
+ let(:xml_response) { %Q(<?xml version=\"1.0\" encoding=\"UTF-8\"?><response><token><![CDATA[#{token}]]></token></response>) }
+
+ it 'attempts to contact Fogbugz server' do
+ stub_request(:post, "https://example.com/api.asp").to_return(status: 200, body: xml_response, headers: {})
+
+ post :callback, params: { uri: uri, email: 'test@example.com', password: 'mypassword' }
+
+ expect(session[:fogbugz_token]).to eq(token)
+ expect(session[:fogbugz_uri]).to eq(uri)
+ expect(response).to redirect_to(new_user_map_import_fogbugz_path)
+ end
+ end
+
+ describe 'POST #create_user_map' do
+ let(:user_map) do
+ {
+ "2" => {
+ "name" => "Test User",
+ "email" => "testuser@example.com",
+ "gitlab_user" => "3"
+ }
+ }
+ end
+
+ it 'stores the user map in the session' do
+ client = double(user_map: {})
+ expect(controller).to receive(:client).and_return(client)
+
+ post :create_user_map, params: { users: user_map }
+
+ expect(session[:fogbugz_user_map]).to eq(user_map)
+ expect(response).to redirect_to(status_import_fogbugz_path)
+ end
+ end
+
describe 'GET status' do
before do
@repo = OpenStruct.new(name: 'vim')