Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/extensionManagement/test/common/configRemotes.test.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
8
import { getDomainsOfRemotes, getRemotes } from '../../common/configRemotes.js';
9
10
suite('Config Remotes', () => {
11
12
ensureNoDisposablesAreLeakedInTestSuite();
13
14
const allowedDomains = [
15
'github.com',
16
'github2.com',
17
'github3.com',
18
'example.com',
19
'example2.com',
20
'example3.com',
21
'server.org',
22
'server2.org',
23
];
24
25
test('HTTPS remotes', function () {
26
assert.deepStrictEqual(getDomainsOfRemotes(remote('https://github.com/microsoft/vscode.git'), allowedDomains), ['github.com']);
27
assert.deepStrictEqual(getDomainsOfRemotes(remote('https://git.example.com/gitproject.git'), allowedDomains), ['example.com']);
28
assert.deepStrictEqual(getDomainsOfRemotes(remote('https://[email protected]/username/repository.git'), allowedDomains), ['github2.com']);
29
assert.deepStrictEqual(getDomainsOfRemotes(remote('https://username:[email protected]/username/repository.git'), allowedDomains), ['github3.com']);
30
assert.deepStrictEqual(getDomainsOfRemotes(remote('https://username:[email protected]:1234/username/repository.git'), allowedDomains), ['example2.com']);
31
assert.deepStrictEqual(getDomainsOfRemotes(remote('https://example3.com:1234/username/repository.git'), allowedDomains), ['example3.com']);
32
});
33
34
test('SSH remotes', function () {
35
assert.deepStrictEqual(getDomainsOfRemotes(remote('ssh://[email protected]/project.git'), allowedDomains), ['server.org']);
36
});
37
38
test('SCP-like remotes', function () {
39
assert.deepStrictEqual(getDomainsOfRemotes(remote('[email protected]:microsoft/vscode.git'), allowedDomains), ['github.com']);
40
assert.deepStrictEqual(getDomainsOfRemotes(remote('[email protected]:project.git'), allowedDomains), ['server.org']);
41
assert.deepStrictEqual(getDomainsOfRemotes(remote('git.server2.org:project.git'), allowedDomains), ['server2.org']);
42
});
43
44
test('Local remotes', function () {
45
assert.deepStrictEqual(getDomainsOfRemotes(remote('/opt/git/project.git'), allowedDomains), []);
46
assert.deepStrictEqual(getDomainsOfRemotes(remote('file:///opt/git/project.git'), allowedDomains), []);
47
});
48
49
test('Multiple remotes', function () {
50
const config = ['https://github.com/microsoft/vscode.git', 'https://git.example.com/gitproject.git'].map(remote).join('');
51
assert.deepStrictEqual(getDomainsOfRemotes(config, allowedDomains).sort(), ['example.com', 'github.com']);
52
});
53
54
test('Non allowed domains are anonymized', () => {
55
const config = ['https://github.com/microsoft/vscode.git', 'https://git.foobar.com/gitproject.git'].map(remote).join('');
56
assert.deepStrictEqual(getDomainsOfRemotes(config, allowedDomains).sort(), ['aaaaaa.aaa', 'github.com']);
57
});
58
59
test('HTTPS remotes to be hashed', function () {
60
assert.deepStrictEqual(getRemotes(remote('https://github.com/microsoft/vscode.git')), ['github.com/microsoft/vscode.git']);
61
assert.deepStrictEqual(getRemotes(remote('https://git.example.com/gitproject.git')), ['git.example.com/gitproject.git']);
62
assert.deepStrictEqual(getRemotes(remote('https://[email protected]/username/repository.git')), ['github2.com/username/repository.git']);
63
assert.deepStrictEqual(getRemotes(remote('https://username:[email protected]/username/repository.git')), ['github3.com/username/repository.git']);
64
assert.deepStrictEqual(getRemotes(remote('https://username:[email protected]:1234/username/repository.git')), ['example2.com/username/repository.git']);
65
assert.deepStrictEqual(getRemotes(remote('https://example3.com:1234/username/repository.git')), ['example3.com/username/repository.git']);
66
67
// Strip .git
68
assert.deepStrictEqual(getRemotes(remote('https://github.com/microsoft/vscode.git'), true), ['github.com/microsoft/vscode']);
69
assert.deepStrictEqual(getRemotes(remote('https://git.example.com/gitproject.git'), true), ['git.example.com/gitproject']);
70
assert.deepStrictEqual(getRemotes(remote('https://[email protected]/username/repository.git'), true), ['github2.com/username/repository']);
71
assert.deepStrictEqual(getRemotes(remote('https://username:[email protected]/username/repository.git'), true), ['github3.com/username/repository']);
72
assert.deepStrictEqual(getRemotes(remote('https://username:[email protected]:1234/username/repository.git'), true), ['example2.com/username/repository']);
73
assert.deepStrictEqual(getRemotes(remote('https://example3.com:1234/username/repository.git'), true), ['example3.com/username/repository']);
74
75
// Compare Striped .git with no .git
76
assert.deepStrictEqual(getRemotes(remote('https://github.com/microsoft/vscode.git'), true), getRemotes(remote('https://github.com/microsoft/vscode')));
77
assert.deepStrictEqual(getRemotes(remote('https://git.example.com/gitproject.git'), true), getRemotes(remote('https://git.example.com/gitproject')));
78
assert.deepStrictEqual(getRemotes(remote('https://[email protected]/username/repository.git'), true), getRemotes(remote('https://[email protected]/username/repository')));
79
assert.deepStrictEqual(getRemotes(remote('https://username:[email protected]/username/repository.git'), true), getRemotes(remote('https://username:[email protected]/username/repository')));
80
assert.deepStrictEqual(getRemotes(remote('https://username:[email protected]:1234/username/repository.git'), true), getRemotes(remote('https://username:[email protected]:1234/username/repository')));
81
assert.deepStrictEqual(getRemotes(remote('https://example3.com:1234/username/repository.git'), true), getRemotes(remote('https://example3.com:1234/username/repository')));
82
});
83
84
test('SSH remotes to be hashed', function () {
85
assert.deepStrictEqual(getRemotes(remote('ssh://[email protected]/project.git')), ['git.server.org/project.git']);
86
87
// Strip .git
88
assert.deepStrictEqual(getRemotes(remote('ssh://[email protected]/project.git'), true), ['git.server.org/project']);
89
90
// Compare Striped .git with no .git
91
assert.deepStrictEqual(getRemotes(remote('ssh://[email protected]/project.git'), true), getRemotes(remote('ssh://[email protected]/project')));
92
});
93
94
test('SCP-like remotes to be hashed', function () {
95
assert.deepStrictEqual(getRemotes(remote('[email protected]:microsoft/vscode.git')), ['github.com/microsoft/vscode.git']);
96
assert.deepStrictEqual(getRemotes(remote('[email protected]:project.git')), ['git.server.org/project.git']);
97
assert.deepStrictEqual(getRemotes(remote('git.server2.org:project.git')), ['git.server2.org/project.git']);
98
99
// Strip .git
100
assert.deepStrictEqual(getRemotes(remote('[email protected]:microsoft/vscode.git'), true), ['github.com/microsoft/vscode']);
101
assert.deepStrictEqual(getRemotes(remote('[email protected]:project.git'), true), ['git.server.org/project']);
102
assert.deepStrictEqual(getRemotes(remote('git.server2.org:project.git'), true), ['git.server2.org/project']);
103
104
// Compare Striped .git with no .git
105
assert.deepStrictEqual(getRemotes(remote('[email protected]:microsoft/vscode.git'), true), getRemotes(remote('[email protected]:microsoft/vscode')));
106
assert.deepStrictEqual(getRemotes(remote('[email protected]:project.git'), true), getRemotes(remote('[email protected]:project')));
107
assert.deepStrictEqual(getRemotes(remote('git.server2.org:project.git'), true), getRemotes(remote('git.server2.org:project')));
108
});
109
110
test('Local remotes to be hashed', function () {
111
assert.deepStrictEqual(getRemotes(remote('/opt/git/project.git')), []);
112
assert.deepStrictEqual(getRemotes(remote('file:///opt/git/project.git')), []);
113
});
114
115
test('Multiple remotes to be hashed', function () {
116
const config = ['https://github.com/microsoft/vscode.git', 'https://git.example.com/gitproject.git'].map(remote).join(' ');
117
assert.deepStrictEqual(getRemotes(config), ['github.com/microsoft/vscode.git', 'git.example.com/gitproject.git']);
118
119
// Strip .git
120
assert.deepStrictEqual(getRemotes(config, true), ['github.com/microsoft/vscode', 'git.example.com/gitproject']);
121
122
// Compare Striped .git with no .git
123
const noDotGitConfig = ['https://github.com/microsoft/vscode', 'https://git.example.com/gitproject'].map(remote).join(' ');
124
assert.deepStrictEqual(getRemotes(config, true), getRemotes(noDotGitConfig));
125
});
126
127
function remote(url: string): string {
128
return `[remote "origin"]
129
url = ${url}
130
fetch = +refs/heads/*:refs/remotes/origin/*
131
`;
132
}
133
134
});
135
136