Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
go-gitlab
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
go-gitlab
Commits
ec04b8b2
Commit
ec04b8b2
authored
May 16, 2019
by
Jordan Caussat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Jira service: change JiraTransitionID from int to string
parent
a11ea797
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
49 additions
and
37 deletions
+49
-37
services.go
services.go
+6
-11
services_test.go
services_test.go
+43
-26
No files found.
services.go
View file @
ec04b8b2
...
...
@@ -19,7 +19,6 @@ package gitlab
import
(
"encoding/json"
"fmt"
"net/url"
"reflect"
"strconv"
"time"
...
...
@@ -402,9 +401,7 @@ type JiraServiceProperties struct {
// UnmarshalJSON decodes the Jira Service Properties.
//
// The Gitlab API returns under some circumstances JiraIssueTransitionID
// as a string and sometimes as an integer. This function converts the
// returned value into an integer.
// This allows support of JiraIssueTransitionID for both type string (>11.9) and float64 (<11.9)
func
(
p
*
JiraServiceProperties
)
UnmarshalJSON
(
b
[]
byte
)
error
{
type
Alias
JiraServiceProperties
aux
:=
&
struct
{
...
...
@@ -419,16 +416,14 @@ func (p *JiraServiceProperties) UnmarshalJSON(b []byte) error {
}
switch
id
:=
aux
.
JiraIssueTransitionID
.
(
type
)
{
case
nil
:
p
.
JiraIssueTransitionID
=
""
case
string
:
converted
,
err
:=
strconv
.
Atoi
(
id
)
if
err
!=
nil
{
return
err
}
p
.
JiraIssueTransitionID
=
func
(
i
int
)
*
int
{
return
&
i
}(
converted
)
p
.
JiraIssueTransitionID
=
id
case
float64
:
p
.
JiraIssueTransitionID
=
Int
(
int
(
id
))
p
.
JiraIssueTransitionID
=
strconv
.
Itoa
(
int
(
id
))
default
:
return
fmt
.
Errorf
(
"failed to unmarshal JiraTransitionID of type: %
s
"
,
reflect
.
TypeOf
(
id
))
return
fmt
.
Errorf
(
"failed to unmarshal JiraTransitionID of type: %
v
"
,
reflect
.
TypeOf
(
id
))
}
return
nil
...
...
services_test.go
View file @
ec04b8b2
...
...
@@ -113,43 +113,60 @@ func TestGetJiraService(t *testing.T) {
mux
,
server
,
client
:=
setup
()
defer
teardown
(
server
)
mux
.
HandleFunc
(
"/api/v4/projects/
1
/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
mux
.
HandleFunc
(
"/api/v4/projects/
0
/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
testMethod
(
t
,
r
,
"GET"
)
fmt
.
Fprint
(
w
,
`{"id":1, "properties": {"jira_issue_transition_id": "2"}}`
)
})
mux
.
HandleFunc
(
"/api/v4/projects/
2
/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
mux
.
HandleFunc
(
"/api/v4/projects/
1
/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
testMethod
(
t
,
r
,
"GET"
)
fmt
.
Fprint
(
w
,
`{"id":1, "properties": {"jira_issue_transition_id": 2}}`
)
})
mux
.
HandleFunc
(
"/api/v4/projects/
3
/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
mux
.
HandleFunc
(
"/api/v4/projects/
2
/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
testMethod
(
t
,
r
,
"GET"
)
fmt
.
Fprint
(
w
,
`{"id":
3
, "properties": {"jira_issue_transition_id": "2,3"}}`
)
fmt
.
Fprint
(
w
,
`{"id":
1
, "properties": {"jira_issue_transition_id": "2,3"}}`
)
})
want
:=
&
JiraService
{
Service
:
Service
{
ID
:
1
},
Properties
:
&
JiraServiceProperties
{
JiraIssueTransitionID
:
Int
(
2
),
}}
service
,
_
,
err
:=
client
.
Services
.
GetJiraService
(
1
)
if
err
!=
nil
{
t
.
Fatalf
(
"Services.GetJiraService returns an error: %v"
,
err
)
}
if
!
reflect
.
DeepEqual
(
want
,
service
)
{
t
.
Errorf
(
"Services.GetJiraService returned %+v, want %+v"
,
service
,
want
)
}
service
,
_
,
err
=
client
.
Services
.
GetJiraService
(
2
)
if
err
!=
nil
{
t
.
Fatalf
(
"Services.GetJiraService returns an error: %v"
,
err
)
}
mux
.
HandleFunc
(
"/api/v4/projects/3/services/jira"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
testMethod
(
t
,
r
,
"GET"
)
fmt
.
Fprint
(
w
,
`{"id":1, "properties": {}}`
)
})
if
!
reflect
.
DeepEqual
(
want
,
service
)
{
t
.
Errorf
(
"Services.GetJiraService returned %+v, want %+v"
,
service
,
want
)
want
:=
[]
*
JiraService
{
&
JiraService
{
Service
:
Service
{
ID
:
1
},
Properties
:
&
JiraServiceProperties
{
JiraIssueTransitionID
:
"2"
,
},
},
&
JiraService
{
Service
:
Service
{
ID
:
1
},
Properties
:
&
JiraServiceProperties
{
JiraIssueTransitionID
:
"2"
,
},
},
&
JiraService
{
Service
:
Service
{
ID
:
1
},
Properties
:
&
JiraServiceProperties
{
JiraIssueTransitionID
:
"2,3"
,
},
},
&
JiraService
{
Service
:
Service
{
ID
:
1
},
Properties
:
&
JiraServiceProperties
{},
},
}
for
testcase
:=
0
;
testcase
<
len
(
want
);
testcase
++
{
service
,
_
,
err
:=
client
.
Services
.
GetJiraService
(
testcase
)
if
err
!=
nil
{
t
.
Fatalf
(
"Services.GetJiraService returns an error: %v"
,
err
)
}
if
!
reflect
.
DeepEqual
(
want
[
testcase
],
service
)
{
t
.
Errorf
(
"Services.GetJiraService returned %+v, want %+v"
,
service
,
want
[
testcase
])
}
}
}
...
...
@@ -167,7 +184,7 @@ func TestSetJiraService(t *testing.T) {
ProjectKey
:
String
(
"as"
),
Username
:
String
(
"aas"
),
Password
:
String
(
"asd"
),
JiraIssueTransitionID
:
String
(
"2"
),
JiraIssueTransitionID
:
String
(
"2
,3
"
),
}
_
,
err
:=
client
.
Services
.
SetJiraService
(
1
,
opt
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment