Details
-
Bug
-
Resolution: Answered
-
Low
-
4.3.1
-
Severity 3 - Minor
-
Description
Summary
Malformed URL generated with "//" when adding content to a Review via "Edit Details"
Environment
Crucible = Any Support Version (found in latest)
OS = Any (Win, Linux, MAC)
Browser =(Chrome, FireFox, IE)
Steps to Reproduce
- Open or create a Review in Crucible
- Start review if needed
- To see the "//" we will need use the browsers devtools inspect the requests and responses
- Select Edit Details
- In your browsers devtools select "Network"
- Select "edit-details" name under network activity to view response (this is a POST but, if you get a 302 you may need to view the next GET )
- At bottom of response you see "baseUrlSuffix": "/"}}if no default repo OR {{"baseUrlSuffix": "/<repos-name>"
- Select Add Content button
- Select Browse Changesets
- You will find a GET request for the repository or for "/" if no repo. View the Header information and you will see
"//" in the URL
Expected Results
The URL should not contain "//"
Actual Results
- edit-details response
{"errorMsg":"", "worked": true, "payloadHtml": "\n \n \n\n \n\n \u003cdiv id=\"managefiles\" class=\"details\"\u003e\n\n \n \n\n\n\n\n \u003cdiv id=\"selectChanges\" class=\"selectBucket\"\u003e\n \u003cdiv id=\"detailsBucket\" class=\"details\"\u003e\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv id=\"editDetailsContent\"\u003e\n \u003cdiv id=\"addReview\"\u003e\n\n \n\u003cform id=\"editDetailsForm\" class=\"aui\" action=\"/fisheye/cru/CR-9/postDetails\" method=\"post\" name=\"editDetailsForm\" accept-charset=\"UTF-8\"\u003e\n\n \n \n \n\n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"project-input\"\u003eProject\u003c/label\u003e\n\n \n\n \u003cinput type=\"hidden\"\n id=\"project-input\"\n name=\"projectKey\"\n class=\"select long-field\"\n value=\"CR\"\ndata-select2-type=\"project\"data-multiple=\"false\"data-limit=\"\"data-maximum-selection-size=\"\"data-minimum-input-length=\"\"data-source=\"/fisheye/json/cru/projectFinder?actionName=action:createReview\"data-initial-data=\"[{"id":"CR","displayPrimary":"CR","displaySecondary":"Default Project"}]\"/\u003e\n\n\n \u003c/div\u003e\n\n\n\n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"reviewTitle\"\u003eTitle\u003c/label\u003e\n \n\u003cinput class=\"text reviewTitle long-field\" type=\"text\" name=\"title\" id=\"reviewTitle\" value=\"more stuff\" maxlength=\"255\"/\u003e\n \u003c/div\u003e\n\n\n\n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"author-selected\"\u003eAuthor\u003c/label\u003e\n\n \n\n \u003cinput type=\"hidden\"\n id=\"author-selected\"\n name=\"newAuthor\"\n class=\"select long-field\"\n value=\"1\"\ndata-select2-type=\"users\"data-multiple=\"false\"data-limit=\"\"data-maximum-selection-size=\"\"data-minimum-input-length=\"\"data-source=\"/fisheye/json/cru/CR-9/reviewerFinder\"data-initial-data=\"[{"displayName":"sauce1173","username":"sauce1173","id":"1","avatarImageUrl":"http://dude.office.atlassian.com/fisheye/avatar/sauce1173?s=48","link":"\\u003ca class=\\"user avatar userorcommitter-parent\\" style='background-image:url(http://dude.office.atlassian.com/fisheye/avatar/sauce1173?s=19);padding-left:23px;' href=\\"/fisheye/user/sauce1173\\" title=\\"\\"\\u003e\\u003cspan class=\\"linkText\\"\\u003esauce1173\\u003c/span\\u003e\\u003c/a\\u003e","participant":"moderator"}]\"/\u003e\n\n\n \u003c/div\u003e\n\n\n\n \n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"moderator-selected\"\u003eModerator\u003c/label\u003e\n\n \n\n \u003cinput type=\"hidden\"\n id=\"moderator-selected\"\n name=\"newModerator\"\n class=\"select long-field\"\n value=\"1\"\ndata-select2-type=\"users\"data-multiple=\"false\"data-limit=\"\"data-maximum-selection-size=\"\"data-minimum-input-length=\"\"data-source=\"/fisheye/json/cru/CR-9/reviewerFinder\"data-initial-data=\"[{"displayName":"sauce1173","username":"sauce1173","id":"1","avatarImageUrl":"http://dude.office.atlassian.com/fisheye/avatar/sauce1173?s=48","link":"\\u003ca class=\\"user avatar userorcommitter-parent\\" style='background-image:url(http://dude.office.atlassian.com/fisheye/avatar/sauce1173?s=19);padding-left:23px;' href=\\"/fisheye/user/sauce1173\\" title=\\"\\"\\u003e\\u003cspan class=\\"linkText\\"\\u003esauce1173\\u003c/span\\u003e\\u003c/a\\u003e","participant":"moderator"}]\"/\u003e\n\n\n \u003c/div\u003e\n\n\n \n\n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"add-reviewer-input\"\u003eReviewers\u003c/label\u003e\n\n \n\n \u003cinput type=\"hidden\"\n id=\"add-reviewer-input\"\n name=\"reviewer\"\n class=\"select long-field\"\n value=\"\"\ndata-group-membership-url=\"/fisheye/rest-service/reviewer-search/CR-9/group-members/{group}\"data-select2-type=\"users-and-groups\"data-multiple=\"true\"data-limit=\"\"data-maximum-selection-size=\"\"data-minimum-input-length=\"\"data-source=\"/fisheye/rest-service/reviewer-search/CR-9/search\"data-initial-data=\"[]\"/\u003e\n\n\n \u003cdiv\u003e\n \n \n \n \n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ca\n \n\n\n\n\n\ntabindex=\"0\"\n\naria-controls=\"suggest-reviewers-inline-dialog2\"\naria-haspopup=\"true\"\nrole=\"button\"\ndata-aui-trigger\u003e\n\nSuggest reviewers...\n\n\u003c/a\u003e\n\n \n\n\n\n\n\n\n\n\n\n\n\u003caui-inline-dialog2 id=\"suggest-reviewers-inline-dialog2\"\n\nalignment=\"bottom left\"\nresponds-to=\"toggle\"\u003e\u003cdiv class=\"spinner-container\"\u003e\u003c/div\u003e\u003c/aui-inline-dialog2\u003e\n\n\n \n \n \n \n \u003cfieldset class=\"group edit-details-anybody\"\u003e\u003clegend\u003e\u003cspan\u003e\u003c/span\u003e\u003c/legend\u003e\u003cdiv class=\"checkbox\"\u003e\u003cinput class=\"checkbox\" type=\"checkbox\" name=\"allowJoin\" id=\"anybody\" value=\"true\" checked=\"checked\"/\u003e\u003clabel for=\"anybody\"\u003eAllow anyone to join\u003c/label\u003e\u003c/div\u003e\u003c/fieldset\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n\n\n \n\u003cdiv id=\"review-objectives\" class=\"field-group wiki-preview-wrapper\"\u003e\n \n\u003clabel for=\"description\"\u003eObjectives\u003c/label\u003e\n \u003cdiv class=\"long-field\"\u003e\n \n\u003ctextarea name=\"description\" class=\"textarea reviewDescription edit full-width-field \" id=\"description\" rows=\"4\" cols=\"32\"\u003e\u003c/textarea\u003e\n\n \u003cdiv class=\"wiki-preview-pane markup view wiki__new\" style=\"display: none;\"\u003e\u003c/div\u003e\u003cdiv class=\"wiki-preview-button-holder wiki__new\"\u003e\n\u003ca class=\"aui-button aui-button-subtle wiki-help-button aui-button-compact\" tabindex=\"0\"\u003e\u003cspan class=\"aui-icon aui-icon-small aui-iconfont-help\"\u003eWiki syntax help \u003c/span\u003e\u003c/a\u003e\n\n\u003ca class=\"aui-button aui-button-subtle wiki-preview-button aui-button-compact\" tabindex=\"0\"\u003e\u003cspan class=\"aui-icon aui-icon-small aui-iconfont-view\"\u003ePreview \u003c/span\u003e\u003c/a\u003e\n\u003cspan class=\"wiki-preview-button-spinner\"\u003e\u003c/span\u003e\u003c/div\u003e\n\n \u003c/div\u003e\n \u003c/div\u003e\n\n\n\n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"due-date-input\"\u003eDue Date\u003c/label\u003e\n \n\u003cspan class=\"pretty-date-time\" style=\"position: relative;\"\u003e\n \u003cinput name=\"due-date-input\" id=\"due-date-input\" type=\"text\" class=\"text\" style=\"width:90px\"\n value=\"03 Apr 2017\"\u003e\n \u003cinput name=\"due-date-store\" id=\"due-date-store\" type=\"hidden\"\n value=\"2017-04-03\"\u003e\n \n \u003cinput name=\"due-time-store\" id=\"due-time-store\" type=\"hidden\" value=\"T17:00:00\"\u003e\n \u003cspan style=\"position: relative;\"\u003e\n \u003cselect name=\"due-time-select\" id=\"due-time-select\" style=\"width:100px\"\u003e\n \n \n \u003coption value=\"T00:00:00\" \u003e12:00 AM\u003c/option\u003e\n \n \u003coption value=\"T00:30:00\" \u003e12:30 AM\u003c/option\u003e\n \n \u003coption value=\"T01:00:00\" \u003e01:00 AM\u003c/option\u003e\n \n \u003coption value=\"T01:30:00\" \u003e01:30 AM\u003c/option\u003e\n \n \u003coption value=\"T02:00:00\" \u003e02:00 AM\u003c/option\u003e\n \n \u003coption value=\"T02:30:00\" \u003e02:30 AM\u003c/option\u003e\n \n \u003coption value=\"T03:00:00\" \u003e03:00 AM\u003c/option\u003e\n \n \u003coption value=\"T03:30:00\" \u003e03:30 AM\u003c/option\u003e\n \n \u003coption value=\"T04:00:00\" \u003e04:00 AM\u003c/option\u003e\n \n \u003coption value=\"T04:30:00\" \u003e04:30 AM\u003c/option\u003e\n \n \u003coption value=\"T05:00:00\" \u003e05:00 AM\u003c/option\u003e\n \n \u003coption value=\"T05:30:00\" \u003e05:30 AM\u003c/option\u003e\n \n \u003coption value=\"T06:00:00\" \u003e06:00 AM\u003c/option\u003e\n \n \u003coption value=\"T06:30:00\" \u003e06:30 AM\u003c/option\u003e\n \n \u003coption value=\"T07:00:00\" \u003e07:00 AM\u003c/option\u003e\n \n \u003coption value=\"T07:30:00\" \u003e07:30 AM\u003c/option\u003e\n \n \u003coption value=\"T08:00:00\" \u003e08:00 AM\u003c/option\u003e\n \n \u003coption value=\"T08:30:00\" \u003e08:30 AM\u003c/option\u003e\n \n \u003coption value=\"T09:00:00\" \u003e09:00 AM\u003c/option\u003e\n \n \u003coption value=\"T09:30:00\" \u003e09:30 AM\u003c/option\u003e\n \n \u003coption value=\"T10:00:00\" \u003e10:00 AM\u003c/option\u003e\n \n \u003coption value=\"T10:30:00\" \u003e10:30 AM\u003c/option\u003e\n \n \u003coption value=\"T11:00:00\" \u003e11:00 AM\u003c/option\u003e\n \n \u003coption value=\"T11:30:00\" \u003e11:30 AM\u003c/option\u003e\n \n \u003coption value=\"T12:00:00\" \u003e12:00 PM\u003c/option\u003e\n \n \u003coption value=\"T12:30:00\" \u003e12:30 PM\u003c/option\u003e\n \n \u003coption value=\"T13:00:00\" \u003e01:00 PM\u003c/option\u003e\n \n \u003coption value=\"T13:30:00\" \u003e01:30 PM\u003c/option\u003e\n \n \u003coption value=\"T14:00:00\" \u003e02:00 PM\u003c/option\u003e\n \n \u003coption value=\"T14:30:00\" \u003e02:30 PM\u003c/option\u003e\n \n \u003coption value=\"T15:00:00\" \u003e03:00 PM\u003c/option\u003e\n \n \u003coption value=\"T15:30:00\" \u003e03:30 PM\u003c/option\u003e\n \n \u003coption value=\"T16:00:00\" \u003e04:00 PM\u003c/option\u003e\n \n \u003coption value=\"T16:30:00\" \u003e04:30 PM\u003c/option\u003e\n \n \u003coption value=\"T17:00:00\" selected=\"selected\"\u003e05:00 PM\u003c/option\u003e\n \n \u003coption value=\"T17:30:00\" \u003e05:30 PM\u003c/option\u003e\n \n \u003coption value=\"T18:00:00\" \u003e06:00 PM\u003c/option\u003e\n \n \u003coption value=\"T18:30:00\" \u003e06:30 PM\u003c/option\u003e\n \n \u003coption value=\"T19:00:00\" \u003e07:00 PM\u003c/option\u003e\n \n \u003coption value=\"T19:30:00\" \u003e07:30 PM\u003c/option\u003e\n \n \u003coption value=\"T20:00:00\" \u003e08:00 PM\u003c/option\u003e\n \n \u003coption value=\"T20:30:00\" \u003e08:30 PM\u003c/option\u003e\n \n \u003coption value=\"T21:00:00\" \u003e09:00 PM\u003c/option\u003e\n \n \u003coption value=\"T21:30:00\" \u003e09:30 PM\u003c/option\u003e\n \n \u003coption value=\"T22:00:00\" \u003e10:00 PM\u003c/option\u003e\n \n \u003coption value=\"T22:30:00\" \u003e10:30 PM\u003c/option\u003e\n \n \u003coption value=\"T23:00:00\" \u003e11:00 PM\u003c/option\u003e\n \n \u003coption value=\"T23:30:00\" \u003e11:30 PM\u003c/option\u003e\n \n \u003c/select\u003e\n \u003c/span\u003e\n \u003cinput name=\"dueDateString\" id=\"dueDateString\" type=\"hidden\" size=\"20\"\n value=\"2017-04-03T17:00:00\"\u003e\n\u003c/span\u003e\n \u003c/div\u003e\n\n\n\n \n\n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"parentReviewId\"\u003eLinked Review\u003c/label\u003e\n\n \n\n \u003cinput type=\"hidden\"\n id=\"parentReviewId\"\n name=\"parentReviewId\"\n class=\"select long-field\"\n value=\"\"\ndata-select2-type=\"review\"data-multiple=\"true\"data-limit=\"10\"data-maximum-selection-size=\"1\"data-minimum-input-length=\"2\"data-source=\"/fisheye/json/cru/reviewFinder\"data-initial-data=\"[{"url":"/fisheye/cru/","permaId":"","name":""}]\"/\u003e\n\n\n \u003c/div\u003e\n\n\n\n \n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"jiraIssueKey\"\u003eLinked Issue\u003c/label\u003e\n\n \n\n \u003cinput type=\"hidden\"\n id=\"jiraIssueKey\"\n name=\"jiraIssueKey\"\n class=\"select long-field\"\n value=\"\"\ndata-select2-type=\"jira\"data-multiple=\"true\"data-limit=\"\"data-maximum-selection-size=\"1\"data-minimum-input-length=\"2\"data-source=\"/fisheye/json/cru/CR-9/findJiraIssueAjax\"data-initial-data=\"[{"url":"/fisheye/action/jira-issue.do?key=","issueKey":""}]\"/\u003e\n\n\n \u003c/div\u003e\n\n\n \n\n \n\n \n \n\u003cdiv class=\"field-group\"\u003e\n \n\u003clabel for=\"inviteeInput\"\u003eInvited Reviewers\u003c/label\u003e\n \n\u003cinput class=\"text\" type=\"text\" name=\"inviteeInput\" id=\"inviteeInput\"/\u003e\n \n\u003cinput class=\"button\" type=\"button\" name=\"addInviteeButton\" id=\"addInviteeButton\" value=\"Invite\"/\u003e\n\n \u003cdiv style=\"margin-top: 10px\"\u003e\n \u003cspan id=\"inviteeSpan\"\u003e\n \n \u003c/span\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n\n \n\n \u003c/div\u003e\n \u003c/form\u003e\n\n\n\u003c/div\u003e\n\n \u003c/div\u003e\n \u003c/div\u003e\n \n \u003c/div\u003e\n \u003cscript type=\"text/javascript\"\u003e\n CRU.REVIEW.initialiseEditReview();\n CRU.REVIEW.initialiseEditReviewEvent();\n \u003c/script\u003e\n", "baseUrlSuffix": "/~user=sauce1173/clone" }
- GET request for the repository
Request URL:[http://dude.office.atlassian.com/fisheye/cru/TST-1/edit-changelog//~user=sauce1173/clone] Request Method:GET Status Code:200 OK Remote Address:X.X.X.X:80
It is possible that the malformed URL could cause an infinite loop if your proxy is not able to parse the "//".
Workaround
If the malformed URL causes an issue within your ENV. You can workaround this issue by:
Adding content by using the plus symbol "+" from the Review Details Page on the lefthand Side[{