diff --git a/package-lock.json b/package-lock.json index 1663e32c..43248c9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,6 @@ "@walletconnect/types": "^2.9.2", "decode-uri-component": "^0.2.2", "json5": "^2.2.2", - "soroban-client": "0.3.0", "stellar-sdk": "^11.1.0", "util": "^0.12.4" }, @@ -1983,11 +1982,6 @@ "@babel/types": "^7.3.0" } }, - "node_modules/@types/eventsource": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.8.tgz", - "integrity": "sha512-fJQNt9LijJCZwYvM6O30uLzdpAK9zs52Uc9iUW9M2Zsg0HQM6DLf6QysjC/wuFX+0798B8AppVMvgdO6IftPKQ==" - }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -2046,7 +2040,8 @@ "node_modules/@types/node": { "version": "14.18.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", - "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==", + "dev": true }, "node_modules/@types/prettier": { "version": "2.6.1", @@ -2060,14 +2055,6 @@ "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", "dev": true }, - "node_modules/@types/randombytes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/randombytes/-/randombytes-2.0.0.tgz", - "integrity": "sha512-bz8PhAVlwN72vqefzxa14DKNT8jK/mV66CSjwdVQM/k3Th3EPKfUtdMniwZgMedQTFuywAsfjnZsg+pEnltaMA==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/sass": { "version": "1.43.1", "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", @@ -2109,11 +2096,6 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, - "node_modules/@types/urijs": { - "version": "1.19.19", - "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.19.tgz", - "integrity": "sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg==" - }, "node_modules/@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -3173,14 +3155,6 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, - "node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "dependencies": { - "follow-redirects": "^1.14.7" - } - }, "node_modules/babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -3330,14 +3304,6 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, - "node_modules/bignumber.js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", - "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==", - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -3453,6 +3419,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -3839,14 +3806,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dependencies": { - "buffer": "^5.1.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4367,11 +4326,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "node_modules/esbuild": { "version": "0.14.39", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz", @@ -7294,15 +7248,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/js-xdr": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/js-xdr/-/js-xdr-1.3.0.tgz", - "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==", - "dependencies": { - "lodash": "^4.17.5", - "long": "^2.2.3" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -7816,7 +7761,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -7922,14 +7868,6 @@ "optional": true, "peer": true }, - "node_modules/long": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", - "integrity": "sha1-n6GAux2VAM3CnEFWdmoZleH0Uk8=", - "engines": { - "node": ">=0.6" - } - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -9403,16 +9341,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sodium-native": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", - "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, "node_modules/sonic-boom": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", @@ -9436,39 +9364,6 @@ "sorcery": "bin/index.js" } }, - "node_modules/soroban-client": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/soroban-client/-/soroban-client-0.3.0.tgz", - "integrity": "sha512-BxwQpW/ZpPaIyZ7mq2dBIRPHzOsp6M9/Co64BPbwW6Kt30NUormIiIKzGFCCWInjk4/9C80jFYeoo5WE7zHHwA==", - "dependencies": { - "@types/eventsource": "^1.1.2", - "@types/node": ">= 8", - "@types/randombytes": "^2.0.0", - "@types/urijs": "^1.19.6", - "axios": "0.25.0", - "es6-promise": "^4.2.4", - "lodash": "4.17.21", - "stellar-base": "8.0.1-soroban.6", - "urijs": "^1.19.1" - } - }, - "node_modules/soroban-client/node_modules/stellar-base": { - "version": "8.0.1-soroban.6", - "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.0.1-soroban.6.tgz", - "integrity": "sha512-LQhre31jzZBNXTaiUfkLlEcC2g2TQOrKJEsY1rbsUv9urlvUsTTIGRmvaw2TH8406FOJZolBtizN/VnZqLqnvg==", - "dependencies": { - "base32.js": "^0.1.0", - "bignumber.js": "^4.0.0", - "crc": "^3.5.0", - "js-xdr": "^1.1.3", - "lodash": "^4.17.21", - "sha.js": "^2.3.6", - "tweetnacl": "^1.0.3" - }, - "optionalDependencies": { - "sodium-native": "^3.3.0" - } - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -12373,11 +12268,6 @@ "@babel/types": "^7.3.0" } }, - "@types/eventsource": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.8.tgz", - "integrity": "sha512-fJQNt9LijJCZwYvM6O30uLzdpAK9zs52Uc9iUW9M2Zsg0HQM6DLf6QysjC/wuFX+0798B8AppVMvgdO6IftPKQ==" - }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -12436,7 +12326,8 @@ "@types/node": { "version": "14.18.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", - "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==", + "dev": true }, "@types/prettier": { "version": "2.6.1", @@ -12450,14 +12341,6 @@ "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", "dev": true }, - "@types/randombytes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/randombytes/-/randombytes-2.0.0.tgz", - "integrity": "sha512-bz8PhAVlwN72vqefzxa14DKNT8jK/mV66CSjwdVQM/k3Th3EPKfUtdMniwZgMedQTFuywAsfjnZsg+pEnltaMA==", - "requires": { - "@types/node": "*" - } - }, "@types/sass": { "version": "1.43.1", "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", @@ -12499,11 +12382,6 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, - "@types/urijs": { - "version": "1.19.19", - "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.19.tgz", - "integrity": "sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg==" - }, "@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -13342,14 +13220,6 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, - "axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "requires": { - "follow-redirects": "^1.14.7" - } - }, "babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -13460,11 +13330,6 @@ } } }, - "bignumber.js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", - "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==" - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -13555,6 +13420,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -13829,14 +13695,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "requires": { - "buffer": "^5.1.0" - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -14263,11 +14121,6 @@ "is-symbol": "^1.0.2" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "esbuild": { "version": "0.14.39", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz", @@ -16318,15 +16171,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "js-xdr": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/js-xdr/-/js-xdr-1.3.0.tgz", - "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==", - "requires": { - "lodash": "^4.17.5", - "long": "^2.2.3" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -16711,7 +16555,8 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "lodash.isequal": { "version": "4.5.0", @@ -16795,11 +16640,6 @@ "optional": true, "peer": true }, - "long": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", - "integrity": "sha1-n6GAux2VAM3CnEFWdmoZleH0Uk8=" - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -17914,15 +17754,6 @@ } } }, - "sodium-native": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", - "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, "sonic-boom": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", @@ -17943,39 +17774,6 @@ "sourcemap-codec": "^1.3.0" } }, - "soroban-client": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/soroban-client/-/soroban-client-0.3.0.tgz", - "integrity": "sha512-BxwQpW/ZpPaIyZ7mq2dBIRPHzOsp6M9/Co64BPbwW6Kt30NUormIiIKzGFCCWInjk4/9C80jFYeoo5WE7zHHwA==", - "requires": { - "@types/eventsource": "^1.1.2", - "@types/node": ">= 8", - "@types/randombytes": "^2.0.0", - "@types/urijs": "^1.19.6", - "axios": "0.25.0", - "es6-promise": "^4.2.4", - "lodash": "4.17.21", - "stellar-base": "8.0.1-soroban.6", - "urijs": "^1.19.1" - }, - "dependencies": { - "stellar-base": { - "version": "8.0.1-soroban.6", - "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.0.1-soroban.6.tgz", - "integrity": "sha512-LQhre31jzZBNXTaiUfkLlEcC2g2TQOrKJEsY1rbsUv9urlvUsTTIGRmvaw2TH8406FOJZolBtizN/VnZqLqnvg==", - "requires": { - "base32.js": "^0.1.0", - "bignumber.js": "^4.0.0", - "crc": "^3.5.0", - "js-xdr": "^1.1.3", - "lodash": "^4.17.21", - "sha.js": "^2.3.6", - "sodium-native": "^3.3.0", - "tweetnacl": "^1.0.3" - } - } - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", diff --git a/package.json b/package.json index c2067f15..49db2d56 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,6 @@ "@walletconnect/types": "^2.9.2", "decode-uri-component": "^0.2.2", "json5": "^2.2.2", - "soroban-client": "0.3.0", "stellar-sdk": "^11.1.0", "util": "^0.12.4" } diff --git a/src/lib/wallets/freighter/__test__/freighter.test.ts b/src/lib/wallets/freighter/__test__/freighter.test.ts index 7302e301..76ef2337 100644 --- a/src/lib/wallets/freighter/__test__/freighter.test.ts +++ b/src/lib/wallets/freighter/__test__/freighter.test.ts @@ -1,12 +1,19 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import { expect } from '@jest/globals'; import { signTransaction } from '@stellar/freighter-api'; -import SorobanClient from 'soroban-client'; +import * as StellarSdk from 'stellar-sdk'; import { StellarNetwork } from '../../../stellar/StellarNetwork'; import LocalStorage from '../../../storage/storage'; import Freighter from '../Freighter'; +const signedXdr = + 'AAAAAgAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAGQAATOSAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAAAF9eEAAAAAAAAAAAA='; +const mockTx = { + sign: jest.fn(), + toXDR: jest.fn().mockReturnValue(signedXdr), +}; + jest.mock('../../../../constants', () => ({ STELLAR_NETWORK: 'futurenet', })); @@ -17,9 +24,9 @@ jest.mock('@stellar/freighter-api', () => ({ jest.mock('stellar-sdk', () => { return { - Transaction: { - sign: jest.fn(), - toXDR: jest.fn(), + Transaction: jest.fn().mockImplementation(() => mockTx), + Networks: { + FUTURENET: 'Test SDF Future Network ; October 2022', }, }; }); @@ -34,9 +41,7 @@ describe('Freighter management', () => { freighter = new Freighter(storage); }); it('Should sign a transaction successfully from the Futurenet network', async () => { - const signedXdr = - 'AAAAAgAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAGQAATOSAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAAAF9eEAAAAAAAAAAAA='; - const tx = SorobanClient.TransactionBuilder.fromXDR(signedXdr, SorobanClient.Networks.FUTURENET); + const tx = new StellarSdk.Transaction(signedXdr, StellarSdk.Networks.FUTURENET); await freighter.sign(tx); expect(freighter.freighterNetwork).toEqual(freighterNetwork); diff --git a/src/lib/wallets/privateKey/PrivateKey.ts b/src/lib/wallets/privateKey/PrivateKey.ts index 03034d5f..e8eeb8d0 100644 --- a/src/lib/wallets/privateKey/PrivateKey.ts +++ b/src/lib/wallets/privateKey/PrivateKey.ts @@ -1,11 +1,9 @@ -import SorobanClient from 'soroban-client'; import type { Transaction } from 'stellar-sdk'; import { Keypair } from 'stellar-sdk'; import { PrivateKeyIcon } from '../../../assets'; import type IDecryptableValue from '../../security/IDecryptableValue'; import { decryptValue, encryptValue } from '../../security/securityHelper'; -import { CURRENT_STELLAR_NETWORK, StellarNetwork } from '../../stellar/StellarNetwork'; import AbstractWallet from '../AbstractWallet'; import type IWallet from '../IWallet'; import InvalidPrivateKeyError from './errors/InvalidPrivateKeyError'; @@ -22,35 +20,25 @@ export default class PrivateKey extends AbstractWallet implements IWallet { public override async getPublicKey(privateKey: string): Promise { let publicKey: string; try { - if (CURRENT_STELLAR_NETWORK === StellarNetwork.FUTURENET) { - publicKey = SorobanClient.Keypair.fromSecret(privateKey).publicKey(); - } else { - publicKey = Keypair.fromSecret(privateKey).publicKey(); - } + publicKey = Keypair.fromSecret(privateKey).publicKey(); super.persistWallet(); + await this.storeEncryptedPrivateKey(privateKey); } catch (e) { if (e instanceof InvalidPrivateKeyError) { console.error('Invalid key, please try again'); } + throw e; } publicKey = await this.getDecryptedStoredPrivateKey(); - if (CURRENT_STELLAR_NETWORK === StellarNetwork.FUTURENET) { - return SorobanClient.Keypair.fromSecret(publicKey).publicKey(); - } else { - return Keypair.fromSecret(publicKey).publicKey(); - } + return Keypair.fromSecret(publicKey).publicKey(); } public override async sign(tx: Transaction): Promise { - let keyPair: Keypair; const privateKey = await this.getDecryptedStoredPrivateKey(); - if (CURRENT_STELLAR_NETWORK === StellarNetwork.FUTURENET) { - keyPair = SorobanClient.Keypair.fromSecret(privateKey); - } else { - keyPair = Keypair.fromSecret(privateKey); - } + const keyPair = Keypair.fromSecret(privateKey); + tx.sign(keyPair); return tx.toXDR(); } diff --git a/src/lib/wallets/privateKey/__test__/privateKey.test.ts b/src/lib/wallets/privateKey/__test__/privateKey.test.ts index 2430a6ff..f0b36b79 100644 --- a/src/lib/wallets/privateKey/__test__/privateKey.test.ts +++ b/src/lib/wallets/privateKey/__test__/privateKey.test.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import { expect } from '@jest/globals'; -import SorobanClient from 'soroban-client'; import StellarSdk from 'stellar-sdk'; import { TextDecoder, TextEncoder } from 'util'; @@ -16,21 +15,6 @@ jest.mock('../../../../constants', () => ({ STELLAR_NETWORK: 'futurenet', })); -jest.mock('soroban-client', () => { - return { - Keypair: { - fromSecret: jest.fn(), - }, - Transaction: { - sign: jest.fn(), - toXDR: jest.fn(), - }, - Networks: { - FUTURENET: 'Test SDF Future Network ; October 2022', - }, - }; -}); - const mockTx = { sign: jest.fn(), toXDR: jest.fn(), @@ -38,11 +22,17 @@ const mockTx = { jest.mock('stellar-sdk', () => { return { + Keypair: { + fromSecret: jest.fn(), + }, Transaction: jest.fn().mockImplementation(() => mockTx), + Networks: { + FUTURENET: 'Test SDF Future Network ; October 2022', + }, }; }); -describe('Pivate Key management', () => { +describe('Private Key management', () => { const storage = new LocalStorage(); let wallet: PrivateKey; const privateKey = 'SANEPI74NFPALZ4JOUTRBOUJGVFOFRKRQT2BZN3UR5ULVEN4FJKT7GRF'; @@ -54,26 +44,26 @@ describe('Pivate Key management', () => { wallet = new PrivateKey(storage); }); it('Should show a private key from the Futurenet network', async () => { - SorobanClient.Keypair.fromSecret.mockReturnValue({ + StellarSdk.Keypair.fromSecret.mockReturnValue({ publicKey: jest.fn(() => expectedPublicKey), }); - const publickKey = await wallet.getPublicKey(privateKey); + const publicKey = await wallet.getPublicKey(privateKey); - expect(publickKey).toEqual(expectedPublicKey); + expect(publicKey).toEqual(expectedPublicKey); }); it('Should sign a transaction successfully from the Futurenet network', async () => { jest.spyOn(mockTx, 'sign').mockImplementationOnce(() => signedTransaction); jest.spyOn(mockTx, 'toXDR').mockImplementationOnce(() => signedTransaction); - SorobanClient.Keypair.fromSecret.mockReturnValue(() => expectedPublicKey); + StellarSdk.Keypair.fromSecret.mockReturnValue(() => expectedPublicKey); const signedXdr = 'AAAAAgAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAGQAATOSAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAAAF9eEAAAAAAAAAAAA='; - const tx = new StellarSdk.Transaction(signedXdr, SorobanClient.Networks.FUTURENET); + const tx = new StellarSdk.Transaction(signedXdr, StellarSdk.Networks.FUTURENET); const transaction = await wallet.sign(tx); expect(transaction).toEqual(signedTransaction); expect(mockTx.sign).toHaveBeenCalledTimes(1); - expect(SorobanClient.Keypair.fromSecret).toHaveBeenCalledTimes(1); + expect(StellarSdk.Keypair.fromSecret).toHaveBeenCalledTimes(1); }); }); diff --git a/src/lib/wallets/xBull/__test__/xBull.test.ts b/src/lib/wallets/xBull/__test__/xBull.test.ts index 0a3b016b..1c6418c1 100644 --- a/src/lib/wallets/xBull/__test__/xBull.test.ts +++ b/src/lib/wallets/xBull/__test__/xBull.test.ts @@ -1,18 +1,26 @@ import { expect } from '@jest/globals'; -import SorobanClient from 'soroban-client'; +import * as StellarSdk from 'stellar-sdk'; import { StellarNetwork } from '../../../stellar/StellarNetwork'; import LocalStorage from '../../../storage/storage'; import XBull from '../XBull'; +const signedXdr = + 'AAAAAgAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAGQAATOSAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAAAF9eEAAAAAAAAAAAA='; +const mockTx = { + sign: jest.fn(), + toXDR: jest.fn().mockReturnValue(signedXdr), +}; + jest.mock('../../../../constants', () => ({ STELLAR_NETWORK: 'futurenet', })); jest.mock('stellar-sdk', () => { return { - Transaction: { - toXDR: jest.fn(), + Transaction: jest.fn().mockImplementation(() => mockTx), + Networks: { + FUTURENET: 'Test SDF Future Network ; October 2022', }, }; }); @@ -42,9 +50,7 @@ describe('xBull management', () => { jest.spyOn(mockBridge, 'sign').mockImplementationOnce(() => responseXdr); jest.spyOn(mockBridge, 'closeConnections').mockReturnValue(() => ''); - const signedXdr = - 'AAAAAgAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAGQAATOSAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA2jYMwhev3yM7P+JWOv6kRQZAssek5zytAbbyhJbOjNQAAAAAF9eEAAAAAAAAAAAA='; - const tx = SorobanClient.TransactionBuilder.fromXDR(signedXdr, SorobanClient.Networks.FUTURENET); + const tx = new StellarSdk.Transaction(signedXdr, StellarSdk.Networks.FUTURENET); const result = await xBull.sign(tx);