UNPKG

58.9 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};
41var __importStar = (this && this.__importStar) || function (mod) {
42 if (mod && mod.__esModule) return mod;
43 var result = {};
44 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
45 result["default"] = mod;
46 return result;
47};
48Object.defineProperty(exports, "__esModule", { value: true });
49var nock_1 = __importDefault(require("nock"));
50var _1 = __importStar(require("."));
51var mockData_json_1 = __importDefault(require("./testData/mockData.json"));
52var ens_1 = __importDefault(require("./ens"));
53var types_1 = require("./types");
54var DefaultUrl = 'https://unstoppabledomains.com/api/v1';
55var MainnetUrl = 'https://mainnet.infura.io';
56var ZilliqaUrl = 'https://api.zilliqa.com';
57var mockAsyncMethod = function (object, method, value) {
58 if (!process.env.LIVE)
59 return jest.spyOn(object, method).mockResolvedValue(value);
60 else
61 return jest.spyOn(object, method);
62};
63var mockAsyncMethods = function (object, methods) {
64 return Object.entries(methods).map(function (method) {
65 return mockAsyncMethod(object, method[0], method[1]);
66 });
67};
68var expectSpyToBeCalled = function (spies) {
69 if (!process.env.LIVE) {
70 spies.forEach(function (spy) { return expect(spy).toBeCalled(); });
71 }
72};
73var mockAPICalls = function (testName, url) {
74 if (url === void 0) { url = MainnetUrl; }
75 if (process.env.LIVE) {
76 return;
77 }
78 var mcdt = mockData_json_1.default;
79 var mockCall = mcdt[testName];
80 mockCall.forEach(function (_a) {
81 var METHOD = _a.METHOD, REQUEST = _a.REQUEST, RESPONSE = _a.RESPONSE;
82 switch (METHOD) {
83 case 'POST': {
84 nock_1.default(url)
85 // .log()
86 .post('/', JSON.stringify(REQUEST))
87 .reply(200, JSON.stringify(RESPONSE));
88 }
89 default: {
90 nock_1.default(url)
91 // .log()
92 .get(REQUEST)
93 .reply(200, RESPONSE);
94 }
95 }
96 });
97};
98var expectResolutionErrorCode = function (callback, code) { return __awaiter(void 0, void 0, void 0, function () {
99 var error_1;
100 return __generator(this, function (_a) {
101 switch (_a.label) {
102 case 0:
103 _a.trys.push([0, 4, , 5]);
104 if (!(callback instanceof Promise)) return [3 /*break*/, 2];
105 return [4 /*yield*/, callback];
106 case 1:
107 _a.sent();
108 return [3 /*break*/, 3];
109 case 2:
110 callback();
111 _a.label = 3;
112 case 3: return [3 /*break*/, 5];
113 case 4:
114 error_1 = _a.sent();
115 if (error_1 instanceof _1.ResolutionError) {
116 return [2 /*return*/, expect(error_1.code).toEqual(code)];
117 }
118 else {
119 throw error_1;
120 }
121 return [3 /*break*/, 5];
122 case 5:
123 expect(true).toBeFalsy();
124 return [2 /*return*/];
125 }
126 });
127}); };
128beforeEach(function () {
129 nock_1.default.cleanAll();
130 jest.restoreAllMocks();
131});
132describe('Unstoppable API', function () {
133 it('resolves a domain', function () { return __awaiter(void 0, void 0, void 0, function () {
134 var namicorn, result;
135 return __generator(this, function (_a) {
136 switch (_a.label) {
137 case 0:
138 mockAPICalls('ud_api_generic_test', DefaultUrl);
139 namicorn = new _1.default({ blockchain: false });
140 return [4 /*yield*/, namicorn.address('cofounding.zil', 'eth')];
141 case 1:
142 result = _a.sent();
143 expect(result).toEqual('0xaa91734f90795e80751c96e682a321bb3c1a4186');
144 return [2 /*return*/];
145 }
146 });
147 }); });
148 it('namehashes zil domain', function () { return __awaiter(void 0, void 0, void 0, function () {
149 var namicorn;
150 return __generator(this, function (_a) {
151 namicorn = new _1.default({ blockchain: false });
152 expect(namicorn.namehash('cofounding.zil')).toEqual('0x1cc365ffd60bb50538e01d24c1f1e26c887c36f26a0de250660b8a1465c60667');
153 return [2 /*return*/];
154 });
155 }); });
156 it('supports zil and eth domains', function () { return __awaiter(void 0, void 0, void 0, function () {
157 var namicorn;
158 return __generator(this, function (_a) {
159 namicorn = new _1.default({ blockchain: false });
160 expect(namicorn.isSupportedDomain('cofounding.zil')).toEqual(true);
161 expect(namicorn.isSupportedDomain('cofounding.eth')).toEqual(true);
162 expect(namicorn.isSupportedDomain('cofounding.unknown')).toEqual(false);
163 return [2 /*return*/];
164 });
165 }); });
166 it('throws NamingServiceDown on FetchError', function () { return __awaiter(void 0, void 0, void 0, function () {
167 var namicorn, error;
168 return __generator(this, function (_a) {
169 switch (_a.label) {
170 case 0:
171 namicorn = new _1.default({ blockchain: false });
172 error = new Error();
173 error.name = 'FetchError';
174 jest.spyOn(namicorn.api, 'fetch').mockRejectedValue(error);
175 return [4 /*yield*/, expectResolutionErrorCode(namicorn.resolve('hello.zil'), _1.ResolutionErrorCode.NamingServiceDown)];
176 case 1:
177 _a.sent();
178 return [2 /*return*/];
179 }
180 });
181 }); });
182 it('returns owner of the domain', function () { return __awaiter(void 0, void 0, void 0, function () {
183 var namicorn, _a;
184 return __generator(this, function (_b) {
185 switch (_b.label) {
186 case 0:
187 namicorn = new _1.default({ blockchain: false });
188 mockAPICalls('ud_api_generic_test', DefaultUrl);
189 _a = expect;
190 return [4 /*yield*/, namicorn.owner('cofounding.zil')];
191 case 1:
192 _a.apply(void 0, [_b.sent()]).toEqual('zil1ye72zl5t8wl5n3f2fsa5w0x7hja0jqj7mhct23');
193 return [2 /*return*/];
194 }
195 });
196 }); });
197});
198describe('ZNS', function () {
199 it('resolves .zil name using blockchain', function () { return __awaiter(void 0, void 0, void 0, function () {
200 var testName, namicorn, result;
201 return __generator(this, function (_a) {
202 switch (_a.label) {
203 case 0:
204 testName = 'resolves .zil name using blockchain';
205 mockAPICalls('zil_using_blockchain', ZilliqaUrl);
206 namicorn = new _1.default({ blockchain: { zns: ZilliqaUrl } });
207 return [4 /*yield*/, namicorn.resolve('cofounding.zil')];
208 case 1:
209 result = _a.sent();
210 expect(result).toBeDefined();
211 expect(result.addresses.ETH).toEqual('0xaa91734f90795e80751c96e682a321bb3c1a4186');
212 expect(result.meta.owner).toEqual('zil1ye72zl5t8wl5n3f2fsa5w0x7hja0jqj7mhct23');
213 expect(result.meta.type).toEqual('zns');
214 expect(result.meta.ttl).toEqual(0);
215 return [2 /*return*/];
216 }
217 });
218 }); });
219 it('supports root "zil" domain', function () { return __awaiter(void 0, void 0, void 0, function () {
220 var namicorn;
221 return __generator(this, function (_a) {
222 namicorn = new _1.default();
223 expect(namicorn.namehash('zil')).toEqual('0x9915d0456b878862e822e2361da37232f626a2e47505c8795134a95d36138ed3');
224 return [2 /*return*/];
225 });
226 }); });
227 it('resolves unclaimed domain using blockchain', function () { return __awaiter(void 0, void 0, void 0, function () {
228 var namicorn, result, _a, _b;
229 return __generator(this, function (_c) {
230 switch (_c.label) {
231 case 0:
232 namicorn = new _1.default({ blockchain: true });
233 return [4 /*yield*/, namicorn.resolve('test.zil')];
234 case 1:
235 result = _c.sent();
236 _a = expect;
237 return [4 /*yield*/, namicorn.address('test.zil', 'ETH')];
238 case 2:
239 _a.apply(void 0, [_c.sent()]).toEqual(null);
240 _b = expect;
241 return [4 /*yield*/, namicorn.owner('test.zil')];
242 case 3:
243 _b.apply(void 0, [_c.sent()]).toEqual(null);
244 return [2 /*return*/];
245 }
246 });
247 }); });
248 it('resolves domain using blockchain #2', function () { return __awaiter(void 0, void 0, void 0, function () {
249 var namicorn, result;
250 return __generator(this, function (_a) {
251 switch (_a.label) {
252 case 0:
253 namicorn = new _1.default({ blockchain: true });
254 return [4 /*yield*/, namicorn.resolve('test-manage-one.zil')];
255 case 1:
256 result = _a.sent();
257 expect(result.addresses).toEqual({ BURST: 'BURST-R7KK-SBSY-FENX-AWYMW' });
258 expect(result.meta).toEqual({
259 owner: 'zil1zzpjwyp2nu29pcv3sh04qxq9x5l45vke0hrwec',
260 type: 'zns',
261 ttl: 0,
262 });
263 return [2 /*return*/];
264 }
265 });
266 }); });
267 it("doesn't support zil domain when zns is disabled", function () {
268 var namicorn = new _1.default({ blockchain: { zns: false } });
269 expect(namicorn.zns).toBeUndefined();
270 expect(namicorn.isSupportedDomain('hello.zil')).toBeFalsy();
271 });
272 it('checks normalizeSource zns (boolean)', function () { return __awaiter(void 0, void 0, void 0, function () {
273 var namicorn;
274 return __generator(this, function (_a) {
275 namicorn = new _1.default({ blockchain: { zns: true } });
276 expect(namicorn.zns.network).toBe('mainnet');
277 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
278 return [2 /*return*/];
279 });
280 }); });
281 it('checks normalizeSource zns (boolean - false)', function () { return __awaiter(void 0, void 0, void 0, function () {
282 var namicorn;
283 return __generator(this, function (_a) {
284 namicorn = new _1.default({ blockchain: { zns: false } });
285 expect(namicorn.zns).toBeUndefined();
286 return [2 /*return*/];
287 });
288 }); });
289 it('checks normalizeSource zns (string)', function () { return __awaiter(void 0, void 0, void 0, function () {
290 var namicorn;
291 return __generator(this, function (_a) {
292 namicorn = new _1.default({
293 blockchain: { zns: 'https://api.zilliqa.com' },
294 });
295 expect(namicorn.zns.network).toBe('mainnet');
296 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
297 return [2 /*return*/];
298 });
299 }); });
300 it('checks normalizeSource zns wrong string', function () { return __awaiter(void 0, void 0, void 0, function () {
301 return __generator(this, function (_a) {
302 expect(function () { return new _1.default({ blockchain: { zns: 'https://wrongurl.com' } }); }).toThrowError('Unspecified network in Namicorn ZNS configuration');
303 return [2 /*return*/];
304 });
305 }); });
306 it('checks normalizeSource zns (object) #1', function () { return __awaiter(void 0, void 0, void 0, function () {
307 var namicorn;
308 return __generator(this, function (_a) {
309 namicorn = new _1.default({
310 blockchain: { zns: { url: 'https://api.zilliqa.com' } },
311 });
312 expect(namicorn.zns.network).toBe('mainnet');
313 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
314 return [2 /*return*/];
315 });
316 }); });
317 it('checks normalizeSource zns (object) #2', function () { return __awaiter(void 0, void 0, void 0, function () {
318 var namicorn;
319 return __generator(this, function (_a) {
320 namicorn = new _1.default({ blockchain: { zns: { network: 333 } } });
321 expect(namicorn.zns.url).toBe('https://dev-api.zilliqa.com');
322 expect(namicorn.zns.network).toBe('testnet');
323 expect(namicorn.zns.registryAddress).toBeUndefined();
324 return [2 /*return*/];
325 });
326 }); });
327 it('checks normalizeSource zns (object) #3', function () { return __awaiter(void 0, void 0, void 0, function () {
328 var namicorn;
329 return __generator(this, function (_a) {
330 namicorn = new _1.default({
331 blockchain: { zns: { url: 'https://api.zilliqa.com' } },
332 });
333 expect(namicorn.zns.network).toBe('mainnet');
334 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
335 return [2 /*return*/];
336 });
337 }); });
338 it('checks normalizeSource zns (object) #4', function () { return __awaiter(void 0, void 0, void 0, function () {
339 var namicorn;
340 return __generator(this, function (_a) {
341 namicorn = new _1.default({
342 blockchain: { zns: { url: 'https://api.zilliqa.com', network: 1 } },
343 });
344 expect(namicorn.zns.network).toBe('mainnet');
345 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
346 return [2 /*return*/];
347 });
348 }); });
349 it('checks normalizeSource zns (object) #5', function () { return __awaiter(void 0, void 0, void 0, function () {
350 var namicorn;
351 return __generator(this, function (_a) {
352 namicorn = new _1.default({
353 blockchain: { zns: { url: 'https://api.zilliqa.com', network: 333 } },
354 });
355 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
356 expect(namicorn.zns.network).toBe('testnet');
357 expect(namicorn.zns.registryAddress).toBeUndefined();
358 return [2 /*return*/];
359 });
360 }); });
361 it('checks normalizeSource zns (object) #6', function () { return __awaiter(void 0, void 0, void 0, function () {
362 return __generator(this, function (_a) {
363 expect(function () { return new _1.default({ blockchain: { zns: { network: 42 } } }); }).toThrowError('Unspecified network in Namicorn ZNS configuration');
364 return [2 /*return*/];
365 });
366 }); });
367 it('checks normalizeSource zns (object) #7', function () { return __awaiter(void 0, void 0, void 0, function () {
368 return __generator(this, function (_a) {
369 expect(function () { return new _1.default({ blockchain: { zns: { network: 'invalid' } } }); }).toThrowError('Unspecified url in Namicorn ZNS configuration');
370 return [2 /*return*/];
371 });
372 }); });
373 it('checks normalizeSource zns (object) #8', function () { return __awaiter(void 0, void 0, void 0, function () {
374 var namicorn;
375 return __generator(this, function (_a) {
376 namicorn = new _1.default({
377 blockchain: { zns: { network: 'mainnet' } },
378 });
379 expect(namicorn.zns.network).toBe('mainnet');
380 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
381 return [2 /*return*/];
382 });
383 }); });
384 it('checks normalizeSource zns (object) #9', function () { return __awaiter(void 0, void 0, void 0, function () {
385 var namicorn;
386 return __generator(this, function (_a) {
387 namicorn = new _1.default({
388 blockchain: { zns: { network: 'testnet' } },
389 });
390 expect(namicorn.zns.network).toBe('testnet');
391 expect(namicorn.zns.url).toBe('https://dev-api.zilliqa.com');
392 expect(namicorn.zns.registryAddress).toBeUndefined();
393 return [2 /*return*/];
394 });
395 }); });
396 it('checks normalizeSource zns (object) #10', function () { return __awaiter(void 0, void 0, void 0, function () {
397 var namicorn;
398 return __generator(this, function (_a) {
399 namicorn = new _1.default({
400 blockchain: {
401 zns: { registry: 'zil1jcgu2wlx6xejqk9jw3aaankw6lsjzeunx2j0jz' },
402 },
403 });
404 expect(namicorn.zns.network).toBe('mainnet');
405 expect(namicorn.zns.registryAddress).toBe('zil1jcgu2wlx6xejqk9jw3aaankw6lsjzeunx2j0jz');
406 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
407 return [2 /*return*/];
408 });
409 }); });
410 it('checks normalizeSource zns (object) #11', function () { return __awaiter(void 0, void 0, void 0, function () {
411 var namicorn;
412 return __generator(this, function (_a) {
413 namicorn = new _1.default({
414 blockchain: {
415 zns: { registry: '0xabcffff1231586348194fcabbeff1231240234fc' },
416 },
417 });
418 expect(namicorn.zns.network).toBe('mainnet');
419 expect(namicorn.zns.url).toBe('https://api.zilliqa.com');
420 expect(namicorn.zns.registryAddress).toBe('zil1408llufrzkrrfqv5lj4malcjxyjqyd8urd7xz6');
421 return [2 /*return*/];
422 });
423 }); });
424 it('should resolve with resolution key setuped', function () { return __awaiter(void 0, void 0, void 0, function () {
425 var namicorn, eye, secondEye, result;
426 return __generator(this, function (_a) {
427 switch (_a.label) {
428 case 0:
429 namicorn = new _1.default();
430 eye = mockAsyncMethod(namicorn.zns, 'getRecordsAddresses', [
431 'zil194qcjskuuxh6qtg8xw3qqrr3kdc6dtq8ct6j9s',
432 '0xdac22230adfe4601f00631eae92df6d77f054891',
433 ]);
434 secondEye = mockAsyncMethod(namicorn.zns, 'getResolverRecords', {
435 'crypto.BCH.address': 'qrq4sk49ayvepqz7j7ep8x4km2qp8lauvcnzhveyu6',
436 'crypto.BTC.address': '1EVt92qQnaLDcmVFtHivRJaunG2mf2C3mB',
437 'crypto.DASH.address': 'XnixreEBqFuSLnDSLNbfqMH1GsZk7cgW4j',
438 'crypto.ETH.address': '0x45b31e01AA6f42F0549aD482BE81635ED3149abb',
439 'crypto.LTC.address': 'LetmswTW3b7dgJ46mXuiXMUY17XbK29UmL',
440 'crypto.XMR.address': '447d7TVFkoQ57k3jm3wGKoEAkfEym59mK96Xw5yWamDNFGaLKW5wL2qK5RMTDKGSvYfQYVN7dLSrLdkwtKH3hwbSCQCu26d',
441 'crypto.ZEC.address': 't1h7ttmQvWCSH1wfrcmvT4mZJfGw2DgCSqV',
442 'crypto.ZIL.address': 'zil1yu5u4hegy9v3xgluweg4en54zm8f8auwxu0xxj',
443 'ipfs.html.value': 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHuK',
444 'ipfs.redirect_domain.value': 'www.unstoppabledomains.com',
445 });
446 return [4 /*yield*/, namicorn.zns.resolution('brad.zil')];
447 case 1:
448 result = _a.sent();
449 expectSpyToBeCalled([eye, secondEye]);
450 expect(result).toEqual({
451 crypto: {
452 BCH: { address: 'qrq4sk49ayvepqz7j7ep8x4km2qp8lauvcnzhveyu6' },
453 BTC: { address: '1EVt92qQnaLDcmVFtHivRJaunG2mf2C3mB' },
454 DASH: { address: 'XnixreEBqFuSLnDSLNbfqMH1GsZk7cgW4j' },
455 ETH: { address: '0x45b31e01AA6f42F0549aD482BE81635ED3149abb' },
456 LTC: { address: 'LetmswTW3b7dgJ46mXuiXMUY17XbK29UmL' },
457 XMR: {
458 address: '447d7TVFkoQ57k3jm3wGKoEAkfEym59mK96Xw5yWamDNFGaLKW5wL2qK5RMTDKGSvYfQYVN7dLSrLdkwtKH3hwbSCQCu26d',
459 },
460 ZEC: { address: 't1h7ttmQvWCSH1wfrcmvT4mZJfGw2DgCSqV' },
461 ZIL: { address: 'zil1yu5u4hegy9v3xgluweg4en54zm8f8auwxu0xxj' },
462 },
463 ipfs: {
464 html: { value: 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHuK' },
465 redirect_domain: { value: 'www.unstoppabledomains.com' },
466 },
467 });
468 return [2 /*return*/];
469 }
470 });
471 }); });
472 it('should resolve with resolution key setuped #2', function () { return __awaiter(void 0, void 0, void 0, function () {
473 var namicorn, eye, secondEye, result;
474 return __generator(this, function (_a) {
475 switch (_a.label) {
476 case 0:
477 namicorn = new _1.default();
478 eye = mockAsyncMethod(namicorn.zns, 'getRecordsAddresses', [
479 'zil1f6vyj5hgvll3xtx5kuxd8ucn66x9zxmkp34agy',
480 '0xa9b1d3647e4deb9ce4e601c2c9e0a2fdf2d7415a',
481 ]);
482 secondEye = mockAsyncMethod(namicorn.zns, 'getResolverRecords', {
483 'ipfs.html.hash': 'QmefehFs5n8yQcGCVJnBMY3Hr6aMRHtsoniAhsM1KsHMSe',
484 'ipfs.html.value': 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHu',
485 'ipfs.redirect_domain.value': 'www.unstoppabledomains.com',
486 'whois.email.value': 'matt+test@unstoppabledomains.com',
487 'whois.for_sale.value': 'true',
488 });
489 return [4 /*yield*/, namicorn.zns.resolution('ergergergerg.zil')];
490 case 1:
491 result = _a.sent();
492 expectSpyToBeCalled([eye, secondEye]);
493 expect(result).toEqual({
494 ipfs: {
495 html: {
496 hash: 'QmefehFs5n8yQcGCVJnBMY3Hr6aMRHtsoniAhsM1KsHMSe',
497 value: 'QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHu',
498 },
499 redirect_domain: { value: 'www.unstoppabledomains.com' },
500 },
501 whois: {
502 email: { value: 'matt+test@unstoppabledomains.com' },
503 for_sale: { value: 'true' },
504 },
505 });
506 return [2 /*return*/];
507 }
508 });
509 }); });
510 it('should resolve with resolution key setuped #3', function () { return __awaiter(void 0, void 0, void 0, function () {
511 var namicorn, zns, result;
512 return __generator(this, function (_a) {
513 switch (_a.label) {
514 case 0:
515 namicorn = new _1.default();
516 zns = namicorn.zns;
517 expect(zns).toBeDefined();
518 return [4 /*yield*/, zns.resolution('invalid.domain')];
519 case 1:
520 result = _a.sent();
521 expect(result).toEqual({});
522 return [2 /*return*/];
523 }
524 });
525 }); });
526 it('should resolve with resolution key setuped #4', function () { return __awaiter(void 0, void 0, void 0, function () {
527 var namicorn, zns, result;
528 return __generator(this, function (_a) {
529 switch (_a.label) {
530 case 0:
531 namicorn = new _1.default();
532 zns = namicorn.zns;
533 expect(zns).toBeDefined();
534 return [4 /*yield*/, zns.resolution('mcafee2020.zil')];
535 case 1:
536 result = _a.sent();
537 expect(result).toEqual({
538 crypto: {
539 BTC: { address: '17LV6fxL8b1pJomn5zoDR3ZCnbt88ehGBf' },
540 ETH: { address: '0x0ed6180ef7c638064b9b17ff53ba76ec7077dd95' },
541 LTC: { address: 'MTbeoMfWqEZaaZVG1yE1ENoxVGNmMAxoEj' },
542 },
543 whois: {
544 email: { value: 'jordanb_970@hotmail.com' },
545 for_sale: { value: 'true' },
546 },
547 });
548 return [2 /*return*/];
549 }
550 });
551 }); });
552 // BREAKS RANDOMLY...
553 // it('should check for wrong interface on zns', async () => {
554 // const namicorn = new Namicorn();
555 // const zilliqa = new Zilliqa('https://api.zilliqa.com');
556 // const { zns } = namicorn as any;
557 // expect(zns).toBeDefined();
558 // const resolver = zilliqa.contracts.at(
559 // toChecksumAddress('0xdac22230adfe4601f00631eae92df6d77f054891'),
560 // );
561 // expectResolutionErrorCode(
562 // zns.getContractField(resolver, 'unknownField'),
563 // 'IncorrectResolverInterface'
564 // );
565 // })
566});
567describe('ENS', function () {
568 it('allows ens network specified as string', function () { return __awaiter(void 0, void 0, void 0, function () {
569 var namicorn;
570 return __generator(this, function (_a) {
571 namicorn = new _1.default({
572 blockchain: { ens: { network: 'mainnet' } },
573 });
574 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
575 expect(namicorn.ens.network).toEqual('mainnet');
576 return [2 /*return*/];
577 });
578 }); });
579 it('resolves .eth name using blockchain', function () { return __awaiter(void 0, void 0, void 0, function () {
580 var namicorn, eyes, _a, _b;
581 return __generator(this, function (_c) {
582 switch (_c.label) {
583 case 0:
584 namicorn = new _1.default({
585 blockchain: { ens: true },
586 });
587 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
588 expect(namicorn.ens.network).toEqual('mainnet');
589 eyes = mockAsyncMethods(namicorn.ens, {
590 getOwner: '0x825ef33943d925731FBB89C99aF5780D888bD217',
591 getResolver: '0x5FfC014343cd971B7eb70732021E26C35B744cc4',
592 fetchAddress: '0x714ef33943d925731FBB89C99aF5780D888bD106',
593 });
594 _a = expect;
595 return [4 /*yield*/, namicorn.address('matthewgould.eth', 'ETH')];
596 case 1:
597 _a.apply(void 0, [_c.sent()]).toEqual('0x714ef33943d925731FBB89C99aF5780D888bD106');
598 _b = expect;
599 return [4 /*yield*/, namicorn.owner('matthewgould.eth')];
600 case 2:
601 _b.apply(void 0, [_c.sent()]).toEqual('0x825ef33943d925731FBB89C99aF5780D888bD217');
602 expectSpyToBeCalled(eyes);
603 return [2 /*return*/];
604 }
605 });
606 }); });
607 it('reverses address to ENS domain', function () { return __awaiter(void 0, void 0, void 0, function () {
608 var ens, eyes, result;
609 return __generator(this, function (_a) {
610 switch (_a.label) {
611 case 0:
612 ens = new ens_1.default(MainnetUrl);
613 eyes = mockAsyncMethods(ens, {
614 resolverCallToName: 'adrian.argent.xyz',
615 getResolver: '0xDa1756Bb923Af5d1a05E277CB1E54f1D0A127890',
616 });
617 return [4 /*yield*/, ens.reverse('0xb0E7a465D255aE83eb7F8a50504F3867B945164C', 'ETH')];
618 case 1:
619 result = _a.sent();
620 expectSpyToBeCalled(eyes);
621 expect(result).toEqual('adrian.argent.xyz');
622 return [2 /*return*/];
623 }
624 });
625 }); });
626 it('reverses address to ENS domain null', function () { return __awaiter(void 0, void 0, void 0, function () {
627 var ens, spy, result;
628 return __generator(this, function (_a) {
629 switch (_a.label) {
630 case 0:
631 ens = new ens_1.default(MainnetUrl);
632 spy = mockAsyncMethod(ens, 'getResolver', types_1.NullAddress);
633 return [4 /*yield*/, ens.reverse('0x112234455c3a32fd11230c42e7bccd4a84e02010', 'ETH')];
634 case 1:
635 result = _a.sent();
636 expectSpyToBeCalled([spy]);
637 expect(result).toEqual(null);
638 return [2 /*return*/];
639 }
640 });
641 }); });
642 it('resolves .xyz name using ENS blockchain', function () { return __awaiter(void 0, void 0, void 0, function () {
643 var namicorn, eyes, result;
644 return __generator(this, function (_a) {
645 switch (_a.label) {
646 case 0:
647 namicorn = new _1.default({
648 blockchain: { ens: MainnetUrl },
649 });
650 eyes = mockAsyncMethods(namicorn.ens, {
651 getOwner: '0xb0E7a465D255aE83eb7F8a50504F3867B945164C',
652 getResolver: '0xDa1756Bb923Af5d1a05E277CB1E54f1D0A127890',
653 fetchAddress: '0xb0E7a465D255aE83eb7F8a50504F3867B945164C',
654 });
655 return [4 /*yield*/, namicorn.address('adrian.argent.xyz', 'ETH')];
656 case 1:
657 result = _a.sent();
658 expectSpyToBeCalled(eyes);
659 expect(result).toEqual('0xb0E7a465D255aE83eb7F8a50504F3867B945164C');
660 return [2 /*return*/];
661 }
662 });
663 }); });
664 it('resolves .luxe name using ENS blockchain', function () { return __awaiter(void 0, void 0, void 0, function () {
665 var namicorn, eyes, result;
666 return __generator(this, function (_a) {
667 switch (_a.label) {
668 case 0:
669 namicorn = new _1.default({
670 blockchain: { ens: MainnetUrl },
671 });
672 eyes = mockAsyncMethods(namicorn.ens, {
673 getOwner: '0xf3dE750A73C11a6a2863761E930BF5fE979d5663',
674 getResolver: '0xBD5F5ec7ed5f19b53726344540296C02584A5237',
675 fetchAddress: '0xf3dE750A73C11a6a2863761E930BF5fE979d5663',
676 });
677 return [4 /*yield*/, namicorn.address('john.luxe', 'ETH')];
678 case 1:
679 result = _a.sent();
680 expectSpyToBeCalled(eyes);
681 expect(result).toEqual('0xf3dE750A73C11a6a2863761E930BF5fE979d5663');
682 return [2 /*return*/];
683 }
684 });
685 }); });
686 it('resolves .luxe name using ENS blockchain with safe null return', function () { return __awaiter(void 0, void 0, void 0, function () {
687 var namicorn, ownerEye, result;
688 return __generator(this, function (_a) {
689 switch (_a.label) {
690 case 0:
691 namicorn = new _1.default({
692 blockchain: { ens: MainnetUrl },
693 });
694 ownerEye = mockAsyncMethod(namicorn.ens, 'getOwner', types_1.NullAddress);
695 return [4 /*yield*/, namicorn.address('something.luxe', 'ETH')];
696 case 1:
697 result = _a.sent();
698 expectSpyToBeCalled([ownerEye]);
699 expect(result).toEqual(null);
700 return [2 /*return*/];
701 }
702 });
703 }); });
704 it('resolves .luxe name using ENS blockchain with thrown error', function () { return __awaiter(void 0, void 0, void 0, function () {
705 var namicorn;
706 return __generator(this, function (_a) {
707 switch (_a.label) {
708 case 0:
709 namicorn = new _1.default({
710 blockchain: { ens: MainnetUrl },
711 });
712 return [4 /*yield*/, expectResolutionErrorCode(namicorn.addressOrThrow('something.luxe', 'ETH'), _1.ResolutionErrorCode.UnregisteredDomain)];
713 case 1:
714 _a.sent();
715 return [2 /*return*/];
716 }
717 });
718 }); });
719 it('resolves name with resolver but without an owner', function () { return __awaiter(void 0, void 0, void 0, function () {
720 var ens, eyes, doge;
721 return __generator(this, function (_a) {
722 switch (_a.label) {
723 case 0:
724 ens = new ens_1.default();
725 eyes = mockAsyncMethods(ens, {
726 getOwner: types_1.NullAddress,
727 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
728 callMethod: '0x76a9144620b70031f0e9437e374a2100934fba4911046088ac',
729 });
730 return [4 /*yield*/, ens.address('testthing.eth', 'DOGE')];
731 case 1:
732 doge = _a.sent();
733 expectSpyToBeCalled(eyes);
734 expect(doge).toBe('DBXu2kgc3xtvCUWFcxFE3r9hEYgmuaaCyD');
735 return [2 /*return*/];
736 }
737 });
738 }); });
739 it('checks if the network is supported(true)', function () { return __awaiter(void 0, void 0, void 0, function () {
740 var ens, answer;
741 return __generator(this, function (_a) {
742 ens = new ens_1.default({ network: 1 });
743 answer = ens.isSupportedNetwork();
744 expect(answer).toBe(true);
745 return [2 /*return*/];
746 });
747 }); });
748 it('checks if the network is supported(false)', function () { return __awaiter(void 0, void 0, void 0, function () {
749 var ens, answer;
750 return __generator(this, function (_a) {
751 ens = new ens_1.default({ network: 5 });
752 answer = ens.isSupportedNetwork();
753 expect(answer).toBe(false);
754 return [2 /*return*/];
755 });
756 }); });
757 it('checks normalizeSource ens (boolean)', function () { return __awaiter(void 0, void 0, void 0, function () {
758 var namicorn;
759 return __generator(this, function (_a) {
760 namicorn = new _1.default({ blockchain: { ens: true } });
761 expect(namicorn.ens.network).toBe('mainnet');
762 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
763 return [2 /*return*/];
764 });
765 }); });
766 it('checks normalizeSource ens (boolean - false)', function () { return __awaiter(void 0, void 0, void 0, function () {
767 var ens;
768 return __generator(this, function (_a) {
769 ens = new ens_1.default({ network: 5 });
770 expect(ens.network).toBe('goerli');
771 expect(ens.url).toBe('https://goerli.infura.io');
772 expect(ens.isSupportedNetwork()).toBeFalsy();
773 return [2 /*return*/];
774 });
775 }); });
776 it('checks normalizeSource ens (object) #1', function () { return __awaiter(void 0, void 0, void 0, function () {
777 var namicorn;
778 return __generator(this, function (_a) {
779 namicorn = new _1.default({
780 blockchain: { ens: { url: 'https://mainnet.infura.io' } },
781 });
782 expect(namicorn.ens.network).toBe('mainnet');
783 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
784 return [2 /*return*/];
785 });
786 }); });
787 it('checks normalizeSource ens (object) #2', function () { return __awaiter(void 0, void 0, void 0, function () {
788 var namicorn;
789 return __generator(this, function (_a) {
790 namicorn = new _1.default({ blockchain: { ens: { network: 3 } } });
791 expect(namicorn.ens.network).toBe('ropsten');
792 expect(namicorn.ens.url).toBe('https://ropsten.infura.io');
793 expect(namicorn.ens.registryAddress).toBe('0x112234455c3a32fd11230c42e7bccd4a84e02010');
794 return [2 /*return*/];
795 });
796 }); });
797 it('checks normalizeSource ens (object) #3', function () { return __awaiter(void 0, void 0, void 0, function () {
798 var namicorn;
799 return __generator(this, function (_a) {
800 namicorn = new _1.default({
801 blockchain: { ens: { url: 'https://rinkeby.infura.io' } },
802 });
803 expect(namicorn.ens.network).toBe('rinkeby');
804 expect(namicorn.ens.url).toBe('https://rinkeby.infura.io');
805 return [2 /*return*/];
806 });
807 }); });
808 it('checks normalizeSource ens (object) #4', function () { return __awaiter(void 0, void 0, void 0, function () {
809 var namicorn;
810 return __generator(this, function (_a) {
811 namicorn = new _1.default({
812 blockchain: { ens: { url: 'https://goerli.infura.io', network: 5 } },
813 });
814 expect(namicorn.ens.network).toBe('goerli');
815 expect(namicorn.ens.url).toBe('https://goerli.infura.io');
816 expect(namicorn.ens.registryAddress).toBeUndefined();
817 return [2 /*return*/];
818 });
819 }); });
820 it('checks normalizeSource ens (object) #6', function () { return __awaiter(void 0, void 0, void 0, function () {
821 return __generator(this, function (_a) {
822 expect(function () { return new _1.default({ blockchain: { ens: { network: 7543 } } }); }).toThrowError('Unspecified network in Namicorn ENS configuration');
823 return [2 /*return*/];
824 });
825 }); });
826 it('checks normalizeSource ens (object) #7', function () { return __awaiter(void 0, void 0, void 0, function () {
827 return __generator(this, function (_a) {
828 expect(function () { return new _1.default({ blockchain: { ens: { network: 'invalid' } } }); }).toThrowError('Unspecified url in Namicorn ENS configuration');
829 return [2 /*return*/];
830 });
831 }); });
832 it('checks normalizeSource ens (object) #8', function () { return __awaiter(void 0, void 0, void 0, function () {
833 var namicorn;
834 return __generator(this, function (_a) {
835 namicorn = new _1.default({
836 blockchain: { ens: { network: 'mainnet' } },
837 });
838 expect(namicorn.ens.network).toBe('mainnet');
839 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
840 return [2 /*return*/];
841 });
842 }); });
843 it('checks normalizeSource ens (object) #9', function () { return __awaiter(void 0, void 0, void 0, function () {
844 var namicorn;
845 return __generator(this, function (_a) {
846 namicorn = new _1.default({
847 blockchain: { ens: { network: 'kovan' } },
848 });
849 expect(namicorn.ens.network).toBe('kovan');
850 expect(namicorn.ens.url).toBe('https://kovan.infura.io');
851 return [2 /*return*/];
852 });
853 }); });
854 it('checks normalizeSource ens (object) #10', function () { return __awaiter(void 0, void 0, void 0, function () {
855 var namicorn;
856 return __generator(this, function (_a) {
857 namicorn = new _1.default({
858 blockchain: {
859 ens: { registry: '0x314159265dd8dbb310642f98f50c066173c1259b' },
860 },
861 });
862 expect(namicorn.ens.network).toBe('mainnet');
863 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
864 expect(namicorn.ens.registryAddress).toBe('0x314159265dd8dbb310642f98f50c066173c1259b');
865 return [2 /*return*/];
866 });
867 }); });
868 it('checks normalizeSource ens (object) #11', function () { return __awaiter(void 0, void 0, void 0, function () {
869 var namicorn;
870 return __generator(this, function (_a) {
871 namicorn = new _1.default({
872 blockchain: {
873 ens: {
874 network: 'ropsten',
875 registry: '0x112234455c3a32fd11230c42e7bccd4a84e02010',
876 },
877 },
878 });
879 expect(namicorn.ens.network).toBe('ropsten');
880 expect(namicorn.ens.url).toBe('https://ropsten.infura.io');
881 expect(namicorn.ens.registryAddress).toBe('0x112234455c3a32fd11230c42e7bccd4a84e02010');
882 return [2 /*return*/];
883 });
884 }); });
885 it('checks normalizeSource ens (object) #12', function () { return __awaiter(void 0, void 0, void 0, function () {
886 var namicorn;
887 return __generator(this, function (_a) {
888 namicorn = new _1.default({
889 blockchain: {
890 ens: { registry: '0xabcffff1231586348194fcabbeff1231240234fc' },
891 },
892 });
893 expect(namicorn.ens.network).toBe('mainnet');
894 expect(namicorn.ens.url).toBe('https://mainnet.infura.io');
895 expect(namicorn.ens.registryAddress).toBe('0xabcffff1231586348194fcabbeff1231240234fc');
896 return [2 /*return*/];
897 });
898 }); });
899 it('checks normalizeSource ens (object) #13', function () { return __awaiter(void 0, void 0, void 0, function () {
900 var namicorn;
901 return __generator(this, function (_a) {
902 namicorn = new _1.default({
903 blockchain: {
904 ens: { network: 'custom', url: 'https://custom.notinfura.io' },
905 },
906 });
907 expect(namicorn.ens.network).toBe('custom');
908 expect(namicorn.ens.url).toBe('https://custom.notinfura.io');
909 expect(namicorn.ens.registryAddress).toBeUndefined();
910 return [2 /*return*/];
911 });
912 }); });
913 it('checks ens multicoin support #1', function () { return __awaiter(void 0, void 0, void 0, function () {
914 var ens, eyes, doge;
915 return __generator(this, function (_a) {
916 switch (_a.label) {
917 case 0:
918 ens = new ens_1.default();
919 eyes = mockAsyncMethods(ens, {
920 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
921 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
922 callMethod: '0x76a9144620b70031f0e9437e374a2100934fba4911046088ac',
923 });
924 return [4 /*yield*/, ens.address('testthing.eth', 'DOGE')];
925 case 1:
926 doge = _a.sent();
927 expectSpyToBeCalled(eyes);
928 expect(doge).toBe('DBXu2kgc3xtvCUWFcxFE3r9hEYgmuaaCyD');
929 return [2 /*return*/];
930 }
931 });
932 }); });
933 it('checks ens multicoin support #2', function () { return __awaiter(void 0, void 0, void 0, function () {
934 var ens, eyes, ltc;
935 return __generator(this, function (_a) {
936 switch (_a.label) {
937 case 0:
938 ens = new ens_1.default();
939 eyes = mockAsyncMethods(ens, {
940 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
941 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
942 callMethod: '0xa914e8604d28ef5d2a7caafe8741e5dd4816b7cb19ea87',
943 });
944 return [4 /*yield*/, ens.address('testthing.eth', 'LTC')];
945 case 1:
946 ltc = _a.sent();
947 expectSpyToBeCalled(eyes);
948 expect(ltc).toBe('MV5rN5EcX1imDS2gEh5jPJXeiW5QN8YrK3');
949 return [2 /*return*/];
950 }
951 });
952 }); });
953 it('checks ens multicoin support #3', function () { return __awaiter(void 0, void 0, void 0, function () {
954 var ens, eyes, eth;
955 return __generator(this, function (_a) {
956 switch (_a.label) {
957 case 0:
958 ens = new ens_1.default();
959 eyes = mockAsyncMethods(ens, {
960 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
961 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
962 callMethod: '0x314159265dd8dbb310642f98f50c066173c1259b',
963 });
964 return [4 /*yield*/, ens.address('testthing.eth', 'ETH')];
965 case 1:
966 eth = _a.sent();
967 expectSpyToBeCalled(eyes);
968 expect(eth).toBe('0x314159265dD8dbb310642f98f50C066173C1259b');
969 return [2 /*return*/];
970 }
971 });
972 }); });
973 it('checks ens multicoin support #4', function () { return __awaiter(void 0, void 0, void 0, function () {
974 var ens, eyes, etc;
975 return __generator(this, function (_a) {
976 switch (_a.label) {
977 case 0:
978 ens = new ens_1.default();
979 eyes = mockAsyncMethods(ens, {
980 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
981 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
982 callMethod: '0x314159265dd8dbb310642f98f50c066173c1259b',
983 });
984 return [4 /*yield*/, ens.address('testthing.eth', 'etc')];
985 case 1:
986 etc = _a.sent();
987 expectSpyToBeCalled(eyes);
988 expect(etc).toBe('0x314159265dD8dbb310642f98f50C066173C1259b');
989 return [2 /*return*/];
990 }
991 });
992 }); });
993 it('checks ens multicoin support #5', function () { return __awaiter(void 0, void 0, void 0, function () {
994 var ens, eyes, rsk;
995 return __generator(this, function (_a) {
996 switch (_a.label) {
997 case 0:
998 ens = new ens_1.default();
999 eyes = mockAsyncMethods(ens, {
1000 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
1001 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
1002 callMethod: '0x314159265dd8dbb310642f98f50c066173c1259b',
1003 });
1004 return [4 /*yield*/, ens.address('testthing.eth', 'rsk')];
1005 case 1:
1006 rsk = _a.sent();
1007 expectSpyToBeCalled(eyes);
1008 expect(rsk).toBe('0x314159265dD8DbB310642F98f50C066173c1259B');
1009 return [2 /*return*/];
1010 }
1011 });
1012 }); });
1013 it('checks ens multicoin support #6', function () { return __awaiter(void 0, void 0, void 0, function () {
1014 var ens, eyes, xrp;
1015 return __generator(this, function (_a) {
1016 switch (_a.label) {
1017 case 0:
1018 ens = new ens_1.default();
1019 eyes = mockAsyncMethods(ens, {
1020 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
1021 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
1022 callMethod: '0x05444b4e9c06f24296074f7bc48f92a97916c6dc5ea9000000000000000000',
1023 });
1024 return [4 /*yield*/, ens.address('testthing.eth', 'xrp')];
1025 case 1:
1026 xrp = _a.sent();
1027 expectSpyToBeCalled(eyes);
1028 expect(xrp).toBe('X7qvLs7gSnNoKvZzNWUT2e8st17QPY64PPe7zriLNuJszeg');
1029 return [2 /*return*/];
1030 }
1031 });
1032 }); });
1033 it('checks ens multicoin support #7', function () { return __awaiter(void 0, void 0, void 0, function () {
1034 var ens, eyes, bch;
1035 return __generator(this, function (_a) {
1036 switch (_a.label) {
1037 case 0:
1038 ens = new ens_1.default();
1039 eyes = mockAsyncMethods(ens, {
1040 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
1041 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
1042 callMethod: '0x76a91476a04053bda0a88bda5177b86a15c3b29f55987388ac',
1043 });
1044 return [4 /*yield*/, ens.address('testthing.eth', 'bch')];
1045 case 1:
1046 bch = _a.sent();
1047 expectSpyToBeCalled(eyes);
1048 expect(bch).toBe('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
1049 return [2 /*return*/];
1050 }
1051 });
1052 }); });
1053 it('checks ens multicoin support #8', function () { return __awaiter(void 0, void 0, void 0, function () {
1054 var ens, eyes, btc;
1055 return __generator(this, function (_a) {
1056 switch (_a.label) {
1057 case 0:
1058 ens = new ens_1.default();
1059 eyes = mockAsyncMethods(ens, {
1060 getOwner: '0x0904Dac3347eA47d208F3Fd67402D039a3b99859',
1061 getResolver: '0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8',
1062 callMethod: '0x5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6',
1063 });
1064 return [4 /*yield*/, ens.address('testthing.eth', 'BTC')];
1065 case 1:
1066 btc = _a.sent();
1067 expectSpyToBeCalled(eyes);
1068 expect(btc).toBe('bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx');
1069 return [2 /*return*/];
1070 }
1071 });
1072 }); });
1073 it('checks UnsupportedCurrency error', function () { return __awaiter(void 0, void 0, void 0, function () {
1074 return __generator(this, function (_a) {
1075 switch (_a.label) {
1076 case 0: return [4 /*yield*/, expectResolutionErrorCode(new _1.default().addressOrThrow('testthing.eth', 'bnb'), _1.ResolutionErrorCode.UnsupportedCurrency)];
1077 case 1:
1078 _a.sent();
1079 return [2 /*return*/];
1080 }
1081 });
1082 }); });
1083 it('checks UnsupportedCurrency error', function () { return __awaiter(void 0, void 0, void 0, function () {
1084 return __generator(this, function (_a) {
1085 switch (_a.label) {
1086 case 0: return [4 /*yield*/, expectResolutionErrorCode(new _1.default().addressOrThrow('testthing.eth', 'UNREALTICKER'), _1.ResolutionErrorCode.UnsupportedCurrency)];
1087 case 1:
1088 _a.sent();
1089 return [2 /*return*/];
1090 }
1091 });
1092 }); });
1093});
1094describe('Namicorn', function () {
1095 it('checks Namicorn#addressOrThrow error #1', function () { return __awaiter(void 0, void 0, void 0, function () {
1096 var namicorn;
1097 return __generator(this, function (_a) {
1098 switch (_a.label) {
1099 case 0:
1100 namicorn = new _1.default();
1101 return [4 /*yield*/, expectResolutionErrorCode(namicorn.addressOrThrow('sdncdoncvdinvcsdncs.zil', 'ZIL'), _1.ResolutionErrorCode.UnregisteredDomain)];
1102 case 1:
1103 _a.sent();
1104 return [2 /*return*/];
1105 }
1106 });
1107 }); });
1108 it('checks Namicorn#addressOrThrow error #2', function () { return __awaiter(void 0, void 0, void 0, function () {
1109 var namicorn;
1110 return __generator(this, function (_a) {
1111 switch (_a.label) {
1112 case 0:
1113 namicorn = new _1.default();
1114 return [4 /*yield*/, expectResolutionErrorCode(namicorn.addressOrThrow('brad.zil', 'INVALID_CURRENCY_SYMBOL'), _1.ResolutionErrorCode.UnspecifiedCurrency)];
1115 case 1:
1116 _a.sent();
1117 return [2 /*return*/];
1118 }
1119 });
1120 }); });
1121 it('resolves non-existing domain zone with throw', function () { return __awaiter(void 0, void 0, void 0, function () {
1122 var namicorn;
1123 return __generator(this, function (_a) {
1124 switch (_a.label) {
1125 case 0:
1126 namicorn = new _1.default({ blockchain: true });
1127 return [4 /*yield*/, expectResolutionErrorCode(namicorn.addressOrThrow('bogdangusiev.qq', 'ZIL'), _1.ResolutionErrorCode.UnsupportedDomain)];
1128 case 1:
1129 _a.sent();
1130 return [2 /*return*/];
1131 }
1132 });
1133 }); });
1134 it('resolves non-existing domain zone via safe address', function () { return __awaiter(void 0, void 0, void 0, function () {
1135 var namicorn, result;
1136 return __generator(this, function (_a) {
1137 switch (_a.label) {
1138 case 0:
1139 namicorn = new _1.default({ blockchain: true });
1140 return [4 /*yield*/, namicorn.address('bogdangusiev.qq', 'ZIL')];
1141 case 1:
1142 result = _a.sent();
1143 expect(result).toEqual(null);
1144 return [2 /*return*/];
1145 }
1146 });
1147 }); });
1148 it('provides empty response constant', function () { return __awaiter(void 0, void 0, void 0, function () {
1149 var response;
1150 return __generator(this, function (_a) {
1151 response = types_1.UnclaimedDomainResponse;
1152 expect(response.addresses).toEqual({});
1153 expect(response.meta.owner).toEqual(null);
1154 return [2 /*return*/];
1155 });
1156 }); });
1157 it('checks the isSupportedDomainInNetwork', function () { return __awaiter(void 0, void 0, void 0, function () {
1158 var namicorn, result;
1159 return __generator(this, function (_a) {
1160 namicorn = new _1.default();
1161 result = namicorn.isSupportedDomainInNetwork('brad.zil');
1162 expect(result).toBe(true);
1163 return [2 /*return*/];
1164 });
1165 }); });
1166 it('checks namehash for unsupported domain', function () { return __awaiter(void 0, void 0, void 0, function () {
1167 var namicorn;
1168 return __generator(this, function (_a) {
1169 switch (_a.label) {
1170 case 0:
1171 namicorn = new _1.default();
1172 return [4 /*yield*/, expectResolutionErrorCode(function () { return namicorn.namehash('something.hello.com'); }, _1.ResolutionErrorCode.UnsupportedDomain)];
1173 case 1:
1174 _a.sent();
1175 return [2 /*return*/];
1176 }
1177 });
1178 }); });
1179 it('checks return of ipfs hash for brad.zil', function () { return __awaiter(void 0, void 0, void 0, function () {
1180 var namicorn, hash;
1181 return __generator(this, function (_a) {
1182 switch (_a.label) {
1183 case 0:
1184 namicorn = new _1.default();
1185 return [4 /*yield*/, namicorn.ipfsHash('brad.zil')];
1186 case 1:
1187 hash = _a.sent();
1188 expect(hash).toBe('QmVaAtQbi3EtsfpKoLzALm6vXphdi2KjMgxEDKeGg6wHuK');
1189 return [2 /*return*/];
1190 }
1191 });
1192 }); });
1193 it('checks return of email for ergergergerg.zil', function () { return __awaiter(void 0, void 0, void 0, function () {
1194 var namicorn, email;
1195 return __generator(this, function (_a) {
1196 switch (_a.label) {
1197 case 0:
1198 namicorn = new _1.default();
1199 return [4 /*yield*/, namicorn.email('ergergergerg.zil')];
1200 case 1:
1201 email = _a.sent();
1202 expect(email).toBe('matt+test@unstoppabledomains.com');
1203 return [2 /*return*/];
1204 }
1205 });
1206 }); });
1207 it('checks error for email on brad.zil', function () { return __awaiter(void 0, void 0, void 0, function () {
1208 var namicorn;
1209 return __generator(this, function (_a) {
1210 switch (_a.label) {
1211 case 0:
1212 namicorn = new _1.default();
1213 return [4 /*yield*/, expectResolutionErrorCode(namicorn.email('brad.zil'), _1.ResolutionErrorCode.RecordNotFound)];
1214 case 1:
1215 _a.sent();
1216 return [2 /*return*/];
1217 }
1218 });
1219 }); });
1220});