@algorandfoundation/algokit-utils 9.2.0 → 9.2.1-beta.1
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/_virtual/_rolldown/runtime.js +33 -0
- package/_virtual/_rolldown/runtime.mjs +13 -0
- package/account/account.d.ts +25 -30
- package/account/account.js +151 -146
- package/account/account.js.map +1 -1
- package/account/account.mjs +149 -144
- package/account/account.mjs.map +1 -1
- package/account/get-account-config-from-environment.d.ts +7 -2
- package/account/get-account-config-from-environment.js +19 -21
- package/account/get-account-config-from-environment.js.map +1 -1
- package/account/get-account-config-from-environment.mjs +19 -19
- package/account/get-account-config-from-environment.mjs.map +1 -1
- package/account/get-account.d.ts +14 -12
- package/account/get-account.js +56 -59
- package/account/get-account.js.map +1 -1
- package/account/get-account.mjs +56 -57
- package/account/get-account.mjs.map +1 -1
- package/account/get-dispenser-account.d.ts +9 -5
- package/account/get-dispenser-account.js +20 -18
- package/account/get-dispenser-account.js.map +1 -1
- package/account/get-dispenser-account.mjs +20 -16
- package/account/get-dispenser-account.mjs.map +1 -1
- package/account/mnemonic-account.d.ts +7 -3
- package/account/mnemonic-account.js +17 -17
- package/account/mnemonic-account.js.map +1 -1
- package/account/mnemonic-account.mjs +15 -15
- package/account/mnemonic-account.mjs.map +1 -1
- package/amount.d.ts +40 -35
- package/amount.js +33 -34
- package/amount.js.map +1 -1
- package/amount.mjs +33 -32
- package/amount.mjs.map +1 -1
- package/app-client.d.ts +10 -6
- package/app-client.js +91 -86
- package/app-client.js.map +1 -1
- package/app-client.mjs +91 -84
- package/app-client.mjs.map +1 -1
- package/app-deploy.d.ts +26 -24
- package/app-deploy.js +235 -253
- package/app-deploy.js.map +1 -1
- package/app-deploy.mjs +233 -251
- package/app-deploy.mjs.map +1 -1
- package/app.d.ts +45 -46
- package/app.js +253 -271
- package/app.js.map +1 -1
- package/app.mjs +249 -267
- package/app.mjs.map +1 -1
- package/asset.d.ts +16 -12
- package/asset.js +116 -122
- package/asset.js.map +1 -1
- package/asset.mjs +116 -120
- package/asset.mjs.map +1 -1
- package/config.d.ts +7 -2
- package/config.js +5 -7
- package/config.js.map +1 -1
- package/config.mjs +5 -4
- package/config.mjs.map +1 -1
- package/debugging/debugging.d.ts +5 -1
- package/debugging/debugging.js +11 -11
- package/debugging/debugging.js.map +1 -1
- package/debugging/debugging.mjs +11 -9
- package/debugging/debugging.mjs.map +1 -1
- package/dispenser-client.d.ts +7 -2
- package/dispenser-client.js +23 -24
- package/dispenser-client.js.map +1 -1
- package/dispenser-client.mjs +23 -22
- package/dispenser-client.mjs.map +1 -1
- package/index.d.ts +27 -18
- package/index.js +140 -143
- package/index.mjs +27 -29
- package/indexer-lookup.d.ts +18 -11
- package/indexer-lookup.js +112 -120
- package/indexer-lookup.js.map +1 -1
- package/indexer-lookup.mjs +105 -118
- package/indexer-lookup.mjs.map +1 -1
- package/localnet/get-kmd-wallet-account.d.ts +9 -7
- package/localnet/get-kmd-wallet-account.js +28 -26
- package/localnet/get-kmd-wallet-account.js.map +1 -1
- package/localnet/get-kmd-wallet-account.mjs +28 -24
- package/localnet/get-kmd-wallet-account.mjs.map +1 -1
- package/localnet/get-localnet-dispenser-account.d.ts +7 -5
- package/localnet/get-localnet-dispenser-account.js +17 -15
- package/localnet/get-localnet-dispenser-account.js.map +1 -1
- package/localnet/get-localnet-dispenser-account.mjs +17 -13
- package/localnet/get-localnet-dispenser-account.mjs.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.d.ts +10 -8
- package/localnet/get-or-create-kmd-wallet-account.js +28 -26
- package/localnet/get-or-create-kmd-wallet-account.js.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.mjs +28 -24
- package/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -1
- package/localnet/is-localnet.d.ts +7 -3
- package/localnet/is-localnet.js +9 -10
- package/localnet/is-localnet.js.map +1 -1
- package/localnet/is-localnet.mjs +9 -8
- package/localnet/is-localnet.mjs.map +1 -1
- package/network-client.d.ts +17 -15
- package/network-client.js +115 -116
- package/network-client.js.map +1 -1
- package/network-client.mjs +115 -114
- package/network-client.mjs.map +1 -1
- package/package.json +12 -3
- package/testing/account.d.ts +11 -9
- package/testing/account.js +31 -33
- package/testing/account.js.map +1 -1
- package/testing/account.mjs +29 -31
- package/testing/account.mjs.map +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.d.ts +7 -2
- package/testing/fixtures/algokit-log-capture-fixture.js +36 -41
- package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.mjs +36 -39
- package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
- package/testing/fixtures/algorand-fixture.d.ts +9 -4
- package/testing/fixtures/algorand-fixture.js +67 -62
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +66 -59
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/testing/index.d.ts +7 -5
- package/testing/index.js +13 -18
- package/testing/index.mjs +7 -7
- package/testing/indexer.d.ts +5 -1
- package/testing/indexer.js +28 -37
- package/testing/indexer.js.map +1 -1
- package/testing/indexer.mjs +28 -35
- package/testing/indexer.mjs.map +1 -1
- package/testing/test-logger.d.ts +41 -36
- package/testing/test-logger.js +71 -76
- package/testing/test-logger.js.map +1 -1
- package/testing/test-logger.mjs +71 -74
- package/testing/test-logger.mjs.map +1 -1
- package/testing/transaction-logger.d.ts +30 -27
- package/testing/transaction-logger.js +77 -93
- package/testing/transaction-logger.js.map +1 -1
- package/testing/transaction-logger.mjs +74 -90
- package/testing/transaction-logger.mjs.map +1 -1
- package/transaction/legacy-bridge.js +100 -111
- package/transaction/legacy-bridge.js.map +1 -1
- package/transaction/legacy-bridge.mjs +97 -108
- package/transaction/legacy-bridge.mjs.map +1 -1
- package/transaction/perform-atomic-transaction-composer-simulate.d.ts +7 -5
- package/transaction/perform-atomic-transaction-composer-simulate.js +31 -36
- package/transaction/perform-atomic-transaction-composer-simulate.js.map +1 -1
- package/transaction/perform-atomic-transaction-composer-simulate.mjs +28 -33
- package/transaction/perform-atomic-transaction-composer-simulate.mjs.map +1 -1
- package/transaction/transaction.d.ts +34 -35
- package/transaction/transaction.js +716 -914
- package/transaction/transaction.js.map +1 -1
- package/transaction/transaction.mjs +713 -911
- package/transaction/transaction.mjs.map +1 -1
- package/transfer/transfer-algos.d.ts +9 -5
- package/transfer/transfer-algos.js +26 -27
- package/transfer/transfer-algos.js.map +1 -1
- package/transfer/transfer-algos.mjs +26 -25
- package/transfer/transfer-algos.mjs.map +1 -1
- package/transfer/transfer.d.ts +11 -8
- package/transfer/transfer.js +94 -100
- package/transfer/transfer.js.map +1 -1
- package/transfer/transfer.mjs +94 -98
- package/transfer/transfer.mjs.map +1 -1
- package/types/account-manager.d.ts +432 -429
- package/types/account-manager.js +591 -602
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +587 -599
- package/types/account-manager.mjs.map +1 -1
- package/types/account.d.ts +192 -202
- package/types/account.js +91 -88
- package/types/account.js.map +1 -1
- package/types/account.mjs +88 -86
- package/types/account.mjs.map +1 -1
- package/types/algo-http-client-with-retry.d.ts +15 -10
- package/types/algo-http-client-with-retry.js +70 -92
- package/types/algo-http-client-with-retry.js.map +1 -1
- package/types/algo-http-client-with-retry.mjs +69 -90
- package/types/algo-http-client-with-retry.mjs.map +1 -1
- package/types/algorand-client-transaction-creator.d.ts +778 -771
- package/types/algorand-client-transaction-creator.js +733 -732
- package/types/algorand-client-transaction-creator.js.map +1 -1
- package/types/algorand-client-transaction-creator.mjs +732 -730
- package/types/algorand-client-transaction-creator.mjs.map +1 -1
- package/types/algorand-client-transaction-sender.d.ts +1090 -1360
- package/types/algorand-client-transaction-sender.js +930 -961
- package/types/algorand-client-transaction-sender.js.map +1 -1
- package/types/algorand-client-transaction-sender.mjs +927 -959
- package/types/algorand-client-transaction-sender.mjs.map +1 -1
- package/types/algorand-client.d.ts +239 -236
- package/types/algorand-client.js +322 -320
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +321 -318
- package/types/algorand-client.mjs.map +1 -1
- package/types/amount.d.ts +47 -43
- package/types/amount.js +66 -70
- package/types/amount.js.map +1 -1
- package/types/amount.mjs +63 -68
- package/types/amount.mjs.map +1 -1
- package/types/app-arc56.d.ts +235 -272
- package/types/app-arc56.js +124 -170
- package/types/app-arc56.js.map +1 -1
- package/types/app-arc56.mjs +121 -168
- package/types/app-arc56.mjs.map +1 -1
- package/types/app-client.d.ts +1128 -2009
- package/types/app-client.js +1633 -1791
- package/types/app-client.js.map +1 -1
- package/types/app-client.mjs +1624 -1783
- package/types/app-client.mjs.map +1 -1
- package/types/app-deployer.d.ts +139 -141
- package/types/app-deployer.js +344 -384
- package/types/app-deployer.js.map +1 -1
- package/types/app-deployer.mjs +341 -382
- package/types/app-deployer.mjs.map +1 -1
- package/types/app-factory.d.ts +762 -932
- package/types/app-factory.js +496 -488
- package/types/app-factory.js.map +1 -1
- package/types/app-factory.mjs +491 -484
- package/types/app-factory.mjs.map +1 -1
- package/types/app-manager.d.ts +304 -310
- package/types/app-manager.js +422 -475
- package/types/app-manager.js.map +1 -1
- package/types/app-manager.mjs +419 -473
- package/types/app-manager.mjs.map +1 -1
- package/types/app-spec.d.ts +118 -117
- package/types/app-spec.js +125 -135
- package/types/app-spec.js.map +1 -1
- package/types/app-spec.mjs +121 -132
- package/types/app-spec.mjs.map +1 -1
- package/types/app.d.ts +229 -241
- package/types/app.js +36 -28
- package/types/app.js.map +1 -1
- package/types/app.mjs +33 -26
- package/types/app.mjs.map +1 -1
- package/types/asset-manager.d.ts +204 -199
- package/types/asset-manager.js +165 -174
- package/types/asset-manager.js.map +1 -1
- package/types/asset-manager.mjs +164 -172
- package/types/asset-manager.mjs.map +1 -1
- package/types/asset.d.ts +95 -91
- package/types/asset.js +0 -3
- package/types/asset.mjs +0 -2
- package/types/async-event-emitter.d.ts +18 -13
- package/types/async-event-emitter.js +37 -49
- package/types/async-event-emitter.js.map +1 -1
- package/types/async-event-emitter.mjs +36 -47
- package/types/async-event-emitter.mjs.map +1 -1
- package/types/client-manager.d.ts +453 -451
- package/types/client-manager.js +602 -598
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +597 -594
- package/types/client-manager.mjs.map +1 -1
- package/types/composer.d.ts +1211 -1258
- package/types/composer.js +1436 -1498
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +1430 -1493
- package/types/composer.mjs.map +1 -1
- package/types/config.d.ts +53 -48
- package/types/config.js +78 -77
- package/types/config.js.map +1 -1
- package/types/config.mjs +77 -75
- package/types/config.mjs.map +1 -1
- package/types/debugging.d.ts +25 -23
- package/types/debugging.js +9 -11
- package/types/debugging.js.map +1 -1
- package/types/debugging.mjs +8 -9
- package/types/debugging.mjs.map +1 -1
- package/types/dispenser-client.d.ts +57 -52
- package/types/dispenser-client.js +120 -141
- package/types/dispenser-client.js.map +1 -1
- package/types/dispenser-client.mjs +119 -139
- package/types/dispenser-client.mjs.map +1 -1
- package/types/expand.d.ts +5 -3
- package/types/expand.js +0 -3
- package/types/expand.mjs +0 -2
- package/types/indexer.d.ts +104 -100
- package/types/indexer.js +36 -31
- package/types/indexer.js.map +1 -1
- package/types/indexer.mjs +32 -30
- package/types/indexer.mjs.map +1 -1
- package/types/instance-of.d.ts +5 -3
- package/types/instance-of.js +0 -3
- package/types/instance-of.mjs +0 -2
- package/types/kmd-account-manager.d.ts +75 -70
- package/types/kmd-account-manager.js +150 -184
- package/types/kmd-account-manager.js.map +1 -1
- package/types/kmd-account-manager.mjs +147 -182
- package/types/kmd-account-manager.mjs.map +1 -1
- package/types/lifecycle-events.d.ts +13 -8
- package/types/lifecycle-events.js +10 -7
- package/types/lifecycle-events.js.map +1 -1
- package/types/lifecycle-events.mjs +9 -7
- package/types/lifecycle-events.mjs.map +1 -1
- package/types/logging.d.ts +15 -11
- package/types/logging.js +30 -31
- package/types/logging.js.map +1 -1
- package/types/logging.mjs +29 -29
- package/types/logging.mjs.map +1 -1
- package/types/logic-error.d.ts +33 -29
- package/types/logic-error.js +50 -49
- package/types/logic-error.js.map +1 -1
- package/types/logic-error.mjs +49 -47
- package/types/logic-error.mjs.map +1 -1
- package/types/network-client.d.ts +32 -27
- package/types/network-client.js +10 -9
- package/types/network-client.js.map +1 -1
- package/types/network-client.mjs +9 -7
- package/types/network-client.mjs.map +1 -1
- package/types/testing.d.ts +131 -132
- package/types/testing.js +0 -3
- package/types/testing.mjs +0 -2
- package/types/transaction.d.ts +110 -110
- package/types/transaction.js +0 -3
- package/types/transaction.mjs +0 -2
- package/types/transfer.d.ts +70 -66
- package/types/transfer.js +0 -3
- package/types/transfer.mjs +0 -2
- package/util.js +73 -118
- package/util.js.map +1 -1
- package/util.mjs +73 -116
- package/util.mjs.map +1 -1
- package/account/index.d.ts +0 -5
- package/debugging/index.d.ts +0 -1
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
- package/localnet/index.d.ts +0 -4
- package/testing/_asset.d.ts +0 -3
- package/testing/fixtures/index.d.ts +0 -2
- package/testing/index.js.map +0 -1
- package/testing/index.mjs.map +0 -1
- package/transaction/index.d.ts +0 -2
- package/transaction/legacy-bridge.d.ts +0 -35
- package/transfer/index.d.ts +0 -2
- package/types/asset.js.map +0 -1
- package/types/asset.mjs.map +0 -1
- package/types/expand.js.map +0 -1
- package/types/expand.mjs.map +0 -1
- package/types/instance-of.js.map +0 -1
- package/types/instance-of.mjs.map +0 -1
- package/types/testing.js.map +0 -1
- package/types/testing.mjs.map +0 -1
- package/types/transaction.js.map +0 -1
- package/types/transaction.mjs.map +0 -1
- package/types/transfer.js.map +0 -1
- package/types/transfer.mjs.map +0 -1
- package/util.d.ts +0 -48
|
@@ -1,64 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
1
|
+
const require_config = require("../../config.js");
|
|
2
|
+
const require_client_manager = require("../../types/client-manager.js");
|
|
3
|
+
const require_algorand_client = require("../../types/algorand-client.js");
|
|
4
|
+
const require_amount = require("../../amount.js");
|
|
5
|
+
const require_account = require("../account.js");
|
|
6
|
+
const require_indexer = require("../indexer.js");
|
|
7
|
+
const require_transaction_logger = require("../transaction-logger.js");
|
|
8
|
+
//#region src/testing/fixtures/algorand-fixture.ts
|
|
9
|
+
function algorandFixture(fixtureConfig, config) {
|
|
10
|
+
fixtureConfig = {
|
|
11
|
+
...fixtureConfig,
|
|
12
|
+
...config
|
|
13
|
+
};
|
|
14
|
+
if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) fixtureConfig = {
|
|
15
|
+
...require_client_manager.ClientManager.getConfigFromEnvironmentOrLocalNet(),
|
|
16
|
+
...fixtureConfig
|
|
17
|
+
};
|
|
18
|
+
const algod = fixtureConfig.algod ?? require_client_manager.ClientManager.getAlgodClient(fixtureConfig.algodConfig);
|
|
19
|
+
const indexer = fixtureConfig.indexer ?? require_client_manager.ClientManager.getIndexerClient(fixtureConfig.indexerConfig);
|
|
20
|
+
const kmd = fixtureConfig.kmd ?? require_client_manager.ClientManager.getKmdClient(fixtureConfig.kmdConfig);
|
|
21
|
+
let context;
|
|
22
|
+
let algorand;
|
|
23
|
+
const newScope = async () => {
|
|
24
|
+
require_config.Config.configure({ debug: true });
|
|
25
|
+
const transactionLogger = new require_transaction_logger.TransactionLogger();
|
|
26
|
+
const transactionLoggerAlgod = transactionLogger.capture(algod);
|
|
27
|
+
algorand = require_algorand_client.AlgorandClient.fromClients({
|
|
28
|
+
algod: transactionLoggerAlgod,
|
|
29
|
+
indexer,
|
|
30
|
+
kmd
|
|
31
|
+
}).setSuggestedParamsCacheTimeout(0);
|
|
32
|
+
const testAccount = await require_account.getTestAccount({
|
|
33
|
+
initialFunds: fixtureConfig?.testAccountFunding ?? require_amount.algos(10),
|
|
34
|
+
suppressLog: true
|
|
35
|
+
}, algorand);
|
|
36
|
+
algorand.setSignerFromAccount(testAccount);
|
|
37
|
+
if (await algorand.client.isLocalNet()) algorand.setDefaultValidityWindow(1e3);
|
|
38
|
+
context = {
|
|
39
|
+
algorand,
|
|
40
|
+
algod: transactionLoggerAlgod,
|
|
41
|
+
indexer,
|
|
42
|
+
kmd,
|
|
43
|
+
testAccount,
|
|
44
|
+
generateAccount: async (params) => {
|
|
45
|
+
const account = await require_account.getTestAccount(params, algorand);
|
|
46
|
+
algorand.setSignerFromAccount(account);
|
|
47
|
+
return account;
|
|
48
|
+
},
|
|
49
|
+
transactionLogger,
|
|
50
|
+
waitForIndexer: () => transactionLogger.waitForIndexer(indexer),
|
|
51
|
+
waitForIndexerTransaction: (transactionId) => require_indexer.runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(transactionId).do())
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
get context() {
|
|
56
|
+
if (!context) throw new Error("Context not initialised; make sure to call fixture.newScope() before accessing context.");
|
|
57
|
+
return context;
|
|
58
|
+
},
|
|
59
|
+
get algorand() {
|
|
60
|
+
return algorand;
|
|
61
|
+
},
|
|
62
|
+
beforeEach: newScope,
|
|
63
|
+
newScope
|
|
64
|
+
};
|
|
61
65
|
}
|
|
62
|
-
|
|
66
|
+
//#endregion
|
|
63
67
|
exports.algorandFixture = algorandFixture;
|
|
64
|
-
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=algorand-fixture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorand-fixture.js","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":["import { algos, Config } from '../../'\nimport { AlgorandClient } from '../../types/algorand-client'\nimport { ClientManager } from '../../types/client-manager'\nimport { AlgoConfig } from '../../types/network-client'\nimport { AlgorandFixture, AlgorandFixtureConfig, AlgorandTestAutomationContext, GetTestAccountParams } from '../../types/testing'\nimport { getTestAccount } from '../account'\nimport { runWhenIndexerCaughtUp } from '../indexer'\nimport { TransactionLogger } from '../transaction-logger'\n\n/**\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd (or their respective config) if you want to test against\n * an explicitly defined network.\n *\n * @example No config (per-test isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example No config (test suite isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeAll(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example With config\n * ```typescript\n * const fixture = algorandFixture({\n * algod: new Algodv2('localhost', 12345, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),\n * // ...\n * })\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @param fixtureConfig The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig): AlgorandFixture\n\n/**\n * @deprecated Config can be passed in directly to fixture config now.\n *\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd if you want to test against an explicitly defined network.\n *\n * @param fixtureConfig The fixture configuration\n * @param config The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig: AlgorandFixtureConfig | undefined, config: AlgoConfig): AlgorandFixture\n\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig, config?: AlgoConfig): AlgorandFixture {\n fixtureConfig = { ...fixtureConfig, ...config }\n if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) {\n fixtureConfig = { ...ClientManager.getConfigFromEnvironmentOrLocalNet(), ...fixtureConfig }\n }\n\n const algod = fixtureConfig.algod ?? ClientManager.getAlgodClient(fixtureConfig.algodConfig!)\n const indexer = fixtureConfig.indexer ?? ClientManager.getIndexerClient(fixtureConfig.indexerConfig!)\n const kmd = fixtureConfig.kmd ?? ClientManager.getKmdClient(fixtureConfig.kmdConfig!)\n let context: AlgorandTestAutomationContext\n let algorand: AlgorandClient\n\n const newScope = async () => {\n Config.configure({ debug: true })\n const transactionLogger = new TransactionLogger()\n const transactionLoggerAlgod = transactionLogger.capture(algod)\n\n algorand = AlgorandClient.fromClients({ algod: transactionLoggerAlgod, indexer, kmd }).setSuggestedParamsCacheTimeout(0)\n\n const testAccount = await getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? algos(10), suppressLog: true }, algorand)\n algorand.setSignerFromAccount(testAccount)\n\n // If running against LocalNet we are likely in dev mode and we need to set a much higher validity window\n // otherwise we are more likely to get invalid transactions.\n if (await algorand.client.isLocalNet()) {\n algorand.setDefaultValidityWindow(1000)\n }\n context = {\n algorand,\n algod: transactionLoggerAlgod,\n indexer: indexer,\n kmd: kmd,\n testAccount,\n generateAccount: async (params: GetTestAccountParams) => {\n const account = await getTestAccount(params, algorand)\n algorand.setSignerFromAccount(account)\n return account\n },\n transactionLogger: transactionLogger,\n waitForIndexer: () => transactionLogger.waitForIndexer(indexer),\n waitForIndexerTransaction: (transactionId: string) => runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(transactionId).do()),\n }\n }\n\n return {\n get context() {\n if (!context) throw new Error('Context not initialised; make sure to call fixture.newScope() before accessing context.')\n return context\n },\n get algorand() {\n return algorand\n },\n beforeEach: newScope,\n newScope,\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"algorand-fixture.js","names":["ClientManager","TransactionLogger","AlgorandClient","getTestAccount","algos","runWhenIndexerCaughtUp"],"sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":["import { algos, Config } from '../../'\nimport { AlgorandClient } from '../../types/algorand-client'\nimport { ClientManager } from '../../types/client-manager'\nimport { AlgoConfig } from '../../types/network-client'\nimport { AlgorandFixture, AlgorandFixtureConfig, AlgorandTestAutomationContext, GetTestAccountParams } from '../../types/testing'\nimport { getTestAccount } from '../account'\nimport { runWhenIndexerCaughtUp } from '../indexer'\nimport { TransactionLogger } from '../transaction-logger'\n\n/**\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd (or their respective config) if you want to test against\n * an explicitly defined network.\n *\n * @example No config (per-test isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example No config (test suite isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeAll(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example With config\n * ```typescript\n * const fixture = algorandFixture({\n * algod: new Algodv2('localhost', 12345, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),\n * // ...\n * })\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @param fixtureConfig The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig): AlgorandFixture\n\n/**\n * @deprecated Config can be passed in directly to fixture config now.\n *\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd if you want to test against an explicitly defined network.\n *\n * @param fixtureConfig The fixture configuration\n * @param config The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig: AlgorandFixtureConfig | undefined, config: AlgoConfig): AlgorandFixture\n\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig, config?: AlgoConfig): AlgorandFixture {\n fixtureConfig = { ...fixtureConfig, ...config }\n if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) {\n fixtureConfig = { ...ClientManager.getConfigFromEnvironmentOrLocalNet(), ...fixtureConfig }\n }\n\n const algod = fixtureConfig.algod ?? ClientManager.getAlgodClient(fixtureConfig.algodConfig!)\n const indexer = fixtureConfig.indexer ?? ClientManager.getIndexerClient(fixtureConfig.indexerConfig!)\n const kmd = fixtureConfig.kmd ?? ClientManager.getKmdClient(fixtureConfig.kmdConfig!)\n let context: AlgorandTestAutomationContext\n let algorand: AlgorandClient\n\n const newScope = async () => {\n Config.configure({ debug: true })\n const transactionLogger = new TransactionLogger()\n const transactionLoggerAlgod = transactionLogger.capture(algod)\n\n algorand = AlgorandClient.fromClients({ algod: transactionLoggerAlgod, indexer, kmd }).setSuggestedParamsCacheTimeout(0)\n\n const testAccount = await getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? algos(10), suppressLog: true }, algorand)\n algorand.setSignerFromAccount(testAccount)\n\n // If running against LocalNet we are likely in dev mode and we need to set a much higher validity window\n // otherwise we are more likely to get invalid transactions.\n if (await algorand.client.isLocalNet()) {\n algorand.setDefaultValidityWindow(1000)\n }\n context = {\n algorand,\n algod: transactionLoggerAlgod,\n indexer: indexer,\n kmd: kmd,\n testAccount,\n generateAccount: async (params: GetTestAccountParams) => {\n const account = await getTestAccount(params, algorand)\n algorand.setSignerFromAccount(account)\n return account\n },\n transactionLogger: transactionLogger,\n waitForIndexer: () => transactionLogger.waitForIndexer(indexer),\n waitForIndexerTransaction: (transactionId: string) => runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(transactionId).do()),\n }\n }\n\n return {\n get context() {\n if (!context) throw new Error('Context not initialised; make sure to call fixture.newScope() before accessing context.')\n return context\n },\n get algorand() {\n return algorand\n },\n beforeEach: newScope,\n newScope,\n }\n}\n"],"mappings":";;;;;;;;AA4EA,SAAgB,gBAAgB,eAAuC,QAAsC;CAC3G,gBAAgB;EAAE,GAAG;EAAe,GAAG;CAAO;CAC9C,IAAI,CAAC,cAAc,SAAS,CAAC,cAAc,WAAW,CAAC,cAAc,KACnE,gBAAgB;EAAE,GAAGA,uBAAAA,cAAc,mCAAmC;EAAG,GAAG;CAAc;CAG5F,MAAM,QAAQ,cAAc,SAASA,uBAAAA,cAAc,eAAe,cAAc,WAAY;CAC5F,MAAM,UAAU,cAAc,WAAWA,uBAAAA,cAAc,iBAAiB,cAAc,aAAc;CACpG,MAAM,MAAM,cAAc,OAAOA,uBAAAA,cAAc,aAAa,cAAc,SAAU;CACpF,IAAI;CACJ,IAAI;CAEJ,MAAM,WAAW,YAAY;EAC3B,eAAA,OAAO,UAAU,EAAE,OAAO,KAAK,CAAC;EAChC,MAAM,oBAAoB,IAAIC,2BAAAA,kBAAkB;EAChD,MAAM,yBAAyB,kBAAkB,QAAQ,KAAK;EAE9D,WAAWC,wBAAAA,eAAe,YAAY;GAAE,OAAO;GAAwB;GAAS;EAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC;EAEvH,MAAM,cAAc,MAAMC,gBAAAA,eAAe;GAAE,cAAc,eAAe,sBAAsBC,eAAAA,MAAM,EAAE;GAAG,aAAa;EAAK,GAAG,QAAQ;EACtI,SAAS,qBAAqB,WAAW;EAIzC,IAAI,MAAM,SAAS,OAAO,WAAW,GACnC,SAAS,yBAAyB,GAAI;EAExC,UAAU;GACR;GACA,OAAO;GACE;GACJ;GACL;GACA,iBAAiB,OAAO,WAAiC;IACvD,MAAM,UAAU,MAAMD,gBAAAA,eAAe,QAAQ,QAAQ;IACrD,SAAS,qBAAqB,OAAO;IACrC,OAAO;GACT;GACmB;GACnB,sBAAsB,kBAAkB,eAAe,OAAO;GAC9D,4BAA4B,kBAA0BE,gBAAAA,6BAA6B,QAAQ,sBAAsB,aAAa,CAAC,CAAC,GAAG,CAAC;EACtI;CACF;CAEA,OAAO;EACL,IAAI,UAAU;GACZ,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,yFAAyF;GACvH,OAAO;EACT;EACA,IAAI,WAAW;GACb,OAAO;EACT;EACA,YAAY;EACZ;CACF;AACF"}
|
|
@@ -1,62 +1,69 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ClientManager } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
1
|
+
import { Config } from "../../config.mjs";
|
|
2
|
+
import { ClientManager } from "../../types/client-manager.mjs";
|
|
3
|
+
import { AlgorandClient } from "../../types/algorand-client.mjs";
|
|
4
|
+
import { algos } from "../../amount.mjs";
|
|
5
|
+
import { getTestAccount } from "../account.mjs";
|
|
6
|
+
import { runWhenIndexerCaughtUp } from "../indexer.mjs";
|
|
7
|
+
import { TransactionLogger } from "../transaction-logger.mjs";
|
|
8
|
+
//#region src/testing/fixtures/algorand-fixture.ts
|
|
9
9
|
function algorandFixture(fixtureConfig, config) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
10
|
+
fixtureConfig = {
|
|
11
|
+
...fixtureConfig,
|
|
12
|
+
...config
|
|
13
|
+
};
|
|
14
|
+
if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) fixtureConfig = {
|
|
15
|
+
...ClientManager.getConfigFromEnvironmentOrLocalNet(),
|
|
16
|
+
...fixtureConfig
|
|
17
|
+
};
|
|
18
|
+
const algod = fixtureConfig.algod ?? ClientManager.getAlgodClient(fixtureConfig.algodConfig);
|
|
19
|
+
const indexer = fixtureConfig.indexer ?? ClientManager.getIndexerClient(fixtureConfig.indexerConfig);
|
|
20
|
+
const kmd = fixtureConfig.kmd ?? ClientManager.getKmdClient(fixtureConfig.kmdConfig);
|
|
21
|
+
let context;
|
|
22
|
+
let algorand;
|
|
23
|
+
const newScope = async () => {
|
|
24
|
+
Config.configure({ debug: true });
|
|
25
|
+
const transactionLogger = new TransactionLogger();
|
|
26
|
+
const transactionLoggerAlgod = transactionLogger.capture(algod);
|
|
27
|
+
algorand = AlgorandClient.fromClients({
|
|
28
|
+
algod: transactionLoggerAlgod,
|
|
29
|
+
indexer,
|
|
30
|
+
kmd
|
|
31
|
+
}).setSuggestedParamsCacheTimeout(0);
|
|
32
|
+
const testAccount = await getTestAccount({
|
|
33
|
+
initialFunds: fixtureConfig?.testAccountFunding ?? algos(10),
|
|
34
|
+
suppressLog: true
|
|
35
|
+
}, algorand);
|
|
36
|
+
algorand.setSignerFromAccount(testAccount);
|
|
37
|
+
if (await algorand.client.isLocalNet()) algorand.setDefaultValidityWindow(1e3);
|
|
38
|
+
context = {
|
|
39
|
+
algorand,
|
|
40
|
+
algod: transactionLoggerAlgod,
|
|
41
|
+
indexer,
|
|
42
|
+
kmd,
|
|
43
|
+
testAccount,
|
|
44
|
+
generateAccount: async (params) => {
|
|
45
|
+
const account = await getTestAccount(params, algorand);
|
|
46
|
+
algorand.setSignerFromAccount(account);
|
|
47
|
+
return account;
|
|
48
|
+
},
|
|
49
|
+
transactionLogger,
|
|
50
|
+
waitForIndexer: () => transactionLogger.waitForIndexer(indexer),
|
|
51
|
+
waitForIndexerTransaction: (transactionId) => runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(transactionId).do())
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
get context() {
|
|
56
|
+
if (!context) throw new Error("Context not initialised; make sure to call fixture.newScope() before accessing context.");
|
|
57
|
+
return context;
|
|
58
|
+
},
|
|
59
|
+
get algorand() {
|
|
60
|
+
return algorand;
|
|
61
|
+
},
|
|
62
|
+
beforeEach: newScope,
|
|
63
|
+
newScope
|
|
64
|
+
};
|
|
59
65
|
}
|
|
60
|
-
|
|
66
|
+
//#endregion
|
|
61
67
|
export { algorandFixture };
|
|
62
|
-
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=algorand-fixture.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorand-fixture.mjs","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":["import { algos, Config } from '../../'\nimport { AlgorandClient } from '../../types/algorand-client'\nimport { ClientManager } from '../../types/client-manager'\nimport { AlgoConfig } from '../../types/network-client'\nimport { AlgorandFixture, AlgorandFixtureConfig, AlgorandTestAutomationContext, GetTestAccountParams } from '../../types/testing'\nimport { getTestAccount } from '../account'\nimport { runWhenIndexerCaughtUp } from '../indexer'\nimport { TransactionLogger } from '../transaction-logger'\n\n/**\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd (or their respective config) if you want to test against\n * an explicitly defined network.\n *\n * @example No config (per-test isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example No config (test suite isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeAll(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example With config\n * ```typescript\n * const fixture = algorandFixture({\n * algod: new Algodv2('localhost', 12345, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),\n * // ...\n * })\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @param fixtureConfig The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig): AlgorandFixture\n\n/**\n * @deprecated Config can be passed in directly to fixture config now.\n *\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd if you want to test against an explicitly defined network.\n *\n * @param fixtureConfig The fixture configuration\n * @param config The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig: AlgorandFixtureConfig | undefined, config: AlgoConfig): AlgorandFixture\n\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig, config?: AlgoConfig): AlgorandFixture {\n fixtureConfig = { ...fixtureConfig, ...config }\n if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) {\n fixtureConfig = { ...ClientManager.getConfigFromEnvironmentOrLocalNet(), ...fixtureConfig }\n }\n\n const algod = fixtureConfig.algod ?? ClientManager.getAlgodClient(fixtureConfig.algodConfig!)\n const indexer = fixtureConfig.indexer ?? ClientManager.getIndexerClient(fixtureConfig.indexerConfig!)\n const kmd = fixtureConfig.kmd ?? ClientManager.getKmdClient(fixtureConfig.kmdConfig!)\n let context: AlgorandTestAutomationContext\n let algorand: AlgorandClient\n\n const newScope = async () => {\n Config.configure({ debug: true })\n const transactionLogger = new TransactionLogger()\n const transactionLoggerAlgod = transactionLogger.capture(algod)\n\n algorand = AlgorandClient.fromClients({ algod: transactionLoggerAlgod, indexer, kmd }).setSuggestedParamsCacheTimeout(0)\n\n const testAccount = await getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? algos(10), suppressLog: true }, algorand)\n algorand.setSignerFromAccount(testAccount)\n\n // If running against LocalNet we are likely in dev mode and we need to set a much higher validity window\n // otherwise we are more likely to get invalid transactions.\n if (await algorand.client.isLocalNet()) {\n algorand.setDefaultValidityWindow(1000)\n }\n context = {\n algorand,\n algod: transactionLoggerAlgod,\n indexer: indexer,\n kmd: kmd,\n testAccount,\n generateAccount: async (params: GetTestAccountParams) => {\n const account = await getTestAccount(params, algorand)\n algorand.setSignerFromAccount(account)\n return account\n },\n transactionLogger: transactionLogger,\n waitForIndexer: () => transactionLogger.waitForIndexer(indexer),\n waitForIndexerTransaction: (transactionId: string) => runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(transactionId).do()),\n }\n }\n\n return {\n get context() {\n if (!context) throw new Error('Context not initialised; make sure to call fixture.newScope() before accessing context.')\n return context\n },\n get algorand() {\n return algorand\n },\n beforeEach: newScope,\n newScope,\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"algorand-fixture.mjs","names":[],"sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":["import { algos, Config } from '../../'\nimport { AlgorandClient } from '../../types/algorand-client'\nimport { ClientManager } from '../../types/client-manager'\nimport { AlgoConfig } from '../../types/network-client'\nimport { AlgorandFixture, AlgorandFixtureConfig, AlgorandTestAutomationContext, GetTestAccountParams } from '../../types/testing'\nimport { getTestAccount } from '../account'\nimport { runWhenIndexerCaughtUp } from '../indexer'\nimport { TransactionLogger } from '../transaction-logger'\n\n/**\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd (or their respective config) if you want to test against\n * an explicitly defined network.\n *\n * @example No config (per-test isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example No config (test suite isolation)\n * ```typescript\n * const fixture = algorandFixture()\n *\n * beforeAll(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @example With config\n * ```typescript\n * const fixture = algorandFixture({\n * algod: new Algodv2('localhost', 12345, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),\n * // ...\n * })\n *\n * beforeEach(fixture.newScope)\n *\n * test('My test', async () => {\n * const {algod, indexer, testAccount, ...} = fixture.context\n * // test things...\n * })\n * ```\n *\n * @param fixtureConfig The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig): AlgorandFixture\n\n/**\n * @deprecated Config can be passed in directly to fixture config now.\n *\n * Creates a test fixture for automated testing against Algorand.\n * By default it tests against an environment variable specified client\n * if the standard environment variables are specified, otherwise against\n * a default LocalNet instance, but you can pass in an algod, indexer\n * and/or kmd if you want to test against an explicitly defined network.\n *\n * @param fixtureConfig The fixture configuration\n * @param config The fixture configuration\n * @returns The fixture\n */\nexport function algorandFixture(fixtureConfig: AlgorandFixtureConfig | undefined, config: AlgoConfig): AlgorandFixture\n\nexport function algorandFixture(fixtureConfig?: AlgorandFixtureConfig, config?: AlgoConfig): AlgorandFixture {\n fixtureConfig = { ...fixtureConfig, ...config }\n if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) {\n fixtureConfig = { ...ClientManager.getConfigFromEnvironmentOrLocalNet(), ...fixtureConfig }\n }\n\n const algod = fixtureConfig.algod ?? ClientManager.getAlgodClient(fixtureConfig.algodConfig!)\n const indexer = fixtureConfig.indexer ?? ClientManager.getIndexerClient(fixtureConfig.indexerConfig!)\n const kmd = fixtureConfig.kmd ?? ClientManager.getKmdClient(fixtureConfig.kmdConfig!)\n let context: AlgorandTestAutomationContext\n let algorand: AlgorandClient\n\n const newScope = async () => {\n Config.configure({ debug: true })\n const transactionLogger = new TransactionLogger()\n const transactionLoggerAlgod = transactionLogger.capture(algod)\n\n algorand = AlgorandClient.fromClients({ algod: transactionLoggerAlgod, indexer, kmd }).setSuggestedParamsCacheTimeout(0)\n\n const testAccount = await getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? algos(10), suppressLog: true }, algorand)\n algorand.setSignerFromAccount(testAccount)\n\n // If running against LocalNet we are likely in dev mode and we need to set a much higher validity window\n // otherwise we are more likely to get invalid transactions.\n if (await algorand.client.isLocalNet()) {\n algorand.setDefaultValidityWindow(1000)\n }\n context = {\n algorand,\n algod: transactionLoggerAlgod,\n indexer: indexer,\n kmd: kmd,\n testAccount,\n generateAccount: async (params: GetTestAccountParams) => {\n const account = await getTestAccount(params, algorand)\n algorand.setSignerFromAccount(account)\n return account\n },\n transactionLogger: transactionLogger,\n waitForIndexer: () => transactionLogger.waitForIndexer(indexer),\n waitForIndexerTransaction: (transactionId: string) => runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(transactionId).do()),\n }\n }\n\n return {\n get context() {\n if (!context) throw new Error('Context not initialised; make sure to call fixture.newScope() before accessing context.')\n return context\n },\n get algorand() {\n return algorand\n },\n beforeEach: newScope,\n newScope,\n }\n}\n"],"mappings":";;;;;;;;AA4EA,SAAgB,gBAAgB,eAAuC,QAAsC;CAC3G,gBAAgB;EAAE,GAAG;EAAe,GAAG;CAAO;CAC9C,IAAI,CAAC,cAAc,SAAS,CAAC,cAAc,WAAW,CAAC,cAAc,KACnE,gBAAgB;EAAE,GAAG,cAAc,mCAAmC;EAAG,GAAG;CAAc;CAG5F,MAAM,QAAQ,cAAc,SAAS,cAAc,eAAe,cAAc,WAAY;CAC5F,MAAM,UAAU,cAAc,WAAW,cAAc,iBAAiB,cAAc,aAAc;CACpG,MAAM,MAAM,cAAc,OAAO,cAAc,aAAa,cAAc,SAAU;CACpF,IAAI;CACJ,IAAI;CAEJ,MAAM,WAAW,YAAY;EAC3B,OAAO,UAAU,EAAE,OAAO,KAAK,CAAC;EAChC,MAAM,oBAAoB,IAAI,kBAAkB;EAChD,MAAM,yBAAyB,kBAAkB,QAAQ,KAAK;EAE9D,WAAW,eAAe,YAAY;GAAE,OAAO;GAAwB;GAAS;EAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC;EAEvH,MAAM,cAAc,MAAM,eAAe;GAAE,cAAc,eAAe,sBAAsB,MAAM,EAAE;GAAG,aAAa;EAAK,GAAG,QAAQ;EACtI,SAAS,qBAAqB,WAAW;EAIzC,IAAI,MAAM,SAAS,OAAO,WAAW,GACnC,SAAS,yBAAyB,GAAI;EAExC,UAAU;GACR;GACA,OAAO;GACE;GACJ;GACL;GACA,iBAAiB,OAAO,WAAiC;IACvD,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;IACrD,SAAS,qBAAqB,OAAO;IACrC,OAAO;GACT;GACmB;GACnB,sBAAsB,kBAAkB,eAAe,OAAO;GAC9D,4BAA4B,kBAA0B,6BAA6B,QAAQ,sBAAsB,aAAa,CAAC,CAAC,GAAG,CAAC;EACtI;CACF;CAEA,OAAO;EACL,IAAI,UAAU;GACZ,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,yFAAyF;GACvH,OAAO;EACT;EACA,IAAI,WAAW;GACb,OAAO;EACT;EACA,YAAY;EACZ;CACF;AACF"}
|
package/testing/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { TestLogger } from "./test-logger.js";
|
|
2
|
+
import { getTestAccount } from "./account.js";
|
|
3
|
+
import { algoKitLogCaptureFixture } from "./fixtures/algokit-log-capture-fixture.js";
|
|
4
|
+
import { algorandFixture } from "./fixtures/algorand-fixture.js";
|
|
5
|
+
import { runWhenIndexerCaughtUp } from "./indexer.js";
|
|
6
|
+
import { TransactionLogger } from "./transaction-logger.js";
|
|
7
|
+
export { TestLogger, TransactionLogger, algoKitLogCaptureFixture, algorandFixture, getTestAccount, runWhenIndexerCaughtUp };
|
package/testing/index.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.getTestAccount =
|
|
13
|
-
exports.runWhenIndexerCaughtUp =
|
|
14
|
-
exports.TestLogger = testLogger.TestLogger;
|
|
15
|
-
exports.TransactionLogger = transactionLogger.TransactionLogger;
|
|
16
|
-
exports.algoKitLogCaptureFixture = algokitLogCaptureFixture.algoKitLogCaptureFixture;
|
|
17
|
-
exports.algorandFixture = algorandFixture.algorandFixture;
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_account = require("./account.js");
|
|
3
|
+
const require_test_logger = require("./test-logger.js");
|
|
4
|
+
const require_algokit_log_capture_fixture = require("./fixtures/algokit-log-capture-fixture.js");
|
|
5
|
+
const require_indexer = require("./indexer.js");
|
|
6
|
+
const require_transaction_logger = require("./transaction-logger.js");
|
|
7
|
+
const require_algorand_fixture = require("./fixtures/algorand-fixture.js");
|
|
8
|
+
exports.TestLogger = require_test_logger.TestLogger;
|
|
9
|
+
exports.TransactionLogger = require_transaction_logger.TransactionLogger;
|
|
10
|
+
exports.algoKitLogCaptureFixture = require_algokit_log_capture_fixture.algoKitLogCaptureFixture;
|
|
11
|
+
exports.algorandFixture = require_algorand_fixture.algorandFixture;
|
|
12
|
+
exports.getTestAccount = require_account.getTestAccount;
|
|
13
|
+
exports.runWhenIndexerCaughtUp = require_indexer.runWhenIndexerCaughtUp;
|
package/testing/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { getTestAccount } from "./account.mjs";
|
|
2
|
+
import { TestLogger } from "./test-logger.mjs";
|
|
3
|
+
import { algoKitLogCaptureFixture } from "./fixtures/algokit-log-capture-fixture.mjs";
|
|
4
|
+
import { runWhenIndexerCaughtUp } from "./indexer.mjs";
|
|
5
|
+
import { TransactionLogger } from "./transaction-logger.mjs";
|
|
6
|
+
import { algorandFixture } from "./fixtures/algorand-fixture.mjs";
|
|
7
|
+
export { TestLogger, TransactionLogger, algoKitLogCaptureFixture, algorandFixture, getTestAccount, runWhenIndexerCaughtUp };
|
package/testing/indexer.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region src/testing/indexer.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Runs the given indexer call until a 404 error is no longer returned.
|
|
3
4
|
* Tried every 200ms up to 100 times.
|
|
@@ -9,4 +10,7 @@
|
|
|
9
10
|
* @param run The code to run
|
|
10
11
|
* @returns The result (as a promise), or throws if the indexer didn't catch up in time
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
declare function runWhenIndexerCaughtUp<T>(run: () => Promise<T>): Promise<T>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { runWhenIndexerCaughtUp };
|
|
16
|
+
//# sourceMappingURL=indexer.d.ts.map
|
package/testing/indexer.js
CHANGED
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/testing/indexer.ts
|
|
3
2
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
* Runs the given indexer call until a 404 error is no longer returned.
|
|
4
|
+
* Tried every 200ms up to 100 times.
|
|
5
|
+
* Very rudimentary implementation designed for automated testing.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do())
|
|
9
|
+
* ```
|
|
10
|
+
* @param run The code to run
|
|
11
|
+
* @returns The result (as a promise), or throws if the indexer didn't catch up in time
|
|
12
|
+
*/
|
|
14
13
|
async function runWhenIndexerCaughtUp(run) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
throw e;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
14
|
+
let result = null;
|
|
15
|
+
let ok = false;
|
|
16
|
+
let tries = 0;
|
|
17
|
+
while (!ok) try {
|
|
18
|
+
result = await run();
|
|
19
|
+
ok = true;
|
|
20
|
+
} catch (e) {
|
|
21
|
+
if (e?.status === 404) {
|
|
22
|
+
tries++;
|
|
23
|
+
if (tries > 100) throw e;
|
|
24
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
25
|
+
} else throw e;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
38
28
|
}
|
|
39
|
-
|
|
29
|
+
//#endregion
|
|
40
30
|
exports.runWhenIndexerCaughtUp = runWhenIndexerCaughtUp;
|
|
41
|
-
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=indexer.js.map
|
package/testing/indexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.js","sources":["../../src/testing/indexer.ts"],"sourcesContent":["/**\n * Runs the given indexer call until a 404 error is no longer returned.\n * Tried every 200ms up to 100 times.\n * Very rudimentary implementation designed for automated testing.\n * @example\n * ```typescript\n * const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do())\n * ```\n * @param run The code to run\n * @returns The result (as a promise), or throws if the indexer didn't catch up in time\n */\nexport async function runWhenIndexerCaughtUp<T>(run: () => Promise<T>): Promise<T> {\n let result: T | null = null\n let ok = false\n let tries = 0\n while (!ok) {\n try {\n result = await run()\n ok = true\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e?.status === 404) {\n tries++\n if (tries > 100) {\n throw e\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 200))\n } else {\n throw e\n }\n }\n }\n\n return result as T\n}\n"],"
|
|
1
|
+
{"version":3,"file":"indexer.js","names":[],"sources":["../../src/testing/indexer.ts"],"sourcesContent":["/**\n * Runs the given indexer call until a 404 error is no longer returned.\n * Tried every 200ms up to 100 times.\n * Very rudimentary implementation designed for automated testing.\n * @example\n * ```typescript\n * const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do())\n * ```\n * @param run The code to run\n * @returns The result (as a promise), or throws if the indexer didn't catch up in time\n */\nexport async function runWhenIndexerCaughtUp<T>(run: () => Promise<T>): Promise<T> {\n let result: T | null = null\n let ok = false\n let tries = 0\n while (!ok) {\n try {\n result = await run()\n ok = true\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e?.status === 404) {\n tries++\n if (tries > 100) {\n throw e\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 200))\n } else {\n throw e\n }\n }\n }\n\n return result as T\n}\n"],"mappings":";;;;;;;;;;;;AAWA,eAAsB,uBAA0B,KAAmC;CACjF,IAAI,SAAmB;CACvB,IAAI,KAAK;CACT,IAAI,QAAQ;CACZ,OAAO,CAAC,IACN,IAAI;EACF,SAAS,MAAM,IAAI;EACnB,KAAK;CAEP,SAAS,GAAQ;EACf,IAAI,GAAG,WAAW,KAAK;GACrB;GACA,IAAI,QAAQ,KACV,MAAM;GAER,MAAM,IAAI,SAAe,YAAY,WAAW,SAAS,GAAG,CAAC;EAC/D,OACE,MAAM;CAEV;CAGF,OAAO;AACT"}
|
package/testing/indexer.mjs
CHANGED
|
@@ -1,39 +1,32 @@
|
|
|
1
|
+
//#region src/testing/indexer.ts
|
|
1
2
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
* Runs the given indexer call until a 404 error is no longer returned.
|
|
4
|
+
* Tried every 200ms up to 100 times.
|
|
5
|
+
* Very rudimentary implementation designed for automated testing.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do())
|
|
9
|
+
* ```
|
|
10
|
+
* @param run The code to run
|
|
11
|
+
* @returns The result (as a promise), or throws if the indexer didn't catch up in time
|
|
12
|
+
*/
|
|
12
13
|
async function runWhenIndexerCaughtUp(run) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
throw e;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
14
|
+
let result = null;
|
|
15
|
+
let ok = false;
|
|
16
|
+
let tries = 0;
|
|
17
|
+
while (!ok) try {
|
|
18
|
+
result = await run();
|
|
19
|
+
ok = true;
|
|
20
|
+
} catch (e) {
|
|
21
|
+
if (e?.status === 404) {
|
|
22
|
+
tries++;
|
|
23
|
+
if (tries > 100) throw e;
|
|
24
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
25
|
+
} else throw e;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
36
28
|
}
|
|
37
|
-
|
|
29
|
+
//#endregion
|
|
38
30
|
export { runWhenIndexerCaughtUp };
|
|
39
|
-
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=indexer.mjs.map
|
package/testing/indexer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.mjs","sources":["../../src/testing/indexer.ts"],"sourcesContent":["/**\n * Runs the given indexer call until a 404 error is no longer returned.\n * Tried every 200ms up to 100 times.\n * Very rudimentary implementation designed for automated testing.\n * @example\n * ```typescript\n * const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do())\n * ```\n * @param run The code to run\n * @returns The result (as a promise), or throws if the indexer didn't catch up in time\n */\nexport async function runWhenIndexerCaughtUp<T>(run: () => Promise<T>): Promise<T> {\n let result: T | null = null\n let ok = false\n let tries = 0\n while (!ok) {\n try {\n result = await run()\n ok = true\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e?.status === 404) {\n tries++\n if (tries > 100) {\n throw e\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 200))\n } else {\n throw e\n }\n }\n }\n\n return result as T\n}\n"],"
|
|
1
|
+
{"version":3,"file":"indexer.mjs","names":[],"sources":["../../src/testing/indexer.ts"],"sourcesContent":["/**\n * Runs the given indexer call until a 404 error is no longer returned.\n * Tried every 200ms up to 100 times.\n * Very rudimentary implementation designed for automated testing.\n * @example\n * ```typescript\n * const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do())\n * ```\n * @param run The code to run\n * @returns The result (as a promise), or throws if the indexer didn't catch up in time\n */\nexport async function runWhenIndexerCaughtUp<T>(run: () => Promise<T>): Promise<T> {\n let result: T | null = null\n let ok = false\n let tries = 0\n while (!ok) {\n try {\n result = await run()\n ok = true\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e?.status === 404) {\n tries++\n if (tries > 100) {\n throw e\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 200))\n } else {\n throw e\n }\n }\n }\n\n return result as T\n}\n"],"mappings":";;;;;;;;;;;;AAWA,eAAsB,uBAA0B,KAAmC;CACjF,IAAI,SAAmB;CACvB,IAAI,KAAK;CACT,IAAI,QAAQ;CACZ,OAAO,CAAC,IACN,IAAI;EACF,SAAS,MAAM,IAAI;EACnB,KAAK;CAEP,SAAS,GAAQ;EACf,IAAI,GAAG,WAAW,KAAK;GACrB;GACA,IAAI,QAAQ,KACV,MAAM;GAER,MAAM,IAAI,SAAe,YAAY,WAAW,SAAS,GAAG,CAAC;EAC/D,OACE,MAAM;CAEV;CAGF,OAAO;AACT"}
|