-
Notifications
You must be signed in to change notification settings - Fork 227
Expand file tree
/
Copy pathvariant-analysis-processor.test.ts
More file actions
116 lines (111 loc) · 4.37 KB
/
variant-analysis-processor.test.ts
File metadata and controls
116 lines (111 loc) · 4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import { expect } from 'chai';
import {
VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository,
} from '../../../remote-queries/gh-api/variant-analysis';
import {
VariantAnalysisQueryLanguage,
VariantAnalysisScannedRepository,
VariantAnalysisRepoStatus
} from '../../../remote-queries/shared/variant-analysis';
import { processVariantAnalysis } from '../../../remote-queries/variant-analysis-processor';
import { createMockScannedRepos } from '../../factories/remote-queries/gh-api/scanned-repositories';
import { createMockSkippedRepos } from '../../factories/remote-queries/gh-api/skipped-repositories';
import { createMockApiResponse } from '../../factories/remote-queries/gh-api/variant-analysis-api-response';
import { createMockSubmission } from '../../factories/remote-queries/shared/variant-analysis-submission';
describe('Variant Analysis processor', function() {
const scannedRepos = createMockScannedRepos();
const skippedRepos = createMockSkippedRepos();
const mockApiResponse = createMockApiResponse('completed', scannedRepos, skippedRepos);
const mockSubmission = createMockSubmission();
it('should process an API response and return a variant analysis', () => {
const result = processVariantAnalysis(mockSubmission, mockApiResponse);
const { access_mismatch_repos, no_codeql_db_repos, not_found_repo_nwos, over_limit_repos } = skippedRepos;
expect(result).to.eql({
'id': mockApiResponse.id,
'controllerRepoId': mockApiResponse.controller_repo.id,
'query': {
'filePath': 'query-file-path',
'language': VariantAnalysisQueryLanguage.Javascript,
'name': 'query-name',
},
'databases': {
'repositories': ['1', '2', '3'],
},
'status': 'succeeded',
'actionsWorkflowRunId': mockApiResponse.actions_workflow_run_id,
'scannedRepos': [
transformScannedRepo(VariantAnalysisRepoStatus.Succeeded, scannedRepos[0]),
transformScannedRepo(VariantAnalysisRepoStatus.Pending, scannedRepos[1]),
transformScannedRepo(VariantAnalysisRepoStatus.InProgress, scannedRepos[2]),
],
'skippedRepos': {
'accessMismatchRepos': {
'repositories': [
{
'fullName': access_mismatch_repos?.repositories[0].full_name,
'id': access_mismatch_repos?.repositories[0].id
},
{
'fullName': access_mismatch_repos?.repositories[1].full_name,
'id': access_mismatch_repos?.repositories[1].id
}
],
'repositoryCount': access_mismatch_repos?.repository_count
},
'noCodeqlDbRepos': {
'repositories': [
{
'fullName': no_codeql_db_repos?.repositories[0].full_name,
'id': no_codeql_db_repos?.repositories[0].id
},
{
'fullName': no_codeql_db_repos?.repositories[1].full_name,
'id': no_codeql_db_repos?.repositories[1].id,
}
],
'repositoryCount': 2
},
'notFoundRepos': {
'repositories': [
{
'fullName': not_found_repo_nwos?.repository_full_names[0]
},
{
'fullName': not_found_repo_nwos?.repository_full_names[1]
}
],
'repositoryCount': not_found_repo_nwos?.repository_count
},
'overLimitRepos': {
'repositories': [
{
'fullName': over_limit_repos?.repositories[0].full_name,
'id': over_limit_repos?.repositories[0].id
},
{
'fullName': over_limit_repos?.repositories[1].full_name,
'id': over_limit_repos?.repositories[1].id
}
],
'repositoryCount': over_limit_repos?.repository_count
}
}
});
});
function transformScannedRepo(
status: VariantAnalysisRepoStatus,
scannedRepo: ApiVariantAnalysisScannedRepository
): VariantAnalysisScannedRepository {
return {
'analysisStatus': status,
'artifactSizeInBytes': scannedRepo.artifact_size_in_bytes,
'failureMessage': scannedRepo.failure_message,
'repository': {
'fullName': scannedRepo.repository.full_name,
'id': scannedRepo.repository.id,
'private': scannedRepo.repository.private,
},
'resultCount': scannedRepo.result_count
};
}
});