This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 37220be9f fix(jira): include fields=*all in Jira Server issue search
query (#9149)
37220be9f is described below
commit 37220be9fe88c04e5e711dafa1c5d5025339d450
Author: Keerthan Poojary <[email protected]>
AuthorDate: Tue Sep 22 09:22:20 2026 +0530
fix(jira): include fields=*all in Jira Server issue search query (#9149)
---
backend/plugins/jira/tasks/issue_collector.go | 1 +
backend/plugins/jira/tasks/issue_extractor_test.go | 83 ++++++++++++++++++++++
2 files changed, 84 insertions(+)
diff --git a/backend/plugins/jira/tasks/issue_collector.go
b/backend/plugins/jira/tasks/issue_collector.go
index ff5dd8fd8..20d4e38dd 100644
--- a/backend/plugins/jira/tasks/issue_collector.go
+++ b/backend/plugins/jira/tasks/issue_collector.go
@@ -233,6 +233,7 @@ func setupIssueV2Collector(apiCollector
*api.StatefulApiCollector, data *JiraTas
query.Set("startAt", fmt.Sprintf("%v",
reqData.Pager.Skip))
query.Set("maxResults", fmt.Sprintf("%v",
reqData.Pager.Size))
query.Set("expand", "changelog")
+ query.Set("fields", "*all")
return query, nil
},
GetTotalPages: GetTotalPagesFromResponse,
diff --git a/backend/plugins/jira/tasks/issue_extractor_test.go
b/backend/plugins/jira/tasks/issue_extractor_test.go
index 97489fd8a..72628a696 100644
--- a/backend/plugins/jira/tasks/issue_extractor_test.go
+++ b/backend/plugins/jira/tasks/issue_extractor_test.go
@@ -124,3 +124,86 @@ func jiraIssueFromResults(results []interface{})
*models.JiraIssue {
}
return nil
}
+
+func TestExtractIssuesWorklog(t *testing.T) {
+ mappings := &typeMappings{
+ TypeIdMappings: map[string]string{},
+ StdTypeMappings: map[string]string{},
+ StandardStatusMappings: map[string]models.StatusMappings{},
+ }
+ data := &JiraTaskData{
+ Options: &JiraOptions{
+ ConnectionId: 1,
+ BoardId: 1,
+ },
+ }
+
+ t.Run("extracts embedded worklog when fields contain worklog", func(t
*testing.T) {
+ worklogJSON := `"worklog": {
+ "startAt": 0,
+ "maxResults": 20,
+ "total": 1,
+ "worklogs": [{
+ "id": "1001",
+ "issueId": "10001",
+ "timeSpent": "1h",
+ "timeSpentSeconds": 3600,
+ "created": "2024-01-01T00:00:00.000+0000",
+ "updated": "2024-01-01T00:00:00.000+0000",
+ "started": "2024-01-01T00:00:00.000+0000"
+ }]
+ }`
+ raw := minimalIssueJSON(worklogJSON)
+ var apiIssue apiv2models.Issue
+ if err := json.Unmarshal(raw, &apiIssue); err != nil {
+ t.Fatalf("unmarshal issue: %v", err)
+ }
+ results, err := extractIssues(data, mappings, &apiIssue,
&api.RawData{Data: raw}, nil)
+ if err != nil {
+ t.Fatalf("extractIssues() error = %v", err)
+ }
+ issue := jiraIssueFromResults(results)
+ if issue == nil {
+ t.Fatal("extractIssues() did not return a JiraIssue")
+ }
+ if issue.WorklogTotal != 1 {
+ t.Errorf("WorklogTotal = %d, want 1",
issue.WorklogTotal)
+ }
+ var extractedWorklogs []*models.JiraWorklog
+ for _, r := range results {
+ if w, ok := r.(*models.JiraWorklog); ok {
+ extractedWorklogs = append(extractedWorklogs, w)
+ }
+ }
+ if len(extractedWorklogs) != 1 {
+ t.Fatalf("len(extractedWorklogs) = %d, want 1",
len(extractedWorklogs))
+ }
+ if extractedWorklogs[0].WorklogId != "1001" {
+ t.Errorf("WorklogId = %s, want 1001",
extractedWorklogs[0].WorklogId)
+ }
+ })
+
+ t.Run("no worklog extracted when worklog field is absent", func(t
*testing.T) {
+ raw := minimalIssueJSON("")
+ var apiIssue apiv2models.Issue
+ if err := json.Unmarshal(raw, &apiIssue); err != nil {
+ t.Fatalf("unmarshal issue: %v", err)
+ }
+ results, err := extractIssues(data, mappings, &apiIssue,
&api.RawData{Data: raw}, nil)
+ if err != nil {
+ t.Fatalf("extractIssues() error = %v", err)
+ }
+ issue := jiraIssueFromResults(results)
+ if issue == nil {
+ t.Fatal("extractIssues() did not return a JiraIssue")
+ }
+ if issue.WorklogTotal != 0 {
+ t.Errorf("WorklogTotal = %d, want 0",
issue.WorklogTotal)
+ }
+ for _, r := range results {
+ if _, ok := r.(*models.JiraWorklog); ok {
+ t.Errorf("unexpected JiraWorklog extracted when
worklog field is absent")
+ }
+ }
+ })
+}