Import Github project via API fails with 500 error when github key wrong
Summary
When importing a github project via the API it fails with a 500 error if you provide a invalid GitHub personal access token. Looks like it's because provider_unauthorized
is undefined for the API
Steps to reproduce
Import any GitHub project via the API with an incorrect GitHub access token
curl -X POST \
'https://gitlab.example.com/api/v4/import/github?private_token=XXXXXXXX' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 9f5f9e32-ebf2-d969-7017-587facf61266' \
-d '{
"repo_id": "123456",
"new_name": "new-repo",
"target_namespace": "foobar",
"personal_access_token": "deliberately-wrong-github-token"
}'
What is the current bug behavior?
When you attempt to import a project from github and provide an invalid github token it results in a 500 error
What is the expected correct behavior?
When you attempt to import a project from github and provide an invalid github token, it should gracefully warn the user they are unauthorised to access
Relevant logs and/or screenshots
Started POST "/api/v4/import/github?private_token=[FILTERED]" for 58.173.202.188 at 2019-04-10 04:14:38 -0400
NoMethodError (undefined method `provider_unauthorized'):
lib/gitlab/middleware/multipart.rb:103:in `call'
lib/gitlab/request_profiler/middleware.rb:16:in `call'
lib/gitlab/middleware/go.rb:20:in `call'
lib/gitlab/etag_caching/middleware.rb:13:in `call'
lib/gitlab/middleware/correlation_id.rb:16:in `block in call'
lib/gitlab/correlation_id.rb:15:in `use_id'
lib/gitlab/middleware/correlation_id.rb:15:in `call'
lib/gitlab/middleware/read_only/controller.rb:40:in `call'
lib/gitlab/middleware/read_only.rb:18:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/request_context.rb:26:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:29:in `call'
lib/gitlab/middleware/release_env.rb:13:in `call'
Output of checks
This bug happens to GitLab.com
Possible fixes
In lib/api/import_github.rb
add method to output unauthorised message:
def provider_unauthorized
error!("Access denied to your #{Gitlab::ImportSources.title(provider.to_s)} account.", 500)
end