UNPKG

19.8 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11var __generator = (this && this.__generator) || function (thisArg, body) {
12 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14 function verb(n) { return function (v) { return step([n, v]); }; }
15 function step(op) {
16 if (f) throw new TypeError("Generator is already executing.");
17 while (_) try {
18 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19 if (y = 0, t) op = [op[0] & 2, t.value];
20 switch (op[0]) {
21 case 0: case 1: t = op; break;
22 case 4: _.label++; return { value: op[1], done: false };
23 case 5: _.label++; y = op[1]; op = [0]; continue;
24 case 7: op = _.ops.pop(); _.trys.pop(); continue;
25 default:
26 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30 if (t[2]) _.ops.pop();
31 _.trys.pop(); continue;
32 }
33 op = body.call(thisArg, _);
34 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36 }
37};
38var __importDefault = (this && this.__importDefault) || function (mod) {
39 return (mod && mod.__esModule) ? mod : { "default": mod };
40};
41Object.defineProperty(exports, "__esModule", { value: true });
42var _1 = __importDefault(require("."));
43var testHelpers_1 = require("./utils/testHelpers");
44beforeEach(function () {
45 jest.restoreAllMocks();
46});
47describe('ZNS', function () {
48 it('resolves .zil name using blockchain', function () { return __awaiter(void 0, void 0, void 0, function () {
49 var testName, resolution, result;
50 return __generator(this, function (_a) {
51 switch (_a.label) {
52 case 0:
53 testName = 'resolves .zil name using blockchain';
54 testHelpers_1.mockAPICalls('zil_using_blockchain', testHelpers_1.ZilliqaUrl);
55 resolution = new _1.default({ blockchain: { zns: testHelpers_1.ZilliqaUrl } });
56 return [4 /*yield*/, resolution.resolve('cofounding.zil')];
57 case 1:
58 result = _a.sent();
59 expect(result).toBeDefined();
60 expect(result.addresses.ETH).toEqual('0xaa91734f90795e80751c96e682a321bb3c1a4186');
61 expect(result.meta.owner).toEqual('zil1ye72zl5t8wl5n3f2fsa5w0x7hja0jqj7mhct23');
62 expect(result.meta.type).toEqual('zns');
63 expect(result.meta.ttl).toEqual(0);
64 return [2 /*return*/];
65 }
66 });
67 }); });
68 it('supports root "zil" domain', function () { return __awaiter(void 0, void 0, void 0, function () {
69 var resolution;
70 return __generator(this, function (_a) {
71 resolution = new _1.default();
72 expect(resolution.namehash('zil')).toEqual('0x9915d0456b878862e822e2361da37232f626a2e47505c8795134a95d36138ed3');
73 return [2 /*return*/];
74 });
75 }); });
76 //TODO: Mock this test (live data is not correct anymore)
77 // it('resolves unclaimed domain using blockchain', async () => {
78 // const resolution = new Resolution({ blockchain: true });
79 // const result = await resolution.resolve('test.zil');
80 // expect(await resolution.address('test.zil', 'ETH')).toEqual(null);
81 // expect(await resolution.owner('test.zil')).toEqual(null);
82 // });
83 //TODO: Ditto
84 // it('resolves domain using blockchain #2', async () => {
85 // const resolution = new Resolution({ blockchain: true });
86 // const result = await resolution.resolve('test-manage-one.zil');
87 // expect(result.addresses).toEqual({ BURST: 'BURST-R7KK-SBSY-FENX-AWYMW' });
88 // expect(result.meta).toEqual({
89 // owner: 'zil1zzpjwyp2nu29pcv3sh04qxq9x5l45vke0hrwec',
90 // type: 'zns',
91 // ttl: 0,
92 // });
93 // });
94 it("doesn't support zil domain when zns is disabled", function () {
95 var resolution = new _1.default({ blockchain: { zns: false } });
96 expect(resolution.zns).toBeUndefined();
97 expect(resolution.isSupportedDomain('hello.zil')).toBeFalsy();
98 });
99 it('checks normalizeSource zns (boolean)', function () { return __awaiter(void 0, void 0, void 0, function () {
100 var resolution;
101 return __generator(this, function (_a) {
102 resolution = new _1.default({ blockchain: { zns: true } });
103 expect(resolution.zns.network).toBe('mainnet');
104 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
105 return [2 /*return*/];
106 });
107 }); });
108 it('checks normalizeSource zns (boolean - false)', function () { return __awaiter(void 0, void 0, void 0, function () {
109 var resolution;
110 return __generator(this, function (_a) {
111 resolution = new _1.default({ blockchain: { zns: false } });
112 expect(resolution.zns).toBeUndefined();
113 return [2 /*return*/];
114 });
115 }); });
116 it('checks normalizeSource zns (string)', function () { return __awaiter(void 0, void 0, void 0, function () {
117 var resolution;
118 return __generator(this, function (_a) {
119 resolution = new _1.default({
120 blockchain: { zns: 'https://api.zilliqa.com' },
121 });
122 expect(resolution.zns.network).toBe('mainnet');
123 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
124 return [2 /*return*/];
125 });
126 }); });
127 it('checks normalizeSource zns wrong string', function () { return __awaiter(void 0, void 0, void 0, function () {
128 return __generator(this, function (_a) {
129 expect(function () { return new _1.default({ blockchain: { zns: 'https://wrongurl.com' } }); }).toThrowError('Unspecified network in Resolution ZNS configuration');
130 return [2 /*return*/];
131 });
132 }); });
133 it('checks normalizeSource zns (object) #1', function () { return __awaiter(void 0, void 0, void 0, function () {
134 var resolution;
135 return __generator(this, function (_a) {
136 resolution = new _1.default({
137 blockchain: { zns: { url: 'https://api.zilliqa.com' } },
138 });
139 expect(resolution.zns.network).toBe('mainnet');
140 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
141 return [2 /*return*/];
142 });
143 }); });
144 it('checks normalizeSource zns (object) #2', function () { return __awaiter(void 0, void 0, void 0, function () {
145 var resolution;
146 return __generator(this, function (_a) {
147 resolution = new _1.default({ blockchain: { zns: { network: 333 } } });
148 expect(resolution.zns.url).toBe('https://dev-api.zilliqa.com');
149 expect(resolution.zns.network).toBe('testnet');
150 expect(resolution.zns.registryAddress).toBeUndefined();
151 return [2 /*return*/];
152 });
153 }); });
154 it('checks normalizeSource zns (object) #3', function () { return __awaiter(void 0, void 0, void 0, function () {
155 var resolution;
156 return __generator(this, function (_a) {
157 resolution = new _1.default({
158 blockchain: { zns: { url: 'https://api.zilliqa.com' } },
159 });
160 expect(resolution.zns.network).toBe('mainnet');
161 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
162 return [2 /*return*/];
163 });
164 }); });
165 it('checks normalizeSource zns (object) #4', function () { return __awaiter(void 0, void 0, void 0, function () {
166 var resolution;
167 return __generator(this, function (_a) {
168 resolution = new _1.default({
169 blockchain: { zns: { url: 'https://api.zilliqa.com', network: 1 } },
170 });
171 expect(resolution.zns.network).toBe('mainnet');
172 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
173 return [2 /*return*/];
174 });
175 }); });
176 it('checks normalizeSource zns (object) #5', function () { return __awaiter(void 0, void 0, void 0, function () {
177 var resolution;
178 return __generator(this, function (_a) {
179 resolution = new _1.default({
180 blockchain: { zns: { url: 'https://api.zilliqa.com', network: 333 } },
181 });
182 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
183 expect(resolution.zns.network).toBe('testnet');
184 expect(resolution.zns.registryAddress).toBeUndefined();
185 return [2 /*return*/];
186 });
187 }); });
188 it('checks normalizeSource zns (object) #6', function () { return __awaiter(void 0, void 0, void 0, function () {
189 return __generator(this, function (_a) {
190 expect(function () { return new _1.default({ blockchain: { zns: { network: 42 } } }); }).toThrowError('Unspecified network in Resolution ZNS configuration');
191 return [2 /*return*/];
192 });
193 }); });
194 it('checks normalizeSource zns (object) #7', function () { return __awaiter(void 0, void 0, void 0, function () {
195 return __generator(this, function (_a) {
196 expect(function () { return new _1.default({ blockchain: { zns: { network: 'invalid' } } }); }).toThrowError('Unspecified url in Resolution ZNS configuration');
197 return [2 /*return*/];
198 });
199 }); });
200 it('checks normalizeSource zns (object) #8', function () { return __awaiter(void 0, void 0, void 0, function () {
201 var resolution;
202 return __generator(this, function (_a) {
203 resolution = new _1.default({
204 blockchain: { zns: { network: 'mainnet' } },
205 });
206 expect(resolution.zns.network).toBe('mainnet');
207 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
208 return [2 /*return*/];
209 });
210 }); });
211 it('checks normalizeSource zns (object) #9', function () { return __awaiter(void 0, void 0, void 0, function () {
212 var resolution;
213 return __generator(this, function (_a) {
214 resolution = new _1.default({
215 blockchain: { zns: { network: 'testnet' } },
216 });
217 expect(resolution.zns.network).toBe('testnet');
218 expect(resolution.zns.url).toBe('https://dev-api.zilliqa.com');
219 expect(resolution.zns.registryAddress).toBeUndefined();
220 return [2 /*return*/];
221 });
222 }); });
223 it('checks normalizeSource zns (object) #10', function () { return __awaiter(void 0, void 0, void 0, function () {
224 var resolution;
225 return __generator(this, function (_a) {
226 resolution = new _1.default({
227 blockchain: {
228 zns: { registry: 'zil1jcgu2wlx6xejqk9jw3aaankw6lsjzeunx2j0jz' },
229 },
230 });
231 expect(resolution.zns.network).toBe('mainnet');
232 expect(resolution.zns.registryAddress).toBe('zil1jcgu2wlx6xejqk9jw3aaankw6lsjzeunx2j0jz');
233 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
234 return [2 /*return*/];
235 });
236 }); });
237 it('checks normalizeSource zns (object) #11', function () { return __awaiter(void 0, void 0, void 0, function () {
238 var resolution;
239 return __generator(this, function (_a) {
240 resolution = new _1.default({
241 blockchain: {
242 zns: { registry: '0xabcffff1231586348194fcabbeff1231240234fc' },
243 },
244 });
245 expect(resolution.zns.network).toBe('mainnet');
246 expect(resolution.zns.url).toBe('https://api.zilliqa.com');
247 expect(resolution.zns.registryAddress).toBe('zil1408llufrzkrrfqv5lj4malcjxyjqyd8urd7xz6');
248 return [2 /*return*/];
249 });
250 }); });
251 it('should resolve with Resolution key setuped', function () { return __awaiter(void 0, void 0, void 0, function () {
252 var resolution, eye, secondEye, result;
253 return __generator(this, function (_a) {
254 switch (_a.label) {
255 case 0:
256 resolution = new _1.default();
257 eye = testHelpers_1.mockAsyncMethod(resolution.zns, 'getRecordsAddresses', [
258 'zil194qcjskuuxh6qtg8xw3qqrr3kdc6dtq8ct6j9s',
259 '0xdac22230adfe4601f00631eae92df6d77f054891',
260 ]);
261 secondEye = testHelpers_1.mockAsyncMethod(resolution.zns, 'getResolverRecords', {
262 'crypto.BCH.address': 'qrq4sk49ayvepqz7j7ep8x4km2qp8lauvcnzhveyu6',
263 'crypto.BTC.address': '1EVt92qQnaLDcmVFtHivRJaunG2mf2C3mB',
264 'crypto.DASH.address': 'XnixreEBqFuSLnDSLNbfqMH1GsZk7cgW4j',
265 'crypto.ETH.address': '0x45b31e01AA6f42F0549aD482BE81635ED3149abb',
266 'crypto.LTC.address': 'LetmswTW3b7dgJ46mXuiXMUY17XbK29UmL',
267 'crypto.XMR.address': '447d7TVFkoQ57k3jm3wGKoEAkfEym59mK96Xw5yWamDNFGaLKW5wL2qK5RMTDKGSvYfQYVN7dLSrLdkwtKH3hwbSCQCu26d',
268 'crypto.ZEC.address': 't1h7ttmQvWCSH1wfrcmvT4mZJfGw2DgCSqV',
269 'crypto.ZIL.address': 'zil1yu5u4hegy9v3xgluweg4en54zm8f8auwxu0xxj',
270 'ipfs.html.value': 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHuK',
271 'ipfs.redirect_domain.value': 'www.unstoppabledomains.com',
272 });
273 return [4 /*yield*/, resolution.zns.Resolution('brad.zil')];
274 case 1:
275 result = _a.sent();
276 testHelpers_1.expectSpyToBeCalled([eye, secondEye]);
277 expect(result).toEqual({
278 crypto: {
279 BCH: { address: 'qrq4sk49ayvepqz7j7ep8x4km2qp8lauvcnzhveyu6' },
280 BTC: { address: '1EVt92qQnaLDcmVFtHivRJaunG2mf2C3mB' },
281 DASH: { address: 'XnixreEBqFuSLnDSLNbfqMH1GsZk7cgW4j' },
282 ETH: { address: '0x45b31e01AA6f42F0549aD482BE81635ED3149abb' },
283 LTC: { address: 'LetmswTW3b7dgJ46mXuiXMUY17XbK29UmL' },
284 XMR: {
285 address: '447d7TVFkoQ57k3jm3wGKoEAkfEym59mK96Xw5yWamDNFGaLKW5wL2qK5RMTDKGSvYfQYVN7dLSrLdkwtKH3hwbSCQCu26d',
286 },
287 ZEC: { address: 't1h7ttmQvWCSH1wfrcmvT4mZJfGw2DgCSqV' },
288 ZIL: { address: 'zil1yu5u4hegy9v3xgluweg4en54zm8f8auwxu0xxj' },
289 },
290 ipfs: {
291 html: { value: 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHuK' },
292 redirect_domain: { value: 'www.unstoppabledomains.com' },
293 },
294 });
295 return [2 /*return*/];
296 }
297 });
298 }); });
299 it('should resolve with Resolution key setuped #2', function () { return __awaiter(void 0, void 0, void 0, function () {
300 var resolution, eye, secondEye, result;
301 return __generator(this, function (_a) {
302 switch (_a.label) {
303 case 0:
304 resolution = new _1.default();
305 eye = testHelpers_1.mockAsyncMethod(resolution.zns, 'getRecordsAddresses', [
306 'zil1f6vyj5hgvll3xtx5kuxd8ucn66x9zxmkp34agy',
307 '0xa9b1d3647e4deb9ce4e601c2c9e0a2fdf2d7415a',
308 ]);
309 secondEye = testHelpers_1.mockAsyncMethod(resolution.zns, 'getResolverRecords', {
310 'ipfs.html.hash': 'QmefehFs5n8yQcGCVJnBMY3Hr6aMRHtsoniAhsM1KsHMSe',
311 'ipfs.html.value': 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHu',
312 'ipfs.redirect_domain.value': 'www.unstoppabledomains.com',
313 'whois.email.value': 'matt+test@unstoppabledomains.com',
314 'whois.for_sale.value': 'true',
315 });
316 return [4 /*yield*/, resolution.zns.Resolution('ergergergerg.zil')];
317 case 1:
318 result = _a.sent();
319 testHelpers_1.expectSpyToBeCalled([eye, secondEye]);
320 expect(result).toEqual({
321 ipfs: {
322 html: {
323 hash: 'QmefehFs5n8yQcGCVJnBMY3Hr6aMRHtsoniAhsM1KsHMSe',
324 value: 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHu',
325 },
326 redirect_domain: { value: 'www.unstoppabledomains.com' },
327 },
328 whois: {
329 email: { value: 'matt+test@unstoppabledomains.com' },
330 for_sale: { value: 'true' },
331 },
332 });
333 return [2 /*return*/];
334 }
335 });
336 }); });
337 it('should resolve with Resolution key setuped #3', function () { return __awaiter(void 0, void 0, void 0, function () {
338 var resolution, zns, result;
339 return __generator(this, function (_a) {
340 switch (_a.label) {
341 case 0:
342 resolution = new _1.default();
343 zns = resolution.zns;
344 expect(zns).toBeDefined();
345 return [4 /*yield*/, zns.Resolution('invalid.domain')];
346 case 1:
347 result = _a.sent();
348 expect(result).toEqual({});
349 return [2 /*return*/];
350 }
351 });
352 }); });
353 //TODO: DITTO
354 // it('should resolve with Resolution key setuped #4', async () => {
355 // const resolution = new Resolution();
356 // const zns = resolution.zns;
357 // expect(zns).toBeDefined();
358 // const result = await zns.Resolution('mcafee2020.zil');
359 // expect(result).toEqual({
360 // crypto: {
361 // BTC: { address: '17LV6fxL8b1pJomn5zoDR3ZCnbt88ehGBf' },
362 // ETH: { address: '0x0ed6180ef7c638064b9b17ff53ba76ec7077dd95' },
363 // LTC: { address: 'MTbeoMfWqEZaaZVG1yE1ENoxVGNmMAxoEj' },
364 // },
365 // whois: {
366 // email: { value: 'jordanb_970@hotmail.com' },
367 // for_sale: { value: 'true' },
368 // },
369 // });
370 // });
371});