@onlineapps/conn-base-storage 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/package.json +2 -2
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -297
- package/coverage/coverage-final.json +0 -6
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -131
- package/coverage/index.js.html +0 -1579
- package/coverage/internal-url-adapter.js.html +0 -604
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/config.js.html +0 -244
- package/coverage/lcov-report/defaults.js.html +0 -214
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -176
- package/coverage/lcov-report/index.js.html +0 -2608
- package/coverage/lcov-report/internal-url-adapter.js.html +0 -559
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sharedUrlAdapter.js.html +0 -856
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -13
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/tests/component/storage.component.test.js +0 -363
- package/tests/integration/setup.js +0 -3
- package/tests/integration/storage.integration.test.js +0 -224
- package/tests/unit/internal-url-adapter.test.js +0 -210
- package/tests/unit/legacy.storage.test.js.bak +0 -614
- package/tests/unit/storage.extended.unit.test.js +0 -444
- package/tests/unit/storage.unit.test.js +0 -382
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Internal URL Adapter
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const InternalUrlAdapter = require('../../src/internal-url-adapter');
|
|
6
|
-
|
|
7
|
-
describe('InternalUrlAdapter @unit', () => {
|
|
8
|
-
let adapter;
|
|
9
|
-
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
adapter = new InternalUrlAdapter();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
describe('URL Resolution', () => {
|
|
15
|
-
test('should resolve internal://storage URL for Docker environment', () => {
|
|
16
|
-
adapter.dockerNetwork = true;
|
|
17
|
-
const internalUrl = 'internal://storage/bucket/path/to/file.json';
|
|
18
|
-
const resolved = adapter.resolve(internalUrl);
|
|
19
|
-
|
|
20
|
-
expect(resolved).toBe('http://api_services_storage:9000/bucket/path/to/file.json');
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
test('should resolve internal://storage URL for local environment', () => {
|
|
24
|
-
adapter.dockerNetwork = false;
|
|
25
|
-
const internalUrl = 'internal://storage/bucket/path/to/file.json';
|
|
26
|
-
const resolved = adapter.resolve(internalUrl);
|
|
27
|
-
|
|
28
|
-
expect(resolved).toBe('http://127.0.0.1:9000/bucket/path/to/file.json');
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test('should resolve internal://registry URL', () => {
|
|
32
|
-
adapter.dockerNetwork = false;
|
|
33
|
-
const internalUrl = 'internal://registry/services/list';
|
|
34
|
-
const resolved = adapter.resolve(internalUrl);
|
|
35
|
-
|
|
36
|
-
expect(resolved).toBe('http://127.0.0.1:8080/services/list');
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
test('should resolve internal://monitoring URL', () => {
|
|
40
|
-
adapter.dockerNetwork = true;
|
|
41
|
-
const internalUrl = 'internal://monitoring/metrics';
|
|
42
|
-
const resolved = adapter.resolve(internalUrl);
|
|
43
|
-
|
|
44
|
-
expect(resolved).toBe('http://api_monitoring:3000/metrics');
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
test('should pass through non-internal URLs unchanged', () => {
|
|
48
|
-
const normalUrl = 'http://example.com/path';
|
|
49
|
-
const resolved = adapter.resolve(normalUrl);
|
|
50
|
-
|
|
51
|
-
expect(resolved).toBe(normalUrl);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('should handle URLs with query parameters', () => {
|
|
55
|
-
adapter.dockerNetwork = false;
|
|
56
|
-
const internalUrl = 'internal://storage/bucket/file?version=2&download=true';
|
|
57
|
-
const resolved = adapter.resolve(internalUrl);
|
|
58
|
-
|
|
59
|
-
expect(resolved).toBe('http://127.0.0.1:9000/bucket/file?version=2&download=true');
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('should throw error for unknown service', () => {
|
|
63
|
-
const unknownUrl = 'internal://unknown-service/path';
|
|
64
|
-
|
|
65
|
-
expect(() => adapter.resolve(unknownUrl)).toThrow('Unknown service: unknown-service');
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('Reverse URL Conversion', () => {
|
|
70
|
-
test('should convert actual URL to internal format', () => {
|
|
71
|
-
const actualUrl = 'http://api_services_storage:9000/bucket/path/file.json';
|
|
72
|
-
const internal = adapter.toInternal(actualUrl, 'storage');
|
|
73
|
-
|
|
74
|
-
expect(internal).toBe('internal://storage/bucket/path/file.json');
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
test('should preserve query parameters in conversion', () => {
|
|
78
|
-
const actualUrl = 'http://127.0.0.1:9000/bucket/file?version=2';
|
|
79
|
-
const internal = adapter.toInternal(actualUrl, 'storage');
|
|
80
|
-
|
|
81
|
-
expect(internal).toBe('internal://storage/bucket/file?version=2');
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
describe('Service Registration', () => {
|
|
86
|
-
test('should register new service', () => {
|
|
87
|
-
adapter.registerService('custom', 'custom-container:8080', '127.0.0.1:8080');
|
|
88
|
-
|
|
89
|
-
const internalUrl = 'internal://custom/api/endpoint';
|
|
90
|
-
adapter.dockerNetwork = true;
|
|
91
|
-
const resolved = adapter.resolve(internalUrl);
|
|
92
|
-
|
|
93
|
-
expect(resolved).toBe('http://custom-container:8080/api/endpoint');
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
test('should override existing service', () => {
|
|
97
|
-
adapter.registerService('storage', 'new-storage:9001', '127.0.0.1:9001');
|
|
98
|
-
|
|
99
|
-
const internalUrl = 'internal://storage/bucket/file';
|
|
100
|
-
adapter.dockerNetwork = false;
|
|
101
|
-
const resolved = adapter.resolve(internalUrl);
|
|
102
|
-
|
|
103
|
-
expect(resolved).toBe('http://127.0.0.1:9001/bucket/file');
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('Response Transformation', () => {
|
|
108
|
-
test('should transform internal URLs in response object', () => {
|
|
109
|
-
adapter.dockerNetwork = false;
|
|
110
|
-
|
|
111
|
-
const response = {
|
|
112
|
-
url: 'internal://storage/bucket/file.json',
|
|
113
|
-
backup: 'internal://storage/backup/file.json',
|
|
114
|
-
metadata: {
|
|
115
|
-
thumbnail: 'internal://storage/thumbnails/thumb.jpg'
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const transformed = adapter.transformResponse(response);
|
|
120
|
-
|
|
121
|
-
expect(transformed.url).toBe('http://127.0.0.1:9000/bucket/file.json');
|
|
122
|
-
expect(transformed.backup).toBe('http://127.0.0.1:9000/backup/file.json');
|
|
123
|
-
expect(transformed.metadata.thumbnail).toBe('http://127.0.0.1:9000/thumbnails/thumb.jpg');
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('should handle arrays in response', () => {
|
|
127
|
-
adapter.dockerNetwork = false;
|
|
128
|
-
|
|
129
|
-
const response = {
|
|
130
|
-
files: [
|
|
131
|
-
'internal://storage/file1.json',
|
|
132
|
-
'internal://storage/file2.json',
|
|
133
|
-
'http://external.com/file3.json'
|
|
134
|
-
]
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
const transformed = adapter.transformResponse(response);
|
|
138
|
-
|
|
139
|
-
expect(transformed.files[0]).toBe('http://127.0.0.1:9000/file1.json');
|
|
140
|
-
expect(transformed.files[1]).toBe('http://127.0.0.1:9000/file2.json');
|
|
141
|
-
expect(transformed.files[2]).toBe('http://external.com/file3.json');
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
test('should handle nested objects', () => {
|
|
145
|
-
adapter.dockerNetwork = true;
|
|
146
|
-
|
|
147
|
-
const response = {
|
|
148
|
-
data: {
|
|
149
|
-
primary: {
|
|
150
|
-
location: 'internal://storage/primary/data.json'
|
|
151
|
-
},
|
|
152
|
-
secondary: {
|
|
153
|
-
location: 'internal://storage/secondary/data.json'
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
const transformed = adapter.transformResponse(response);
|
|
159
|
-
|
|
160
|
-
expect(transformed.data.primary.location).toBe('http://api_services_storage:9000/primary/data.json');
|
|
161
|
-
expect(transformed.data.secondary.location).toBe('http://api_services_storage:9000/secondary/data.json');
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
describe('Environment Detection', () => {
|
|
166
|
-
test('should respect DOCKER_NETWORK env hint via runtime config', () => {
|
|
167
|
-
const original = process.env.DOCKER_NETWORK;
|
|
168
|
-
process.env.DOCKER_NETWORK = 'true';
|
|
169
|
-
|
|
170
|
-
const adapter1 = new InternalUrlAdapter();
|
|
171
|
-
expect(adapter1.dockerNetwork).toBe(true);
|
|
172
|
-
|
|
173
|
-
if (original === undefined) {
|
|
174
|
-
delete process.env.DOCKER_NETWORK;
|
|
175
|
-
} else {
|
|
176
|
-
process.env.DOCKER_NETWORK = original;
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
describe('Available Services', () => {
|
|
182
|
-
test('should return list of available services', () => {
|
|
183
|
-
const services = adapter.getAvailableServices();
|
|
184
|
-
|
|
185
|
-
expect(services).toContain('storage');
|
|
186
|
-
expect(services).toContain('registry');
|
|
187
|
-
expect(services).toContain('monitoring');
|
|
188
|
-
expect(services).toContain('mq');
|
|
189
|
-
expect(services).toContain('cache');
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
describe('Custom Configuration', () => {
|
|
194
|
-
test('should accept custom service mappings', () => {
|
|
195
|
-
const customAdapter = new InternalUrlAdapter({
|
|
196
|
-
services: {
|
|
197
|
-
'my-service': {
|
|
198
|
-
docker: 'my-container:3000',
|
|
199
|
-
local: '127.0.0.1:3000'
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
customAdapter.dockerNetwork = false;
|
|
205
|
-
const resolved = customAdapter.resolve('internal://my-service/api');
|
|
206
|
-
|
|
207
|
-
expect(resolved).toBe('http://127.0.0.1:3000/api');
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
});
|