@smess/networking 1.0.4 → 1.0.5
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/index.d.ts +9 -9
- package/dist/index.js +11 -31
- package/dist/scripts/real-test.js +60 -65
- package/dist/src/core/axios.d.ts +5 -12
- package/dist/src/core/axios.js +21 -24
- package/dist/src/core/axios.observable.d.ts +2 -2
- package/dist/src/core/axios.observable.js +14 -17
- package/dist/src/core/base.provider.advanced.test.js +3 -5
- package/dist/src/core/base.provider.d.ts +1 -1
- package/dist/src/core/base.provider.js +6 -6
- package/dist/src/core/base.provider.test.js +3 -5
- package/dist/src/core/base.service.wrapper.advanced.test.js +9 -11
- package/dist/src/core/base.service.wrapper.d.ts +1 -1
- package/dist/src/core/base.service.wrapper.js +3 -7
- package/dist/src/core/base.service.wrapper.test.js +6 -8
- package/dist/src/core/rx.http.service.d.ts +5 -12
- package/dist/src/core/rx.http.service.js +21 -24
- package/dist/src/services/auth.service.d.ts +2 -2
- package/dist/src/services/auth.service.js +10 -15
- package/dist/src/services/auth.service.test.js +37 -39
- package/dist/src/services/customer.service.d.ts +2 -2
- package/dist/src/services/customer.service.js +9 -14
- package/dist/src/services/customer.service.test.js +23 -25
- package/dist/src/services/logger.service.js +4 -8
- package/dist/src/services/logger.service.test.js +16 -18
- package/dist/src/services/order.service.d.ts +2 -2
- package/dist/src/services/order.service.js +9 -14
- package/dist/src/services/order.service.test.js +41 -43
- package/dist/src/services/product.service.d.ts +6 -6
- package/dist/src/services/product.service.js +4 -9
- package/dist/src/services/product.service.test.js +20 -21
- package/dist/src/services/smess.service.d.ts +2 -2
- package/dist/src/services/smess.service.js +26 -34
- package/dist/src/services/smess.service.test.js +21 -24
- package/dist/src/services/store.service.d.ts +2 -2
- package/dist/src/services/store.service.js +9 -14
- package/dist/src/services/store.service.test.js +35 -37
- package/dist/src/services/user.service.d.ts +5 -5
- package/dist/src/services/user.service.js +4 -9
- package/dist/src/services/user.service.test.js +17 -18
- package/dist/src/types/types.js +6 -13
- package/dist/src/types/types.test.js +5 -7
- package/dist/src/utils/networking-import.js +3 -43
- package/dist/src/utils/rxjs-import.js +5 -34
- package/package.json +1 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
6
|
-
const operators_1 = require("rxjs/operators");
|
|
1
|
+
import { BaseServiceWrapper } from './base.service.wrapper.js';
|
|
2
|
+
import { NetworkingUIEventWrapped } from '../types/types.js';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
7
5
|
describe('BaseServiceWrapper Advanced', () => {
|
|
8
6
|
const mockProvider = {
|
|
9
7
|
baseURL: 'https://api.example.com',
|
|
@@ -13,18 +11,18 @@ describe('BaseServiceWrapper Advanced', () => {
|
|
|
13
11
|
getPath: () => '/resource',
|
|
14
12
|
};
|
|
15
13
|
it('should allow use of RxJS operators', done => {
|
|
16
|
-
const wrapper = new
|
|
14
|
+
const wrapper = new BaseServiceWrapper(mockProvider);
|
|
17
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Required for test compatibility
|
|
18
|
-
wrapper.request = (() =>
|
|
19
|
-
wrapper.request().pipe(
|
|
16
|
+
wrapper.request = (() => of(NetworkingUIEventWrapped.succeeded({ foo: 1 })));
|
|
17
|
+
wrapper.request().pipe(map(r => r.response)).subscribe(val => {
|
|
20
18
|
expect(val).toEqual({ foo: 1 });
|
|
21
19
|
done();
|
|
22
20
|
});
|
|
23
21
|
});
|
|
24
22
|
it('should handle multiple concurrent requests', done => {
|
|
25
|
-
const wrapper = new
|
|
23
|
+
const wrapper = new BaseServiceWrapper(mockProvider);
|
|
26
24
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Required for test compatibility
|
|
27
|
-
wrapper.request = ((payload) =>
|
|
25
|
+
wrapper.request = ((payload) => of(NetworkingUIEventWrapped.succeeded({ foo: payload })));
|
|
28
26
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Required for test compatibility
|
|
29
27
|
const results = [];
|
|
30
28
|
wrapper.request(1).subscribe(r => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderType, NetworkingUIEventWrapped } from '../types/types';
|
|
1
|
+
import { ProviderType, NetworkingUIEventWrapped } from '../types/types.js';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
export declare class BaseServiceWrapper<T extends ProviderType> {
|
|
4
4
|
protected provider: T;
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.BaseServiceWrapper = void 0;
|
|
4
|
-
const smess_service_1 = require("../services/smess.service");
|
|
5
|
-
class BaseServiceWrapper {
|
|
1
|
+
import { SmessService } from '../services/smess.service.js';
|
|
2
|
+
export class BaseServiceWrapper {
|
|
6
3
|
constructor(provider) {
|
|
7
4
|
this.provider = provider;
|
|
8
5
|
}
|
|
9
6
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Required for base service wrapper compatibility
|
|
10
7
|
request(payload) {
|
|
11
|
-
const service = new
|
|
8
|
+
const service = new SmessService(this.provider);
|
|
12
9
|
return service.request(payload);
|
|
13
10
|
}
|
|
14
11
|
}
|
|
15
|
-
exports.BaseServiceWrapper = BaseServiceWrapper;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("../types/types");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
1
|
+
import { BaseServiceWrapper } from './base.service.wrapper.js';
|
|
2
|
+
import { NetworkingUIEventWrapped } from '../types/types.js';
|
|
3
|
+
import { of } from 'rxjs';
|
|
6
4
|
// Mock SmessService for testing
|
|
7
|
-
jest.mock('../services/smess.service', () => ({
|
|
5
|
+
jest.mock('../services/smess.service.js', () => ({
|
|
8
6
|
SmessService: jest.fn().mockImplementation(() => ({
|
|
9
|
-
request: jest.fn(() =>
|
|
7
|
+
request: jest.fn(() => of(NetworkingUIEventWrapped.succeeded({ foo: 'bar' })))
|
|
10
8
|
}))
|
|
11
9
|
}));
|
|
12
10
|
describe('BaseServiceWrapper', () => {
|
|
@@ -18,7 +16,7 @@ describe('BaseServiceWrapper', () => {
|
|
|
18
16
|
getPath: () => '/resource',
|
|
19
17
|
};
|
|
20
18
|
it('should delegate request to SmessService', done => {
|
|
21
|
-
const wrapper = new
|
|
19
|
+
const wrapper = new BaseServiceWrapper(mockProvider);
|
|
22
20
|
wrapper.request().subscribe(result => {
|
|
23
21
|
expect(result.response).toEqual({ foo: 'bar' });
|
|
24
22
|
done();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AxiosRequestConfig, AxiosResponse } from '../utils/networking-import.js';
|
|
2
2
|
import type { AxiosInterceptorManager } from 'axios';
|
|
3
|
-
import { AxiosObservable } from './axios.observable';
|
|
3
|
+
import { AxiosObservable } from './axios.observable.js';
|
|
4
4
|
export interface Axiosable {
|
|
5
5
|
request<T = unknown>(config: AxiosRequestConfig): AxiosObservable<T>;
|
|
6
6
|
get<T = unknown>(url: string, config?: AxiosRequestConfig): AxiosObservable<T>;
|
|
@@ -21,16 +21,9 @@ declare class HttpService implements Axiosable {
|
|
|
21
21
|
request: AxiosInterceptorManager<import("axios").InternalAxiosRequestConfig>;
|
|
22
22
|
response: AxiosInterceptorManager<AxiosResponse>;
|
|
23
23
|
};
|
|
24
|
-
constructor(axiosInstance:
|
|
25
|
-
get defaults():
|
|
26
|
-
|
|
27
|
-
[key: string]: import("axios").AxiosHeaderValue;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
get interceptors(): {
|
|
31
|
-
request: AxiosInterceptorManager<import("axios").InternalAxiosRequestConfig>;
|
|
32
|
-
response: AxiosInterceptorManager<AxiosResponse>;
|
|
33
|
-
};
|
|
24
|
+
constructor(axiosInstance: any);
|
|
25
|
+
get defaults(): any;
|
|
26
|
+
get interceptors(): any;
|
|
34
27
|
static request<T = unknown>(config: AxiosRequestConfig): AxiosObservable<T>;
|
|
35
28
|
static get<T = unknown>(url: string, config?: AxiosRequestConfig): AxiosObservable<T>;
|
|
36
29
|
static post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): AxiosObservable<T>;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpService = void 0;
|
|
4
1
|
/* eslint-disable @typescript-eslint/no-explicit-any -- Required for axios compatibility */
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { axios } from '../utils/networking-import.js';
|
|
3
|
+
import { createObservable } from './axios.observable.js';
|
|
7
4
|
class HttpService {
|
|
8
5
|
constructor(axiosInstance) {
|
|
9
6
|
this.axiosInstance = axiosInstance;
|
|
@@ -16,53 +13,53 @@ class HttpService {
|
|
|
16
13
|
}
|
|
17
14
|
// Static methods
|
|
18
15
|
static request(config) {
|
|
19
|
-
return
|
|
16
|
+
return createObservable(axios.request, [config]);
|
|
20
17
|
}
|
|
21
18
|
static get(url, config) {
|
|
22
|
-
return
|
|
19
|
+
return createObservable(axios.get, [url, config]);
|
|
23
20
|
}
|
|
24
21
|
static post(url, data, config) {
|
|
25
|
-
return
|
|
22
|
+
return createObservable(axios.post, [url, data, config]);
|
|
26
23
|
}
|
|
27
24
|
static put(url, data, config) {
|
|
28
|
-
return
|
|
25
|
+
return createObservable(axios.put, [url, data, config]);
|
|
29
26
|
}
|
|
30
27
|
static patch(url, data, config) {
|
|
31
|
-
return
|
|
28
|
+
return createObservable(axios.patch, [url, data, config]);
|
|
32
29
|
}
|
|
33
30
|
static delete(url, config) {
|
|
34
|
-
return
|
|
31
|
+
return createObservable(axios.delete, [url, config]);
|
|
35
32
|
}
|
|
36
33
|
static head(url, config) {
|
|
37
|
-
return
|
|
34
|
+
return createObservable(axios.head, [url, config]);
|
|
38
35
|
}
|
|
39
36
|
static create(config) {
|
|
40
|
-
return new HttpService(
|
|
37
|
+
return new HttpService(axios.create(config));
|
|
41
38
|
}
|
|
42
39
|
// Instance methods
|
|
43
40
|
request(config) {
|
|
44
|
-
return
|
|
41
|
+
return createObservable(this.axiosInstance.request, [config]);
|
|
45
42
|
}
|
|
46
43
|
get(url, config) {
|
|
47
|
-
return
|
|
44
|
+
return createObservable(this.axiosInstance.get, [url, config]);
|
|
48
45
|
}
|
|
49
46
|
post(url, data, config) {
|
|
50
|
-
return
|
|
47
|
+
return createObservable(this.axiosInstance.post, [url, data, config]);
|
|
51
48
|
}
|
|
52
49
|
put(url, data, config) {
|
|
53
|
-
return
|
|
50
|
+
return createObservable(this.axiosInstance.put, [url, data, config]);
|
|
54
51
|
}
|
|
55
52
|
patch(url, data, config) {
|
|
56
|
-
return
|
|
53
|
+
return createObservable(this.axiosInstance.patch, [url, data, config]);
|
|
57
54
|
}
|
|
58
55
|
delete(url, config) {
|
|
59
|
-
return
|
|
56
|
+
return createObservable(this.axiosInstance.delete, [url, config]);
|
|
60
57
|
}
|
|
61
58
|
head(url, config) {
|
|
62
|
-
return
|
|
59
|
+
return createObservable(this.axiosInstance.head, [url, config]);
|
|
63
60
|
}
|
|
64
61
|
}
|
|
65
|
-
|
|
66
|
-
HttpService.
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
HttpService.defaults = axios.defaults;
|
|
63
|
+
HttpService.interceptors = axios.interceptors;
|
|
64
|
+
export default HttpService;
|
|
65
|
+
export { HttpService };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from '../types/types';
|
|
2
|
-
import { SmessService } from './smess.service';
|
|
1
|
+
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from '../types/types.js';
|
|
2
|
+
import { SmessService } from './smess.service.js';
|
|
3
3
|
import { BehaviorSubject, Observable } from "rxjs";
|
|
4
4
|
export interface AuthLoginRequest {
|
|
5
5
|
identifier: string;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.AuthService = exports.AuthProvider = void 0;
|
|
4
|
-
const smess_service_1 = require("./smess.service");
|
|
5
|
-
class AuthProvider {
|
|
1
|
+
import { Accept, SMESSHeader, SmessService } from './smess.service.js';
|
|
2
|
+
export class AuthProvider {
|
|
6
3
|
constructor(config, target, $authToken) {
|
|
7
4
|
this.config = config;
|
|
8
5
|
this.target = target;
|
|
@@ -42,37 +39,36 @@ class AuthProvider {
|
|
|
42
39
|
case 'password-forgot':
|
|
43
40
|
case 'reset-password':
|
|
44
41
|
case 'verify-reset-password-token':
|
|
45
|
-
authHeaders =
|
|
42
|
+
authHeaders = SmessService.getHeaders(Accept.V1);
|
|
46
43
|
break;
|
|
47
44
|
default:
|
|
48
|
-
authHeaders =
|
|
45
|
+
authHeaders = SmessService.getHeaders(Accept.V1, this.$authToken.value);
|
|
49
46
|
}
|
|
50
47
|
if (this.config.clientId) {
|
|
51
|
-
authHeaders[
|
|
48
|
+
authHeaders[SMESSHeader.ClientId] = this.config.clientId;
|
|
52
49
|
}
|
|
53
50
|
if (this.config.apiKey) {
|
|
54
|
-
authHeaders[
|
|
51
|
+
authHeaders[SMESSHeader.ApiKey] = this.config.apiKey;
|
|
55
52
|
}
|
|
56
|
-
return
|
|
53
|
+
return SmessService.filterHeaders(authHeaders);
|
|
57
54
|
}
|
|
58
55
|
getPath(...queryParams) {
|
|
59
56
|
let definedPath = this.path;
|
|
60
57
|
const params = definedPath.match(/\$\{(.+?)\}/g);
|
|
61
|
-
params
|
|
58
|
+
params?.forEach((value, index) => {
|
|
62
59
|
definedPath = definedPath.replace(value, String(queryParams[index]));
|
|
63
60
|
});
|
|
64
61
|
return definedPath;
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
|
-
|
|
68
|
-
class AuthService {
|
|
64
|
+
export class AuthService {
|
|
69
65
|
constructor(config, $authToken) {
|
|
70
66
|
this.config = config;
|
|
71
67
|
this.$authToken = $authToken;
|
|
72
68
|
}
|
|
73
69
|
provider(target) {
|
|
74
70
|
const targetWrapper = new AuthProvider(this.config, target, this.$authToken);
|
|
75
|
-
return new
|
|
71
|
+
return new SmessService(targetWrapper);
|
|
76
72
|
}
|
|
77
73
|
login(payload) {
|
|
78
74
|
return this.provider('login').request(payload);
|
|
@@ -93,4 +89,3 @@ class AuthService {
|
|
|
93
89
|
return this.provider('verify-reset-password-token').request({ token });
|
|
94
90
|
}
|
|
95
91
|
}
|
|
96
|
-
exports.AuthService = AuthService;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("../types/types");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
1
|
+
import { AuthService } from './auth.service.js';
|
|
2
|
+
import { NetworkingUIEventWrapped, AlertModel } from '../types/types.js';
|
|
3
|
+
import { of, BehaviorSubject } from 'rxjs';
|
|
6
4
|
describe('AuthService', () => {
|
|
7
5
|
const config = {
|
|
8
6
|
baseUrl: 'https://api.example.com',
|
|
@@ -13,8 +11,8 @@ describe('AuthService', () => {
|
|
|
13
11
|
let service;
|
|
14
12
|
let $authToken;
|
|
15
13
|
beforeEach(() => {
|
|
16
|
-
$authToken = new
|
|
17
|
-
service = new
|
|
14
|
+
$authToken = new BehaviorSubject(null);
|
|
15
|
+
service = new AuthService(config, $authToken);
|
|
18
16
|
});
|
|
19
17
|
it('login success', async () => {
|
|
20
18
|
const payload = { identifier: 'user', password: 'pass' };
|
|
@@ -25,57 +23,57 @@ describe('AuthService', () => {
|
|
|
25
23
|
refresh_token: 'refresh',
|
|
26
24
|
};
|
|
27
25
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
28
|
-
request: () =>
|
|
26
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
29
27
|
});
|
|
30
28
|
const result = await service.login(payload).toPromise();
|
|
31
|
-
expect(result
|
|
32
|
-
expect(result
|
|
29
|
+
expect(result?.hasSuccess).toBe(true);
|
|
30
|
+
expect(result?.response).toEqual(response);
|
|
33
31
|
});
|
|
34
32
|
it('login error', async () => {
|
|
35
33
|
const payload = { identifier: 'user', password: 'wrong' };
|
|
36
34
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
37
|
-
request: () =>
|
|
35
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
38
36
|
});
|
|
39
37
|
const result = await service.login(payload).toPromise();
|
|
40
|
-
expect(result
|
|
41
|
-
expect(result
|
|
38
|
+
expect(result?.hasFailed).toBe(true);
|
|
39
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
42
40
|
});
|
|
43
41
|
it('logout success', async () => {
|
|
44
42
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
45
|
-
request: () =>
|
|
43
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(undefined)),
|
|
46
44
|
});
|
|
47
45
|
const result = await service.logout().toPromise();
|
|
48
|
-
expect(result
|
|
46
|
+
expect(result?.hasSuccess).toBe(true);
|
|
49
47
|
});
|
|
50
48
|
it('forgotPassword success', async () => {
|
|
51
49
|
const payload = { identifier: 'user' };
|
|
52
50
|
const response = { data: 'ok' };
|
|
53
51
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
54
|
-
request: () =>
|
|
52
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
55
53
|
});
|
|
56
54
|
const result = await service.forgotPassword(payload).toPromise();
|
|
57
|
-
expect(result
|
|
58
|
-
expect(result
|
|
55
|
+
expect(result?.hasSuccess).toBe(true);
|
|
56
|
+
expect(result?.response).toEqual(response);
|
|
59
57
|
});
|
|
60
58
|
it('changePassword success', async () => {
|
|
61
59
|
const payload = { old_password: 'old', password: 'new' };
|
|
62
60
|
const response = { data: 'changed' };
|
|
63
61
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
64
|
-
request: () =>
|
|
62
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
65
63
|
});
|
|
66
64
|
const result = await service.changePassword(payload).toPromise();
|
|
67
|
-
expect(result
|
|
68
|
-
expect(result
|
|
65
|
+
expect(result?.hasSuccess).toBe(true);
|
|
66
|
+
expect(result?.response).toEqual(response);
|
|
69
67
|
});
|
|
70
68
|
it('resetPassword success', async () => {
|
|
71
69
|
const payload = { token: 'token', password: 'newpass' };
|
|
72
70
|
const response = { data: 'reset' };
|
|
73
71
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
74
|
-
request: () =>
|
|
72
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
75
73
|
});
|
|
76
74
|
const result = await service.resetPassword(payload).toPromise();
|
|
77
|
-
expect(result
|
|
78
|
-
expect(result
|
|
75
|
+
expect(result?.hasSuccess).toBe(true);
|
|
76
|
+
expect(result?.response).toEqual(response);
|
|
79
77
|
});
|
|
80
78
|
it('verifyResetPasswordToken success', async () => {
|
|
81
79
|
const token = 'token';
|
|
@@ -86,46 +84,46 @@ describe('AuthService', () => {
|
|
|
86
84
|
refresh_token: 'refresh',
|
|
87
85
|
};
|
|
88
86
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
89
|
-
request: () =>
|
|
87
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
90
88
|
});
|
|
91
89
|
const result = await service.verifyResetPasswordToken(token).toPromise();
|
|
92
|
-
expect(result
|
|
93
|
-
expect(result
|
|
90
|
+
expect(result?.hasSuccess).toBe(true);
|
|
91
|
+
expect(result?.response).toEqual(response);
|
|
94
92
|
});
|
|
95
93
|
it('forgotPassword error', async () => {
|
|
96
94
|
const payload = { identifier: 'user' };
|
|
97
95
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
98
|
-
request: () =>
|
|
96
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
99
97
|
});
|
|
100
98
|
const result = await service.forgotPassword(payload).toPromise();
|
|
101
|
-
expect(result
|
|
102
|
-
expect(result
|
|
99
|
+
expect(result?.hasFailed).toBe(true);
|
|
100
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
103
101
|
});
|
|
104
102
|
it('changePassword error', async () => {
|
|
105
103
|
const payload = { old_password: 'old', password: 'bad' };
|
|
106
104
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
107
|
-
request: () =>
|
|
105
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
108
106
|
});
|
|
109
107
|
const result = await service.changePassword(payload).toPromise();
|
|
110
|
-
expect(result
|
|
111
|
-
expect(result
|
|
108
|
+
expect(result?.hasFailed).toBe(true);
|
|
109
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
112
110
|
});
|
|
113
111
|
it('resetPassword error', async () => {
|
|
114
112
|
const payload = { token: 'bad', password: 'bad' };
|
|
115
113
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
116
|
-
request: () =>
|
|
114
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
117
115
|
});
|
|
118
116
|
const result = await service.resetPassword(payload).toPromise();
|
|
119
|
-
expect(result
|
|
120
|
-
expect(result
|
|
117
|
+
expect(result?.hasFailed).toBe(true);
|
|
118
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
121
119
|
});
|
|
122
120
|
it('verifyResetPasswordToken error', async () => {
|
|
123
121
|
const token = 'bad';
|
|
124
122
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
125
|
-
request: () =>
|
|
123
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
126
124
|
});
|
|
127
125
|
const result = await service.verifyResetPasswordToken(token).toPromise();
|
|
128
|
-
expect(result
|
|
129
|
-
expect(result
|
|
126
|
+
expect(result?.hasFailed).toBe(true);
|
|
127
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
130
128
|
});
|
|
131
129
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from '../types/types';
|
|
2
|
-
import { SmessService } from './smess.service';
|
|
1
|
+
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from '../types/types.js';
|
|
2
|
+
import { SmessService } from './smess.service.js';
|
|
3
3
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
4
4
|
export type CustomerTarget = 'register' | 'get-profile' | 'update-profile';
|
|
5
5
|
export interface CustomerRegisterRequest {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.CustomerService = exports.CustomerProvider = void 0;
|
|
4
|
-
const smess_service_1 = require("./smess.service");
|
|
5
|
-
class CustomerProvider {
|
|
1
|
+
import { Accept, SMESSHeader, SmessService } from './smess.service.js';
|
|
2
|
+
export class CustomerProvider {
|
|
6
3
|
constructor(config, target, $authToken) {
|
|
7
4
|
this.config = config;
|
|
8
5
|
this.target = target;
|
|
@@ -34,33 +31,32 @@ class CustomerProvider {
|
|
|
34
31
|
}
|
|
35
32
|
}
|
|
36
33
|
get headers() {
|
|
37
|
-
let headers =
|
|
34
|
+
let headers = SmessService.getHeaders(Accept.V1, this.$authToken.value);
|
|
38
35
|
if (this.config.clientId) {
|
|
39
|
-
headers[
|
|
36
|
+
headers[SMESSHeader.ClientId] = this.config.clientId;
|
|
40
37
|
}
|
|
41
38
|
if (this.config.apiKey) {
|
|
42
|
-
headers[
|
|
39
|
+
headers[SMESSHeader.ApiKey] = this.config.apiKey;
|
|
43
40
|
}
|
|
44
|
-
return
|
|
41
|
+
return SmessService.filterHeaders(headers);
|
|
45
42
|
}
|
|
46
43
|
getPath(...queryParams) {
|
|
47
44
|
let definedPath = this.path;
|
|
48
45
|
const params = definedPath.match(/\$\{(.+?)\}/g);
|
|
49
|
-
params
|
|
46
|
+
params?.forEach((value, index) => {
|
|
50
47
|
definedPath = definedPath.replace(value, String(queryParams[index]));
|
|
51
48
|
});
|
|
52
49
|
return definedPath;
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
|
-
|
|
56
|
-
class CustomerService {
|
|
52
|
+
export class CustomerService {
|
|
57
53
|
constructor(config, $authToken) {
|
|
58
54
|
this.config = config;
|
|
59
55
|
this.$authToken = $authToken;
|
|
60
56
|
}
|
|
61
57
|
provider(target) {
|
|
62
58
|
const targetWrapper = new CustomerProvider(this.config, target, this.$authToken);
|
|
63
|
-
return new
|
|
59
|
+
return new SmessService(targetWrapper);
|
|
64
60
|
}
|
|
65
61
|
register(payload) {
|
|
66
62
|
return this.provider('register').request(payload);
|
|
@@ -72,4 +68,3 @@ class CustomerService {
|
|
|
72
68
|
return this.provider('update-profile').request(payload);
|
|
73
69
|
}
|
|
74
70
|
}
|
|
75
|
-
exports.CustomerService = CustomerService;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("../types/types");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
1
|
+
import { CustomerService } from './customer.service.js';
|
|
2
|
+
import { NetworkingUIEventWrapped, AlertModel } from '../types/types.js';
|
|
3
|
+
import { of, BehaviorSubject } from 'rxjs';
|
|
6
4
|
describe('CustomerService', () => {
|
|
7
5
|
const config = {
|
|
8
6
|
baseUrl: 'https://api.example.com',
|
|
@@ -13,8 +11,8 @@ describe('CustomerService', () => {
|
|
|
13
11
|
let service;
|
|
14
12
|
let $authToken;
|
|
15
13
|
beforeEach(() => {
|
|
16
|
-
$authToken = new
|
|
17
|
-
service = new
|
|
14
|
+
$authToken = new BehaviorSubject(null);
|
|
15
|
+
service = new CustomerService(config, $authToken);
|
|
18
16
|
});
|
|
19
17
|
it('register success', async () => {
|
|
20
18
|
const payload = {
|
|
@@ -23,11 +21,11 @@ describe('CustomerService', () => {
|
|
|
23
21
|
};
|
|
24
22
|
const response = { data: { id: 1, email: 'test@example.com' } };
|
|
25
23
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
26
|
-
request: () =>
|
|
24
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
27
25
|
});
|
|
28
26
|
const result = await service.register(payload).toPromise();
|
|
29
|
-
expect(result
|
|
30
|
-
expect(result
|
|
27
|
+
expect(result?.hasSuccess).toBe(true);
|
|
28
|
+
expect(result?.response).toEqual(response);
|
|
31
29
|
});
|
|
32
30
|
it('register error', async () => {
|
|
33
31
|
const payload = {
|
|
@@ -35,28 +33,28 @@ describe('CustomerService', () => {
|
|
|
35
33
|
password: 'pass',
|
|
36
34
|
};
|
|
37
35
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
38
|
-
request: () =>
|
|
36
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
39
37
|
});
|
|
40
38
|
const result = await service.register(payload).toPromise();
|
|
41
|
-
expect(result
|
|
42
|
-
expect(result
|
|
39
|
+
expect(result?.hasFailed).toBe(true);
|
|
40
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
43
41
|
});
|
|
44
42
|
it('getProfile success', async () => {
|
|
45
43
|
const response = { data: { id: 1, email: 'test@example.com' } };
|
|
46
44
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
47
|
-
request: () =>
|
|
45
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
48
46
|
});
|
|
49
47
|
const result = await service.getProfile().toPromise();
|
|
50
|
-
expect(result
|
|
51
|
-
expect(result
|
|
48
|
+
expect(result?.hasSuccess).toBe(true);
|
|
49
|
+
expect(result?.response).toEqual(response);
|
|
52
50
|
});
|
|
53
51
|
it('getProfile error', async () => {
|
|
54
52
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
55
|
-
request: () =>
|
|
53
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
56
54
|
});
|
|
57
55
|
const result = await service.getProfile().toPromise();
|
|
58
|
-
expect(result
|
|
59
|
-
expect(result
|
|
56
|
+
expect(result?.hasFailed).toBe(true);
|
|
57
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
60
58
|
});
|
|
61
59
|
it('updateProfile success', async () => {
|
|
62
60
|
const payload = {
|
|
@@ -71,11 +69,11 @@ describe('CustomerService', () => {
|
|
|
71
69
|
};
|
|
72
70
|
const response = { data: { id: 1, name: 'Test' } };
|
|
73
71
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
74
|
-
request: () =>
|
|
72
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
75
73
|
});
|
|
76
74
|
const result = await service.updateProfile(payload).toPromise();
|
|
77
|
-
expect(result
|
|
78
|
-
expect(result
|
|
75
|
+
expect(result?.hasSuccess).toBe(true);
|
|
76
|
+
expect(result?.response).toEqual(response);
|
|
79
77
|
});
|
|
80
78
|
it('updateProfile error', async () => {
|
|
81
79
|
const payload = {
|
|
@@ -89,10 +87,10 @@ describe('CustomerService', () => {
|
|
|
89
87
|
phone_number: null,
|
|
90
88
|
};
|
|
91
89
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
92
|
-
request: () =>
|
|
90
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
93
91
|
});
|
|
94
92
|
const result = await service.updateProfile(payload).toPromise();
|
|
95
|
-
expect(result
|
|
96
|
-
expect(result
|
|
93
|
+
expect(result?.hasFailed).toBe(true);
|
|
94
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
97
95
|
});
|
|
98
96
|
});
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.$logger = exports.LoggerService = exports.LogLevel = void 0;
|
|
4
|
-
var LogLevel;
|
|
1
|
+
export var LogLevel;
|
|
5
2
|
(function (LogLevel) {
|
|
6
3
|
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
7
4
|
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
8
5
|
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
9
6
|
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
10
7
|
LogLevel[LogLevel["NONE"] = 4] = "NONE";
|
|
11
|
-
})(LogLevel || (
|
|
12
|
-
class LoggerService {
|
|
8
|
+
})(LogLevel || (LogLevel = {}));
|
|
9
|
+
export class LoggerService {
|
|
13
10
|
constructor() {
|
|
14
11
|
this.currentLevel = LogLevel.DEBUG;
|
|
15
12
|
this.logs = [];
|
|
@@ -92,6 +89,5 @@ class LoggerService {
|
|
|
92
89
|
this.logs = [];
|
|
93
90
|
}
|
|
94
91
|
}
|
|
95
|
-
exports.LoggerService = LoggerService;
|
|
96
92
|
// Export singleton instance
|
|
97
|
-
|
|
93
|
+
export const $logger = new LoggerService();
|