@muhammedaksam/ayyildiz-node 0.1.2 → 0.1.4
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 +8 -1
- package/dist/AxiosHttpClient.js +1 -1
- package/dist/__tests__/AccountService.test.d.ts +2 -0
- package/dist/__tests__/AccountService.test.d.ts.map +1 -0
- package/dist/__tests__/AccountService.test.js +83 -0
- package/dist/__tests__/AccountService.test.js.map +1 -0
- package/dist/__tests__/AxiosHttpClient.test.d.ts +2 -0
- package/dist/__tests__/AxiosHttpClient.test.d.ts.map +1 -0
- package/dist/__tests__/AxiosHttpClient.test.js +182 -0
- package/dist/__tests__/AxiosHttpClient.test.js.map +1 -0
- package/dist/__tests__/AyyildizClient.test.js +118 -19
- package/dist/__tests__/AyyildizClient.test.js.map +1 -1
- package/dist/__tests__/ReportService.test.d.ts +2 -0
- package/dist/__tests__/ReportService.test.d.ts.map +1 -0
- package/dist/__tests__/ReportService.test.js +147 -0
- package/dist/__tests__/ReportService.test.js.map +1 -0
- package/dist/__tests__/Response.test.d.ts +2 -0
- package/dist/__tests__/Response.test.d.ts.map +1 -0
- package/dist/__tests__/Response.test.js +507 -0
- package/dist/__tests__/Response.test.js.map +1 -0
- package/dist/__tests__/SenderService.test.d.ts +2 -0
- package/dist/__tests__/SenderService.test.d.ts.map +1 -0
- package/dist/__tests__/SenderService.test.js +85 -0
- package/dist/__tests__/SenderService.test.js.map +1 -0
- package/dist/__tests__/SmsService.test.d.ts +2 -0
- package/dist/__tests__/SmsService.test.d.ts.map +1 -0
- package/dist/__tests__/SmsService.test.js +176 -0
- package/dist/__tests__/SmsService.test.js.map +1 -0
- package/dist/__tests__/VersionInfo.test.d.ts +2 -0
- package/dist/__tests__/VersionInfo.test.d.ts.map +1 -0
- package/dist/__tests__/VersionInfo.test.js +56 -0
- package/dist/__tests__/VersionInfo.test.js.map +1 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +76 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Ayyıldız Mobile Node.js SDK
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@muhammedaksam/ayyildiz-node)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://github.com/muhammedaksam/ayyildiz-node/actions)
|
|
7
|
+
[](https://codecov.io/gh/muhammedaksam/ayyildiz-node)
|
|
8
|
+
[](https://nodejs.org/)
|
|
9
|
+
|
|
3
10
|
Unofficial Node.js SDK for Ayyıldız Mobile SMS API.
|
|
4
11
|
|
|
5
12
|
## Installation
|
|
@@ -286,7 +293,7 @@ additional `@types` packages are needed.
|
|
|
286
293
|
## API Documentation
|
|
287
294
|
|
|
288
295
|
For detailed API documentation, please visit
|
|
289
|
-
[Ayyıldız Mobile API Documentation](https://api.
|
|
296
|
+
[Ayyıldız Mobile API Documentation](https://api.ayyildiz.net).
|
|
290
297
|
|
|
291
298
|
## Support
|
|
292
299
|
|
package/dist/AxiosHttpClient.js
CHANGED
|
@@ -8,7 +8,7 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
8
8
|
const VersionInfo_1 = require("./VersionInfo");
|
|
9
9
|
class AxiosHttpClient {
|
|
10
10
|
constructor() {
|
|
11
|
-
this.baseUrl = 'http://sms.ayyildiz.
|
|
11
|
+
this.baseUrl = 'http://sms.ayyildiz.com/';
|
|
12
12
|
this.lastResponseStatusCode = 0;
|
|
13
13
|
this.lastPayload = '';
|
|
14
14
|
this.client = axios_1.default.create({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountService.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/AccountService.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const AccountService_1 = require("../services/AccountService");
|
|
4
|
+
const AccountResponse_1 = require("../responses/AccountResponse");
|
|
5
|
+
describe('AccountService', () => {
|
|
6
|
+
let accountService;
|
|
7
|
+
let mockHttpClient;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
mockHttpClient = {
|
|
10
|
+
post: jest.fn(),
|
|
11
|
+
get: jest.fn(),
|
|
12
|
+
getBody: jest.fn(),
|
|
13
|
+
getStatusCode: jest.fn(),
|
|
14
|
+
getPayload: jest.fn()
|
|
15
|
+
};
|
|
16
|
+
accountService = new AccountService_1.AccountService(mockHttpClient, 'testuser', 'testpass', 'testcompany');
|
|
17
|
+
});
|
|
18
|
+
describe('getCredit', () => {
|
|
19
|
+
it('should make POST request to QueryCredit.aspx', async () => {
|
|
20
|
+
mockHttpClient.post.mockResolvedValue(mockHttpClient);
|
|
21
|
+
mockHttpClient.getBody.mockReturnValue('1000');
|
|
22
|
+
mockHttpClient.getStatusCode.mockReturnValue(200);
|
|
23
|
+
const result = await accountService.getCredit();
|
|
24
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining("<?xml version='1.0' encoding='ISO-8859-9'?>"));
|
|
25
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<UserName>testuser</UserName>'));
|
|
26
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<PassWord>testpass</PassWord>'));
|
|
27
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<CompanyCode>testcompany</CompanyCode>'));
|
|
28
|
+
expect(result).toBeInstanceOf(AccountResponse_1.AccountResponse);
|
|
29
|
+
});
|
|
30
|
+
it('should escape XML characters in credentials', async () => {
|
|
31
|
+
const serviceWithSpecialChars = new AccountService_1.AccountService(mockHttpClient, 'user&name', 'pass<word>', 'company"code');
|
|
32
|
+
mockHttpClient.post.mockResolvedValue(mockHttpClient);
|
|
33
|
+
mockHttpClient.getBody.mockReturnValue('1000');
|
|
34
|
+
mockHttpClient.getStatusCode.mockReturnValue(200);
|
|
35
|
+
await serviceWithSpecialChars.getCredit();
|
|
36
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<UserName>user&name</UserName>'));
|
|
37
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<PassWord>pass<word></PassWord>'));
|
|
38
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<CompanyCode>company"code</CompanyCode>'));
|
|
39
|
+
});
|
|
40
|
+
it('should handle successful response', async () => {
|
|
41
|
+
mockHttpClient.post.mockResolvedValue(mockHttpClient);
|
|
42
|
+
mockHttpClient.getBody.mockReturnValue('1000');
|
|
43
|
+
mockHttpClient.getStatusCode.mockReturnValue(200);
|
|
44
|
+
const result = await accountService.getCredit();
|
|
45
|
+
expect(result).toBeInstanceOf(AccountResponse_1.AccountResponse);
|
|
46
|
+
});
|
|
47
|
+
it('should handle error response', async () => {
|
|
48
|
+
mockHttpClient.post.mockResolvedValue(mockHttpClient);
|
|
49
|
+
mockHttpClient.getBody.mockReturnValue('ERROR:Invalid credentials');
|
|
50
|
+
mockHttpClient.getStatusCode.mockReturnValue(401);
|
|
51
|
+
const result = await accountService.getCredit();
|
|
52
|
+
expect(result).toBeInstanceOf(AccountResponse_1.AccountResponse);
|
|
53
|
+
});
|
|
54
|
+
it('should handle network errors', async () => {
|
|
55
|
+
const networkError = new Error('Network error');
|
|
56
|
+
mockHttpClient.post.mockRejectedValue(networkError);
|
|
57
|
+
await expect(accountService.getCredit()).rejects.toThrow('Network error');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('XML escaping', () => {
|
|
61
|
+
it('should escape all XML special characters', async () => {
|
|
62
|
+
const serviceWithAllSpecialChars = new AccountService_1.AccountService(mockHttpClient, 'user&<>"\'', 'pass&<>"\'', 'company&<>"\'');
|
|
63
|
+
mockHttpClient.post.mockResolvedValue(mockHttpClient);
|
|
64
|
+
mockHttpClient.getBody.mockReturnValue('1000');
|
|
65
|
+
mockHttpClient.getStatusCode.mockReturnValue(200);
|
|
66
|
+
await serviceWithAllSpecialChars.getCredit();
|
|
67
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<UserName>user&<>"'</UserName>'));
|
|
68
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<PassWord>pass&<>"'</PassWord>'));
|
|
69
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<CompanyCode>company&<>"'</CompanyCode>'));
|
|
70
|
+
});
|
|
71
|
+
it('should handle empty strings', async () => {
|
|
72
|
+
const serviceWithEmptyStrings = new AccountService_1.AccountService(mockHttpClient, '', '', '');
|
|
73
|
+
mockHttpClient.post.mockResolvedValue(mockHttpClient);
|
|
74
|
+
mockHttpClient.getBody.mockReturnValue('1000');
|
|
75
|
+
mockHttpClient.getStatusCode.mockReturnValue(200);
|
|
76
|
+
await serviceWithEmptyStrings.getCredit();
|
|
77
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<UserName></UserName>'));
|
|
78
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<PassWord></PassWord>'));
|
|
79
|
+
expect(mockHttpClient.post).toHaveBeenCalledWith('QueryCredit.aspx', expect.stringContaining('<CompanyCode></CompanyCode>'));
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=AccountService.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountService.test.js","sourceRoot":"","sources":["../../src/__tests__/AccountService.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxiosHttpClient.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/AxiosHttpClient.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const AxiosHttpClient_1 = require("../AxiosHttpClient");
|
|
8
|
+
// Mock axios
|
|
9
|
+
jest.mock('axios');
|
|
10
|
+
const mockedAxios = axios_1.default;
|
|
11
|
+
describe('AxiosHttpClient', () => {
|
|
12
|
+
let httpClient;
|
|
13
|
+
let mockAxiosInstance;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
mockAxiosInstance = {
|
|
16
|
+
post: jest.fn(),
|
|
17
|
+
get: jest.fn()
|
|
18
|
+
};
|
|
19
|
+
mockedAxios.create.mockReturnValue(mockAxiosInstance);
|
|
20
|
+
httpClient = new AxiosHttpClient_1.AxiosHttpClient();
|
|
21
|
+
});
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
jest.clearAllMocks();
|
|
24
|
+
});
|
|
25
|
+
describe('constructor', () => {
|
|
26
|
+
it('should create axios instance with correct configuration', () => {
|
|
27
|
+
expect(mockedAxios.create).toHaveBeenCalledWith({
|
|
28
|
+
headers: {
|
|
29
|
+
'Content-Type': 'application/xml; charset=UTF-8',
|
|
30
|
+
'User-Agent': expect.stringMatching(/^Ayyildiz-Node\//)
|
|
31
|
+
},
|
|
32
|
+
validateStatus: expect.any(Function)
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
it('should configure validateStatus to accept status codes under 500', () => {
|
|
36
|
+
const createCall = mockedAxios.create.mock.calls[0][0];
|
|
37
|
+
const validateStatus = createCall?.validateStatus;
|
|
38
|
+
expect(validateStatus(200)).toBe(true);
|
|
39
|
+
expect(validateStatus(400)).toBe(true);
|
|
40
|
+
expect(validateStatus(499)).toBe(true);
|
|
41
|
+
expect(validateStatus(500)).toBe(false);
|
|
42
|
+
expect(validateStatus(503)).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('post', () => {
|
|
46
|
+
it('should make POST request with XML data', async () => {
|
|
47
|
+
const mockResponse = {
|
|
48
|
+
data: 'ID:123456',
|
|
49
|
+
status: 200
|
|
50
|
+
};
|
|
51
|
+
mockAxiosInstance.post.mockResolvedValue(mockResponse);
|
|
52
|
+
const result = await httpClient.post('test-endpoint', 'test-data');
|
|
53
|
+
expect(mockAxiosInstance.post).toHaveBeenCalledWith('http://sms.ayyildiz.com/test-endpoint', 'test-data');
|
|
54
|
+
expect(result).toBe(httpClient);
|
|
55
|
+
});
|
|
56
|
+
it('should store response data and status code', async () => {
|
|
57
|
+
const mockResponse = {
|
|
58
|
+
data: 'ID:123456',
|
|
59
|
+
status: 201
|
|
60
|
+
};
|
|
61
|
+
mockAxiosInstance.post.mockResolvedValue(mockResponse);
|
|
62
|
+
await httpClient.post('test-endpoint', 'test-data');
|
|
63
|
+
expect(httpClient.getBody()).toBe('ID:123456');
|
|
64
|
+
expect(httpClient.getStatusCode()).toBe(201);
|
|
65
|
+
});
|
|
66
|
+
it('should handle error responses', async () => {
|
|
67
|
+
const mockResponse = {
|
|
68
|
+
data: 'Error occurred',
|
|
69
|
+
status: 400
|
|
70
|
+
};
|
|
71
|
+
mockAxiosInstance.post.mockResolvedValue(mockResponse);
|
|
72
|
+
await httpClient.post('test-endpoint', 'test-data');
|
|
73
|
+
expect(httpClient.getBody()).toBe('Error occurred');
|
|
74
|
+
expect(httpClient.getStatusCode()).toBe(400);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe('get', () => {
|
|
78
|
+
it('should make GET request with query parameters', async () => {
|
|
79
|
+
const mockResponse = {
|
|
80
|
+
data: { result: 'success' },
|
|
81
|
+
status: 200
|
|
82
|
+
};
|
|
83
|
+
mockAxiosInstance.get.mockResolvedValue(mockResponse);
|
|
84
|
+
const options = { param1: 'value1', param2: 'value2' };
|
|
85
|
+
const result = await httpClient.get('test-endpoint', options);
|
|
86
|
+
expect(mockAxiosInstance.get).toHaveBeenCalledWith('http://sms.ayyildiz.com/test-endpoint', {
|
|
87
|
+
params: options
|
|
88
|
+
});
|
|
89
|
+
expect(result).toBe(httpClient);
|
|
90
|
+
});
|
|
91
|
+
it('should make GET request without options', async () => {
|
|
92
|
+
const mockResponse = {
|
|
93
|
+
data: { result: 'success' },
|
|
94
|
+
status: 200
|
|
95
|
+
};
|
|
96
|
+
mockAxiosInstance.get.mockResolvedValue(mockResponse);
|
|
97
|
+
await httpClient.get('test-endpoint');
|
|
98
|
+
expect(mockAxiosInstance.get).toHaveBeenCalledWith('http://sms.ayyildiz.com/test-endpoint', {
|
|
99
|
+
params: undefined
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
it('should store GET response data', async () => {
|
|
103
|
+
const mockResponse = {
|
|
104
|
+
data: { message: 'test response' },
|
|
105
|
+
status: 200
|
|
106
|
+
};
|
|
107
|
+
mockAxiosInstance.get.mockResolvedValue(mockResponse);
|
|
108
|
+
await httpClient.get('test-endpoint');
|
|
109
|
+
expect(httpClient.getBody()).toEqual({ message: 'test response' });
|
|
110
|
+
expect(httpClient.getStatusCode()).toBe(200);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('response accessors', () => {
|
|
114
|
+
it('should return correct body and status code', async () => {
|
|
115
|
+
const mockResponse = {
|
|
116
|
+
data: 'test response',
|
|
117
|
+
status: 202
|
|
118
|
+
};
|
|
119
|
+
mockAxiosInstance.post.mockResolvedValue(mockResponse);
|
|
120
|
+
await httpClient.post('test', 'data');
|
|
121
|
+
expect(httpClient.getBody()).toBe('test response');
|
|
122
|
+
expect(httpClient.getStatusCode()).toBe(202);
|
|
123
|
+
});
|
|
124
|
+
it('should return payload information', async () => {
|
|
125
|
+
const mockResponse = {
|
|
126
|
+
data: 'response',
|
|
127
|
+
status: 200
|
|
128
|
+
};
|
|
129
|
+
mockAxiosInstance.post.mockResolvedValue(mockResponse);
|
|
130
|
+
await httpClient.post('test', 'request-payload');
|
|
131
|
+
expect(httpClient.getPayload()).toBe('request-payload');
|
|
132
|
+
});
|
|
133
|
+
it('should return JSON payload for GET requests', async () => {
|
|
134
|
+
const mockResponse = {
|
|
135
|
+
data: 'response',
|
|
136
|
+
status: 200
|
|
137
|
+
};
|
|
138
|
+
mockAxiosInstance.get.mockResolvedValue(mockResponse);
|
|
139
|
+
const params = { test: 'value' };
|
|
140
|
+
await httpClient.get('test', params);
|
|
141
|
+
expect(httpClient.getPayload()).toBe(JSON.stringify(params));
|
|
142
|
+
});
|
|
143
|
+
it('should return empty object JSON for GET without params', async () => {
|
|
144
|
+
const mockResponse = {
|
|
145
|
+
data: 'response',
|
|
146
|
+
status: 200
|
|
147
|
+
};
|
|
148
|
+
mockAxiosInstance.get.mockResolvedValue(mockResponse);
|
|
149
|
+
await httpClient.get('test');
|
|
150
|
+
expect(httpClient.getPayload()).toBe('{}');
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('error handling', () => {
|
|
154
|
+
it('should handle non-string data by converting to JSON', async () => {
|
|
155
|
+
const objectData = { key: 'value', number: 123 };
|
|
156
|
+
mockAxiosInstance.post.mockResolvedValue({
|
|
157
|
+
data: 'Success',
|
|
158
|
+
status: 200
|
|
159
|
+
});
|
|
160
|
+
const response = await httpClient.post('test.aspx', objectData);
|
|
161
|
+
expect(mockAxiosInstance.post).toHaveBeenCalledWith('http://sms.ayyildiz.com/test.aspx', JSON.stringify(objectData));
|
|
162
|
+
expect(response).toBe(httpClient);
|
|
163
|
+
});
|
|
164
|
+
it('should handle network errors', async () => {
|
|
165
|
+
const networkError = new Error('Network Error');
|
|
166
|
+
mockAxiosInstance.post.mockRejectedValue(networkError);
|
|
167
|
+
await expect(httpClient.post('test', 'data')).rejects.toThrow('Network Error');
|
|
168
|
+
});
|
|
169
|
+
it('should handle axios request errors', async () => {
|
|
170
|
+
const axiosError = {
|
|
171
|
+
response: {
|
|
172
|
+
data: 'Server Error',
|
|
173
|
+
status: 500
|
|
174
|
+
},
|
|
175
|
+
message: 'Request failed'
|
|
176
|
+
};
|
|
177
|
+
mockAxiosInstance.get.mockRejectedValue(axiosError);
|
|
178
|
+
await expect(httpClient.get('test')).rejects.toEqual(axiosError);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=AxiosHttpClient.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxiosHttpClient.test.js","sourceRoot":"","sources":["../../src/__tests__/AxiosHttpClient.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const index_1 = require("../index");
|
|
4
|
+
const AccountService_1 = require("../services/AccountService");
|
|
5
|
+
const SmsService_1 = require("../services/SmsService");
|
|
6
|
+
const ReportService_1 = require("../services/ReportService");
|
|
7
|
+
const SenderService_1 = require("../services/SenderService");
|
|
4
8
|
describe('AyyildizClient', () => {
|
|
5
9
|
let client;
|
|
6
10
|
beforeEach(() => {
|
|
@@ -11,28 +15,123 @@ describe('AyyildizClient', () => {
|
|
|
11
15
|
defaultOriginator: 'TEST'
|
|
12
16
|
});
|
|
13
17
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
describe('constructor with config object', () => {
|
|
19
|
+
it('should initialize with config object', () => {
|
|
20
|
+
expect(client).toBeDefined();
|
|
21
|
+
expect(client.sms).toBeDefined();
|
|
22
|
+
expect(client.account).toBeDefined();
|
|
23
|
+
expect(client.reports).toBeDefined();
|
|
24
|
+
expect(client.senders).toBeDefined();
|
|
25
|
+
});
|
|
26
|
+
it('should initialize with minimal config', () => {
|
|
27
|
+
const minimalClient = new index_1.AyyildizClient({
|
|
28
|
+
username: 'user',
|
|
29
|
+
password: 'pass',
|
|
30
|
+
companyCode: 'company'
|
|
31
|
+
});
|
|
32
|
+
expect(minimalClient).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
it('should handle config with all fields', () => {
|
|
35
|
+
const fullClient = new index_1.AyyildizClient({
|
|
36
|
+
username: 'user',
|
|
37
|
+
password: 'pass',
|
|
38
|
+
companyCode: 'company',
|
|
39
|
+
defaultOriginator: 'SENDER'
|
|
40
|
+
});
|
|
41
|
+
expect(fullClient).toBeDefined();
|
|
42
|
+
});
|
|
20
43
|
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
44
|
+
describe('constructor with parameters', () => {
|
|
45
|
+
it('should initialize with parameters', () => {
|
|
46
|
+
const paramClient = new index_1.AyyildizClient('user', 'pass', 'company', 'SENDER');
|
|
47
|
+
expect(paramClient).toBeDefined();
|
|
48
|
+
expect(paramClient.sms).toBeDefined();
|
|
49
|
+
});
|
|
50
|
+
it('should initialize with minimal parameters', () => {
|
|
51
|
+
const minimalClient = new index_1.AyyildizClient('user', 'pass', 'company');
|
|
52
|
+
expect(minimalClient).toBeDefined();
|
|
53
|
+
});
|
|
25
54
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
55
|
+
describe('service access', () => {
|
|
56
|
+
it('should provide access to all services', () => {
|
|
57
|
+
expect(client.sms()).toBeDefined();
|
|
58
|
+
expect(client.account()).toBeDefined();
|
|
59
|
+
expect(client.reports()).toBeDefined();
|
|
60
|
+
expect(client.senders()).toBeDefined();
|
|
61
|
+
});
|
|
62
|
+
it('should return service instances', () => {
|
|
63
|
+
expect(client.sms()).toBeInstanceOf(SmsService_1.SmsService);
|
|
64
|
+
expect(client.account()).toBeInstanceOf(AccountService_1.AccountService);
|
|
65
|
+
expect(client.reports()).toBeInstanceOf(ReportService_1.ReportService);
|
|
66
|
+
expect(client.senders()).toBeInstanceOf(SenderService_1.SenderService);
|
|
67
|
+
});
|
|
68
|
+
it('should return new service instances on each call', () => {
|
|
69
|
+
const sms1 = client.sms();
|
|
70
|
+
const sms2 = client.sms();
|
|
71
|
+
expect(sms1).not.toBe(sms2); // New instances created each time
|
|
72
|
+
const account1 = client.account();
|
|
73
|
+
const account2 = client.account();
|
|
74
|
+
expect(account1).not.toBe(account2); // New instances created each time
|
|
75
|
+
});
|
|
31
76
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
77
|
+
describe('debug functionality', () => {
|
|
78
|
+
it('should provide debug functionality', () => {
|
|
79
|
+
const debugInfo = client.debug();
|
|
80
|
+
expect(typeof debugInfo).toBe('string');
|
|
81
|
+
expect(() => JSON.parse(debugInfo)).not.toThrow();
|
|
82
|
+
});
|
|
83
|
+
it('should return valid JSON debug info structure', () => {
|
|
84
|
+
const debugInfo = client.debug();
|
|
85
|
+
const parsed = JSON.parse(debugInfo);
|
|
86
|
+
expect(parsed).toHaveProperty('payload');
|
|
87
|
+
expect(parsed).toHaveProperty('status');
|
|
88
|
+
// Check that we have the expected structure, response might be undefined initially
|
|
89
|
+
expect(typeof parsed.payload).toBe('string');
|
|
90
|
+
expect(typeof parsed.status).toBe('number');
|
|
91
|
+
expect(parsed).not.toHaveProperty('password'); // Should not expose password
|
|
92
|
+
});
|
|
93
|
+
it('should handle debug mode configuration', () => {
|
|
94
|
+
const debugClient = new index_1.AyyildizClient({
|
|
95
|
+
username: 'user',
|
|
96
|
+
password: 'pass',
|
|
97
|
+
companyCode: 'company'
|
|
98
|
+
});
|
|
99
|
+
const debugInfo = debugClient.debug();
|
|
100
|
+
expect(typeof debugInfo).toBe('string');
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe('edge cases', () => {
|
|
104
|
+
it('should handle empty strings in config', () => {
|
|
105
|
+
const emptyClient = new index_1.AyyildizClient({
|
|
106
|
+
username: '',
|
|
107
|
+
password: '',
|
|
108
|
+
companyCode: ''
|
|
109
|
+
});
|
|
110
|
+
expect(emptyClient).toBeDefined();
|
|
111
|
+
});
|
|
112
|
+
it('should handle special characters in credentials', () => {
|
|
113
|
+
const specialClient = new index_1.AyyildizClient({
|
|
114
|
+
username: 'user&name',
|
|
115
|
+
password: 'pass<word>',
|
|
116
|
+
companyCode: 'company"code'
|
|
117
|
+
});
|
|
118
|
+
expect(specialClient).toBeDefined();
|
|
119
|
+
});
|
|
120
|
+
it('should handle unicode characters', () => {
|
|
121
|
+
const unicodeClient = new index_1.AyyildizClient({
|
|
122
|
+
username: 'kullanıcı',
|
|
123
|
+
password: 'şifre',
|
|
124
|
+
companyCode: 'şirket'
|
|
125
|
+
});
|
|
126
|
+
expect(unicodeClient).toBeDefined();
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('HTTP client integration', () => {
|
|
130
|
+
it('should have HTTP client available in services', () => {
|
|
131
|
+
const smsService = client.sms();
|
|
132
|
+
expect(smsService).toBeDefined();
|
|
133
|
+
// Services should be properly initialized with HTTP client
|
|
134
|
+
});
|
|
36
135
|
});
|
|
37
136
|
});
|
|
38
137
|
//# sourceMappingURL=AyyildizClient.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AyyildizClient.test.js","sourceRoot":"","sources":["../../src/__tests__/AyyildizClient.test.ts"],"names":[],"mappings":";;AAAA,oCAA0C;
|
|
1
|
+
{"version":3,"file":"AyyildizClient.test.js","sourceRoot":"","sources":["../../src/__tests__/AyyildizClient.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportService.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ReportService.test.ts"],"names":[],"mappings":""}
|