@alterior/http 3.0.0-rc.5 → 3.0.0
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/dist/backend.js +4 -10
- package/dist/backend.js.map +1 -1
- package/dist/client.js +49 -59
- package/dist/client.js.map +1 -1
- package/dist/headers.js +65 -71
- package/dist/headers.js.map +1 -1
- package/dist/interceptor.js +14 -18
- package/dist/interceptor.js.map +1 -1
- package/dist/module.js +68 -80
- package/dist/module.js.map +1 -1
- package/dist/params.js +53 -62
- package/dist/params.js.map +1 -1
- package/dist/request.js +26 -32
- package/dist/request.js.map +1 -1
- package/dist/response.js +30 -48
- package/dist/response.js.map +1 -1
- package/dist/server.js +42 -52
- package/dist/server.js.map +1 -1
- package/dist/test/client.test.js +59 -59
- package/dist/test/client.test.js.map +1 -1
- package/dist/test/headers.test.js +58 -58
- package/dist/test/headers.test.js.map +1 -1
- package/dist/test/module.test.js +92 -130
- package/dist/test/module.test.js.map +1 -1
- package/dist/test/params.test.js +30 -30
- package/dist/test/params.test.js.map +1 -1
- package/dist/test/request.test.js +77 -77
- package/dist/test/request.test.js.map +1 -1
- package/dist/test/response.test.js +22 -22
- package/dist/test/response.test.js.map +1 -1
- package/dist/test/test.js +1 -1
- package/dist/test/test.js.map +1 -1
- package/dist/test/xhr.mock.js +38 -43
- package/dist/test/xhr.mock.js.map +1 -1
- package/dist/test/xhr.test.js +98 -99
- package/dist/test/xhr.test.js.map +1 -1
- package/dist/test/xsrf.test.js +28 -32
- package/dist/test/xsrf.test.js.map +1 -1
- package/dist/testing/api.js +2 -5
- package/dist/testing/api.js.map +1 -1
- package/dist/testing/backend.js +54 -58
- package/dist/testing/backend.js.map +1 -1
- package/dist/testing/module.js +20 -23
- package/dist/testing/module.js.map +1 -1
- package/dist/testing/request.js +33 -41
- package/dist/testing/request.js.map +1 -1
- package/dist/testing/request.test.js +11 -11
- package/dist/testing/request.test.js.map +1 -1
- package/dist/xhr.js +61 -68
- package/dist/xhr.js.map +1 -1
- package/dist/xsrf.js +16 -20
- package/dist/xsrf.js.map +1 -1
- package/package.json +5 -5
package/dist/testing/backend.js
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.HttpClientTestingBackend = void 0;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const tslib_1 = require("tslib");
|
|
12
|
+
const response_1 = require("../response");
|
|
13
|
+
const di_1 = require("@alterior/di");
|
|
14
|
+
const rxjs_1 = require("rxjs");
|
|
15
|
+
const request_1 = require("./request");
|
|
16
16
|
/**
|
|
17
17
|
* A testing backend for `HttpClient` which both acts as an `HttpBackend`
|
|
18
18
|
* and as the `HttpTestingController`.
|
|
@@ -24,8 +24,8 @@ var request_1 = require("./request");
|
|
|
24
24
|
*
|
|
25
25
|
*
|
|
26
26
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
let HttpClientTestingBackend = class HttpClientTestingBackend {
|
|
28
|
+
constructor() {
|
|
29
29
|
/**
|
|
30
30
|
* List of pending requests which have not yet been expected.
|
|
31
31
|
*/
|
|
@@ -34,45 +34,43 @@ var HttpClientTestingBackend = /** @class */ (function () {
|
|
|
34
34
|
/**
|
|
35
35
|
* Handle an incoming request by queueing it in the list of open requests.
|
|
36
36
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
_this.open.push(testReq);
|
|
37
|
+
handle(req) {
|
|
38
|
+
return new rxjs_1.Observable((observer) => {
|
|
39
|
+
const testReq = new request_1.TestRequest(req, observer);
|
|
40
|
+
this.open.push(testReq);
|
|
42
41
|
observer.next({ type: response_1.HttpEventType.Sent });
|
|
43
|
-
return
|
|
42
|
+
return () => { testReq._cancelled = true; };
|
|
44
43
|
});
|
|
45
|
-
}
|
|
44
|
+
}
|
|
46
45
|
/**
|
|
47
46
|
* Helper function to search for requests in the list of open requests.
|
|
48
47
|
*/
|
|
49
|
-
|
|
48
|
+
_match(match) {
|
|
50
49
|
if (typeof match === 'string') {
|
|
51
|
-
return this.open.filter(
|
|
50
|
+
return this.open.filter(testReq => testReq.request.urlWithParams === match);
|
|
52
51
|
}
|
|
53
52
|
else if (typeof match === 'function') {
|
|
54
|
-
return this.open.filter(
|
|
53
|
+
return this.open.filter(testReq => match(testReq.request));
|
|
55
54
|
}
|
|
56
55
|
else {
|
|
57
|
-
return this.open.filter(
|
|
58
|
-
(!match.url || testReq.request.urlWithParams === match.url)
|
|
56
|
+
return this.open.filter(testReq => (!match.method || testReq.request.method === match.method.toUpperCase()) &&
|
|
57
|
+
(!match.url || testReq.request.urlWithParams === match.url));
|
|
59
58
|
}
|
|
60
|
-
}
|
|
59
|
+
}
|
|
61
60
|
/**
|
|
62
61
|
* Search for requests in the list of open requests, and return all that match
|
|
63
62
|
* without asserting anything about the number of matches.
|
|
64
63
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
var index = _this.open.indexOf(result);
|
|
64
|
+
match(match) {
|
|
65
|
+
const results = this._match(match);
|
|
66
|
+
results.forEach(result => {
|
|
67
|
+
const index = this.open.indexOf(result);
|
|
70
68
|
if (index !== -1) {
|
|
71
|
-
|
|
69
|
+
this.open.splice(index, 1);
|
|
72
70
|
}
|
|
73
71
|
});
|
|
74
72
|
return results;
|
|
75
|
-
}
|
|
73
|
+
}
|
|
76
74
|
/**
|
|
77
75
|
* Expect that a single outstanding request matches the given matcher, and return
|
|
78
76
|
* it.
|
|
@@ -80,67 +78,65 @@ var HttpClientTestingBackend = /** @class */ (function () {
|
|
|
80
78
|
* Requests returned through this API will no longer be in the list of open requests,
|
|
81
79
|
* and thus will not match twice.
|
|
82
80
|
*/
|
|
83
|
-
|
|
81
|
+
expectOne(match, description) {
|
|
84
82
|
description = description || this.descriptionFromMatcher(match);
|
|
85
|
-
|
|
83
|
+
const matches = this.match(match);
|
|
86
84
|
if (matches.length > 1) {
|
|
87
|
-
throw new Error(
|
|
85
|
+
throw new Error(`Expected one matching request for criteria "${description}", found ${matches.length} requests.`);
|
|
88
86
|
}
|
|
89
87
|
if (matches.length === 0) {
|
|
90
|
-
throw new Error(
|
|
88
|
+
throw new Error(`Expected one matching request for criteria "${description}", found none.`);
|
|
91
89
|
}
|
|
92
90
|
return matches[0];
|
|
93
|
-
}
|
|
91
|
+
}
|
|
94
92
|
/**
|
|
95
93
|
* Expect that no outstanding requests match the given matcher, and throw an error
|
|
96
94
|
* if any do.
|
|
97
95
|
*/
|
|
98
|
-
|
|
96
|
+
expectNone(match, description) {
|
|
99
97
|
description = description || this.descriptionFromMatcher(match);
|
|
100
|
-
|
|
98
|
+
const matches = this.match(match);
|
|
101
99
|
if (matches.length > 0) {
|
|
102
|
-
throw new Error(
|
|
100
|
+
throw new Error(`Expected zero matching requests for criteria "${description}", found ${matches.length}.`);
|
|
103
101
|
}
|
|
104
|
-
}
|
|
102
|
+
}
|
|
105
103
|
/**
|
|
106
104
|
* Validate that there are no outstanding requests.
|
|
107
105
|
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var open = this.open;
|
|
106
|
+
verify(opts = {}) {
|
|
107
|
+
let open = this.open;
|
|
111
108
|
// It's possible that some requests may be cancelled, and this is expected.
|
|
112
109
|
// The user can ask to ignore open requests which have been cancelled.
|
|
113
110
|
if (opts.ignoreCancelled) {
|
|
114
|
-
open = open.filter(
|
|
111
|
+
open = open.filter(testReq => !testReq.cancelled);
|
|
115
112
|
}
|
|
116
113
|
if (open.length > 0) {
|
|
117
114
|
// Show the methods and URLs of open requests in the error, for convenience.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return method
|
|
115
|
+
const requests = open.map(testReq => {
|
|
116
|
+
const url = testReq.request.urlWithParams.split('?')[0];
|
|
117
|
+
const method = testReq.request.method;
|
|
118
|
+
return `${method} ${url}`;
|
|
122
119
|
})
|
|
123
120
|
.join(', ');
|
|
124
|
-
throw new Error(
|
|
121
|
+
throw new Error(`Expected no open requests, found ${open.length}: ${requests}`);
|
|
125
122
|
}
|
|
126
|
-
}
|
|
127
|
-
|
|
123
|
+
}
|
|
124
|
+
descriptionFromMatcher(matcher) {
|
|
128
125
|
if (typeof matcher === 'string') {
|
|
129
|
-
return
|
|
126
|
+
return `Match URL: ${matcher}`;
|
|
130
127
|
}
|
|
131
128
|
else if (typeof matcher === 'object') {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
return
|
|
129
|
+
const method = matcher.method || '(any)';
|
|
130
|
+
const url = matcher.url || '(any)';
|
|
131
|
+
return `Match method: ${method}, URL: ${url}`;
|
|
135
132
|
}
|
|
136
133
|
else {
|
|
137
|
-
return
|
|
134
|
+
return `Match by function: ${matcher.name}`;
|
|
138
135
|
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}());
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
HttpClientTestingBackend = (0, tslib_1.__decorate)([
|
|
139
|
+
(0, di_1.Injectable)()
|
|
140
|
+
], HttpClientTestingBackend);
|
|
145
141
|
exports.HttpClientTestingBackend = HttpClientTestingBackend;
|
|
146
142
|
//# sourceMappingURL=backend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/testing/backend.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/testing/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/module.js
CHANGED
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.HttpClientTestingModule = void 0;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
const tslib_1 = require("tslib");
|
|
12
|
+
const backend_1 = require("../backend");
|
|
13
|
+
const module_1 = require("../module");
|
|
14
|
+
const di_1 = require("@alterior/di");
|
|
15
|
+
const api_1 = require("./api");
|
|
16
|
+
const backend_2 = require("./backend");
|
|
17
17
|
/**
|
|
18
18
|
* Configures `HttpClientTestingBackend` as the `HttpBackend` used by `HttpClient`.
|
|
19
19
|
*
|
|
@@ -21,22 +21,19 @@ var backend_2 = require("./backend");
|
|
|
21
21
|
*
|
|
22
22
|
*
|
|
23
23
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
], HttpClientTestingModule);
|
|
39
|
-
return HttpClientTestingModule;
|
|
40
|
-
}());
|
|
24
|
+
let HttpClientTestingModule = class HttpClientTestingModule {
|
|
25
|
+
};
|
|
26
|
+
HttpClientTestingModule = (0, tslib_1.__decorate)([
|
|
27
|
+
(0, di_1.Module)({
|
|
28
|
+
imports: [
|
|
29
|
+
module_1.HttpClientModule,
|
|
30
|
+
],
|
|
31
|
+
providers: [
|
|
32
|
+
backend_2.HttpClientTestingBackend,
|
|
33
|
+
{ provide: backend_1.HttpBackend, useExisting: backend_2.HttpClientTestingBackend },
|
|
34
|
+
{ provide: api_1.HttpTestingController, useExisting: backend_2.HttpClientTestingBackend },
|
|
35
|
+
],
|
|
36
|
+
})
|
|
37
|
+
], HttpClientTestingModule);
|
|
41
38
|
exports.HttpClientTestingModule = HttpClientTestingModule;
|
|
42
39
|
//# sourceMappingURL=module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/testing/module.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/testing/module.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,wCAAuC;AACvC,sCAA2C;AAC3C,qCAAoC;AAEpC,+BAA4C;AAC5C,uCAAmD;AAGnD;;;;;;GAMG;AAWH,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;CACnC,CAAA;AADY,uBAAuB;IAVnC,IAAA,WAAM,EAAC;QACN,OAAO,EAAE;YACP,yBAAgB;SACjB;QACD,SAAS,EAAE;YACT,kCAAwB;YACxB,EAAC,OAAO,EAAE,qBAAW,EAAE,WAAW,EAAE,kCAAwB,EAAC;YAC7D,EAAC,OAAO,EAAE,2BAAqB,EAAE,WAAW,EAAE,kCAAwB,EAAC;SACxE;KACF,CAAC;GACW,uBAAuB,CACnC;AADY,0DAAuB"}
|
package/dist/testing/request.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.TestRequest = void 0;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const response_1 = require("../response");
|
|
12
|
+
const headers_1 = require("../headers");
|
|
13
13
|
/**
|
|
14
14
|
* A mock requests that was received and is ready to be answered.
|
|
15
15
|
*
|
|
@@ -18,8 +18,8 @@ var headers_1 = require("../headers");
|
|
|
18
18
|
*
|
|
19
19
|
*
|
|
20
20
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
class TestRequest {
|
|
22
|
+
constructor(request, observer) {
|
|
23
23
|
this.request = request;
|
|
24
24
|
this.observer = observer;
|
|
25
25
|
/**
|
|
@@ -27,30 +27,25 @@ var TestRequest = /** @class */ (function () {
|
|
|
27
27
|
*/
|
|
28
28
|
this._cancelled = false;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
get: function () { return this._cancelled; },
|
|
35
|
-
enumerable: false,
|
|
36
|
-
configurable: true
|
|
37
|
-
});
|
|
30
|
+
/**
|
|
31
|
+
* Whether the request was cancelled after it was sent.
|
|
32
|
+
*/
|
|
33
|
+
get cancelled() { return this._cancelled; }
|
|
38
34
|
/**
|
|
39
35
|
* Resolve the request by returning a body plus additional HTTP information (such as response
|
|
40
36
|
* headers) if provided.
|
|
41
37
|
*
|
|
42
38
|
* Both successful and unsuccessful responses can be delivered via `flush()`.
|
|
43
39
|
*/
|
|
44
|
-
|
|
45
|
-
if (opts === void 0) { opts = {}; }
|
|
40
|
+
flush(body, opts = {}) {
|
|
46
41
|
if (this.cancelled) {
|
|
47
|
-
throw new Error(
|
|
42
|
+
throw new Error(`Cannot flush a cancelled request.`);
|
|
48
43
|
}
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
const url = this.request.urlWithParams;
|
|
45
|
+
const headers = (opts.headers instanceof headers_1.HttpHeaders) ? opts.headers : new headers_1.HttpHeaders(opts.headers);
|
|
51
46
|
body = _maybeConvertBody(this.request.responseType, body);
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
let statusText = opts.statusText;
|
|
48
|
+
let status = opts.status !== undefined ? opts.status : 200;
|
|
54
49
|
if (opts.status === undefined) {
|
|
55
50
|
if (body === null) {
|
|
56
51
|
status = 204;
|
|
@@ -64,45 +59,43 @@ var TestRequest = /** @class */ (function () {
|
|
|
64
59
|
throw new Error('statusText is required when setting a custom status.');
|
|
65
60
|
}
|
|
66
61
|
if (status >= 200 && status < 300) {
|
|
67
|
-
this.observer.next(new response_1.HttpResponse({ body
|
|
62
|
+
this.observer.next(new response_1.HttpResponse({ body, headers, status, statusText, url }));
|
|
68
63
|
this.observer.complete();
|
|
69
64
|
}
|
|
70
65
|
else {
|
|
71
|
-
this.observer.error(new response_1.HttpErrorResponse({ error: body, headers
|
|
66
|
+
this.observer.error(new response_1.HttpErrorResponse({ error: body, headers, status, statusText, url }));
|
|
72
67
|
}
|
|
73
|
-
}
|
|
68
|
+
}
|
|
74
69
|
/**
|
|
75
70
|
* Resolve the request by returning an `ErrorEvent` (e.g. simulating a network failure).
|
|
76
71
|
*/
|
|
77
|
-
|
|
78
|
-
if (opts === void 0) { opts = {}; }
|
|
72
|
+
error(error, opts = {}) {
|
|
79
73
|
if (this.cancelled) {
|
|
80
|
-
throw new Error(
|
|
74
|
+
throw new Error(`Cannot return an error for a cancelled request.`);
|
|
81
75
|
}
|
|
82
76
|
if (opts.status && opts.status >= 200 && opts.status < 300) {
|
|
83
|
-
throw new Error(
|
|
77
|
+
throw new Error(`error() called with a successful status.`);
|
|
84
78
|
}
|
|
85
|
-
|
|
79
|
+
const headers = (opts.headers instanceof headers_1.HttpHeaders) ? opts.headers : new headers_1.HttpHeaders(opts.headers);
|
|
86
80
|
this.observer.error(new response_1.HttpErrorResponse({
|
|
87
|
-
error
|
|
88
|
-
headers
|
|
81
|
+
error,
|
|
82
|
+
headers,
|
|
89
83
|
status: opts.status || 0,
|
|
90
84
|
statusText: opts.statusText || '',
|
|
91
85
|
url: this.request.urlWithParams,
|
|
92
86
|
}));
|
|
93
|
-
}
|
|
87
|
+
}
|
|
94
88
|
/**
|
|
95
89
|
* Deliver an arbitrary `HttpEvent` (such as a progress event) on the response stream for this
|
|
96
90
|
* request.
|
|
97
91
|
*/
|
|
98
|
-
|
|
92
|
+
event(event) {
|
|
99
93
|
if (this.cancelled) {
|
|
100
|
-
throw new Error(
|
|
94
|
+
throw new Error(`Cannot send events to a cancelled request.`);
|
|
101
95
|
}
|
|
102
96
|
this.observer.next(event);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
}());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
106
99
|
exports.TestRequest = TestRequest;
|
|
107
100
|
/**
|
|
108
101
|
* Helper function to convert a response body to an ArrayBuffer.
|
|
@@ -134,19 +127,18 @@ function _toBlob(body) {
|
|
|
134
127
|
/**
|
|
135
128
|
* Helper function to convert a response body to JSON data.
|
|
136
129
|
*/
|
|
137
|
-
function _toJsonBody(body, format) {
|
|
138
|
-
if (format === void 0) { format = 'JSON'; }
|
|
130
|
+
function _toJsonBody(body, format = 'JSON') {
|
|
139
131
|
if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer) {
|
|
140
|
-
throw new Error(
|
|
132
|
+
throw new Error(`Automatic conversion to ${format} is not supported for ArrayBuffers.`);
|
|
141
133
|
}
|
|
142
134
|
if (typeof Blob !== 'undefined' && body instanceof Blob) {
|
|
143
|
-
throw new Error(
|
|
135
|
+
throw new Error(`Automatic conversion to ${format} is not supported for Blobs.`);
|
|
144
136
|
}
|
|
145
137
|
if (typeof body === 'string' || typeof body === 'number' || typeof body === 'object' ||
|
|
146
138
|
Array.isArray(body)) {
|
|
147
139
|
return body;
|
|
148
140
|
}
|
|
149
|
-
throw new Error(
|
|
141
|
+
throw new Error(`Automatic conversion to ${format} is not supported for response type.`);
|
|
150
142
|
}
|
|
151
143
|
/**
|
|
152
144
|
* Helper function to convert a response body to a string.
|
|
@@ -180,7 +172,7 @@ function _maybeConvertBody(responseType, body) {
|
|
|
180
172
|
case 'text':
|
|
181
173
|
return _toTextBody(body);
|
|
182
174
|
default:
|
|
183
|
-
throw new Error(
|
|
175
|
+
throw new Error(`Unsupported responseType: ${responseType}`);
|
|
184
176
|
}
|
|
185
177
|
}
|
|
186
178
|
//# sourceMappingURL=request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/testing/request.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAIH,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/testing/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
* found in the LICENSE file at https://angular.io/license
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
(0, razmin_1.describe)('HttpClient TestRequest',
|
|
15
|
-
(0, razmin_1.it)('accepts a null body',
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
client.post('/some-url', { test: 'test' }).subscribe(
|
|
20
|
-
|
|
10
|
+
const razmin_1 = require("razmin");
|
|
11
|
+
const client_1 = require("../../src/client");
|
|
12
|
+
const backend_1 = require("./backend");
|
|
13
|
+
const chai_1 = require("chai");
|
|
14
|
+
(0, razmin_1.describe)('HttpClient TestRequest', () => {
|
|
15
|
+
(0, razmin_1.it)('accepts a null body', () => {
|
|
16
|
+
const mock = new backend_1.HttpClientTestingBackend();
|
|
17
|
+
const client = new client_1.HttpClient(mock);
|
|
18
|
+
let resp;
|
|
19
|
+
client.post('/some-url', { test: 'test' }).subscribe(body => { resp = body; });
|
|
20
|
+
const req = mock.expectOne('/some-url');
|
|
21
21
|
req.flush(null);
|
|
22
22
|
(0, chai_1.expect)(resp).to.be.null;
|
|
23
23
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.test.js","sourceRoot":"","sources":["../../src/testing/request.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,
|
|
1
|
+
{"version":3,"file":"request.test.js","sourceRoot":"","sources":["../../src/testing/request.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,mCAAoC;AAEpC,6CAA4C;AAC5C,uCAAmD;AACnD,+BAA4B;AAE5B,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAI,kCAAwB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,mBAAU,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAS,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|