{"_id":"@bakissation/satim-testing","_rev":"11-5c67163c68fae0c19b8201acf5dc1cfd","name":"@bakissation/satim-testing","dist-tags":{"latest":"1.2.0","dev":"1.2.0-alpha.1","staging":"1.2.0-beta.1"},"versions":{"1.0.0":{"name":"@bakissation/satim-testing","version":"1.0.0","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.0.0","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"dist":{"shasum":"351c700b7179aaeab38b94c5f4584be3de00e21d","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.0.0.tgz","fileCount":9,"integrity":"sha512-pxH3KvFdmS2cvnT7LyUfANFOenbzx1tcAt3o3UvtzLA1afSWMbmHxkYUHMk73dogSKKviKkuTFR4ox60vo5soA==","signatures":[{"sig":"MEYCIQDMzR+/HuRQak6t6rTW7CeFox3hZ2fuccN7ZyhAeCjoUQIhAN3YEBttQ/hff38wF6xX3kEnr2i473R56/mK8l/MgB4W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111203},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a03458c583299cae9197c492f93d85e6d305bcca","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"10.9.3","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.0.0_1779506385749_0.7220483944463949","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-alpha.1":{"name":"@bakissation/satim-testing","version":"1.0.1-alpha.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.0.1-alpha.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"dist":{"shasum":"ce6178385f1d84af3ddcdde59e85f1c470aaaf88","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.0.1-alpha.1.tgz","fileCount":9,"integrity":"sha512-9v1S8KBeqZVMUBQtL9wlbXnxUv6whDSfkWJoerSyYNoqC2l7Hbn6jDEMbOLAedAFcFEVpboJX0hG/Y7/Gjpxdg==","signatures":[{"sig":"MEYCIQDCcSTrTkwm40T+nNRusiztvPhQUzOQKPRXvraTPWtEYAIhAPY6/GI5eK7Eg7tndjX8s5b6F435/7tSspVLvuizQ6N3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.0.1-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111279},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"8fb470e47421ac37560027bc89526345e9bb64d1","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.0.1-alpha.1_1779506687623_0.3602670084460551","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-beta.1":{"name":"@bakissation/satim-testing","version":"1.0.1-beta.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.0.1-beta.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"dist":{"shasum":"64d6892dbd6882fa26a8505dcaa82e06a5b838b8","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.0.1-beta.1.tgz","fileCount":9,"integrity":"sha512-3jfbnaycMvHIdFWD4mvOBKkSrYXSuyI+TpUQG4vWT0MyFdJkhyAO4N1CAbwy9IK+uD4djlDlWC7pyA/aCpcFQQ==","signatures":[{"sig":"MEUCIA258ZSJwHxXacEvWza7hulbSrQwyqNoNeLP8utlzTrgAiEAuslVFlY2GvkAeyowaqcEhqytwoiuYWMFR3/IdOJJRzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.0.1-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111278},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"d0f8f02d839240d0368a6c2f69a07e009ee1429e","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.0.1-beta.1_1779506750726_0.8337022660675177","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bakissation/satim-testing","version":"1.0.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.0.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"dist":{"shasum":"5f0706039d950a03b512190cabba65e0fd4b8b27","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.0.1.tgz","fileCount":9,"integrity":"sha512-KPexL95DZ9MIN9O/tum/z/cHeg0S8iCE0FlQZfchicXZXjyGFyJsTY4zPFWSgQAint1aDkdUOJY6sVurXvsnFg==","signatures":[{"sig":"MEUCIQCQevhfmf6GwuXdcM38CHAFVx4yG50YzaeNKhxmLfbjvgIgD8VG2gKzWwXUXvesyB7FVxU5E2Tg4Lv6puyut1tCQnM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111271},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"ab2c71d681506c953acc705462cb2b538ccb1685","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.0.1_1779506801162_0.40920899721355464","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-alpha.1":{"name":"@bakissation/satim-testing","version":"1.1.0-alpha.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.1.0-alpha.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"bin":{"satim-mock":"dist/cli.js"},"dist":{"shasum":"0040de13b3a782861b50b7bdcece3dcc9c133622","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.1.0-alpha.1.tgz","fileCount":23,"integrity":"sha512-Ng4jrscXYsxbG3SLxFsw+u+gtEcibKLMVGOWc/4RhOPEnynErCRoKdGIovAKi+8TnPflxpn/yIR3+9FYmy2cDg==","signatures":[{"sig":"MEQCIG18yRfjW4ui0JZ14LTMC10r1qTKGD2ubmFwqhHK9TiRAiAYcC40Sre9At5Lqg1gR0bQ+XWmYlAsFQdZ6IWtHBozwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.1.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":366503},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"gitHead":"f4c6f0c47b7c9c46d3568295cd8235db78cbbaf4","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.1.0-alpha.1_1779545912323_0.9391048758294656","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-alpha.2":{"name":"@bakissation/satim-testing","version":"1.1.0-alpha.2","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.1.0-alpha.2","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"bin":{"satim-mock":"dist/cli.js"},"dist":{"shasum":"ba7efd119de269b86ef9130da2acbb5bda7acabd","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.1.0-alpha.2.tgz","fileCount":23,"integrity":"sha512-ruve7Y9mSYSbFtunfIJ5W+QRLd5Umc56C39lHpLSqF+Lv83kVM9iBpjwVpdMtk7TmXeUQlWmg/x+YQ7kgrhxNg==","signatures":[{"sig":"MEUCIQDBXJ/NDDs5MGaLYnN9oOBeyKijNaOnDR8L1NpDnoi7CAIgMHzlP0xsMr4Pgf2qY/5I0tDUcPC0KK8b9D5l1RU0i2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.1.0-alpha.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":471687},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"gitHead":"3bb4e87c25e4d38a03b1a2a04b67dd9f8f20583e","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.1.0-alpha.2_1779547138759_0.8101614704022619","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.1":{"name":"@bakissation/satim-testing","version":"1.1.0-beta.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.1.0-beta.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"bin":{"satim-mock":"dist/cli.js"},"dist":{"shasum":"4adb9f0fd3dcf0a48c8facde7caeda8b7c385d79","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.1.0-beta.1.tgz","fileCount":23,"integrity":"sha512-K74ByJwBpWg+5ursdg1QfAfmzZimaDD/gH7fLWtepFBUm8TIutOhOW2NRAdYiYJ4uu+RoxN9mcnxPYe1k6aGqQ==","signatures":[{"sig":"MEUCIDhB16w3FvlcarUAclKkYZINtRKEZFf6GJf6s96oEREKAiEA+fCaKRw9j1+kxj/z1ovplNvb2lCOLAubzI2zyAIbEx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.1.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":471686},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"gitHead":"02464cf37e3735b3bc690a08f5124e977bebd8d8","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.1.0-beta.1_1779547229840_0.1916680832930564","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bakissation/satim-testing","version":"1.1.0","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.1.0","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"bin":{"satim-mock":"dist/cli.js"},"dist":{"shasum":"037b50783a20c17acf28b5cf4f64c9a0d574f93e","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.1.0.tgz","fileCount":23,"integrity":"sha512-d4eCqA8IBlJ3O8fVdSdbvoE1V2Sz6XA5mb4YVC5+XmC9iCHuwhvApMsWzzqi4Rs+II2eKJnjZUJfyIClceR5wg==","signatures":[{"sig":"MEUCIADUS8QpSvJ0LfDNfRgGkexnUQVnnM0GqDo67WrZaw0jAiEAoMJ1zBc4HW05suWcodFBbnrFWda6+VNOG1MeNsXNpLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":471679},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"gitHead":"822416b5401749399833de3c1aff037fb1b53598","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.1.0_1779547298905_0.3593729587432837","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-alpha.1":{"name":"@bakissation/satim-testing","version":"1.2.0-alpha.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.2.0-alpha.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"bin":{"satim-mock":"dist/cli.js"},"dist":{"shasum":"05f4951dba05f3f767c76fd40f2264050e115284","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.2.0-alpha.1.tgz","fileCount":23,"integrity":"sha512-GT1likJMfAJKg9NUHcFR+ZPzoo5rKCWQ12Gx6US7XM+rPvWrqj6PgAU+/BQr/KZs2F5xrhA0vMBp2MnO6P8j/A==","signatures":[{"sig":"MEQCIEko/Wje8bxUB4zf3vMTVAc/2yVQPaHp+NAnSr+eScHxAiAKt7KjRUu5kVqngAIeLdl60zGn9/TLY9siIVRiaSLL0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.2.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":495519},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"gitHead":"60a1d499abe1f534254ba2532689fb68b528fddd","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.2.0-alpha.1_1779550276066_0.9927572686451198","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.1":{"name":"@bakissation/satim-testing","version":"1.2.0-beta.1","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/satim-testing@1.2.0-beta.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/satim-testing#readme","bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"bin":{"satim-mock":"dist/cli.js"},"dist":{"shasum":"833c4171b89b711af1b5827e9d3acfb0f5c9bb4f","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.2.0-beta.1.tgz","fileCount":23,"integrity":"sha512-C3c6ujKqv72uaHm13jvhGSz+eauZb0IqI3yzO2SqoT+rq0/XdwSjwhIFjBlUYLzjIScPG/H2tLYOSvnor7ccqA==","signatures":[{"sig":"MEQCIEBFCANcJgRUqVjK5G8QW7UnNdtsd5Yn5XlPUs1BdeyMAiBuflD6P0Q0ks/9T+xiUuujGPUDatGMV8qi4Tk95GiB5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.2.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":495518},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"gitHead":"b766fc8837f6ab9fb25f8bc0d036774da995d315","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"repository":{"url":"git+https://github.com/bakissation/satim-testing.git","type":"git"},"_npmVersion":"11.15.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0","@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0"},"peerDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/satim-testing_1.2.0-beta.1_1779550646136_0.38040183330445454","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bakissation/satim-testing","version":"1.2.0","description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","author":{"name":"Abdelbaki Berkati","url":"@bakissation"},"license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}}},"bin":{"satim-mock":"dist/cli.js"},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"eslint .","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"peerDependencies":{"@bakissation/satim":"^2.0.0","@bakissation/dinar":"^1.1.0"},"devDependencies":{"@bakissation/dinar":"^1.1.0","@bakissation/satim":"^2.0.0","@bakissation/tasdid":"^1.2.0","@eslint/js":"^9.18.0","@types/node":"^20.10.0","eslint":"^9.18.0","semantic-release":"^25.0.3","tsup":"^8.0.1","typescript":"^5.3.3","typescript-eslint":"^8.20.0","vitest":"^1.2.0"},"keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/bakissation/satim-testing.git"},"bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"homepage":"https://github.com/bakissation/satim-testing#readme","gitHead":"22360c6c23775b7272602a3fdcc6b8c6f294ca00","_id":"@bakissation/satim-testing@1.2.0","_nodeVersion":"24.15.0","_npmVersion":"11.15.0","dist":{"integrity":"sha512-9agMOV7Pa1ZTrGBieKxVyWLExUdv2LqGawdAJvw9aGShNNZGDf4BGcoDakM0Ay2/iob0wVNHj/aZYPEmjal8rQ==","shasum":"65b8676e84c5c5b4998fb98e1577e73690a0b91b","tarball":"https://registry.npmjs.org/@bakissation/satim-testing/-/satim-testing-1.2.0.tgz","fileCount":23,"unpackedSize":495511,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fsatim-testing@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCW8cJ2UWit8sFJSa3MScvkTXwz8q8kHjYD8P3zvZzQnAIgBEhp6J+ikNtqXcpog/5lCqrn2FPoi1bNbU15HuawQc4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a920e53a-97ec-45a2-b23a-e30f877ce3be"}},"directories":{},"maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/satim-testing_1.2.0_1779550711586_0.3766904641144644"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-23T03:19:45.571Z","modified":"2026-05-23T15:38:32.261Z","1.0.0":"2026-05-23T03:19:45.886Z","1.0.1-alpha.1":"2026-05-23T03:24:47.758Z","1.0.1-beta.1":"2026-05-23T03:25:50.877Z","1.0.1":"2026-05-23T03:26:41.325Z","1.1.0-alpha.1":"2026-05-23T14:18:32.485Z","1.1.0-alpha.2":"2026-05-23T14:38:58.918Z","1.1.0-beta.1":"2026-05-23T14:40:29.994Z","1.1.0":"2026-05-23T14:41:39.053Z","1.2.0-alpha.1":"2026-05-23T15:31:16.221Z","1.2.0-beta.1":"2026-05-23T15:37:26.296Z","1.2.0":"2026-05-23T15:38:31.968Z"},"bugs":{"url":"https://github.com/bakissation/satim-testing/issues"},"author":{"name":"Abdelbaki Berkati","url":"@bakissation"},"license":"MIT","homepage":"https://github.com/bakissation/satim-testing#readme","keywords":["algeria","satim","cib","edahabia","payment","mock","testing","test-double","fixtures","sandbox","fintech","typescript"],"repository":{"type":"git","url":"git+https://github.com/bakissation/satim-testing.git"},"description":"Deterministic in-memory mock of the SATIM (CIB/Edahabia) gateway for testing — a drop-in SatimClient double with scriptable scenarios and the official certification test cards. Build and CI Algerian payment flows with no SATIM account and no network.","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"readme":"# @bakissation/satim-testing\n\n**A deterministic mock of the SATIM (CIB/Edahabia) gateway** — a drop-in `SatimClient` double with scriptable scenarios, the official certification test cards, and SATIM's certification matrix as a ready-to-walk e2e checklist. **Plus a runnable HTTP simulator with a bottable payment page**, so a browser (Playwright/Cypress) can drive your real app end to end in CI. **No SATIM account, no network.**\n\n[![npm](https://img.shields.io/npm/v/@bakissation/satim-testing?label=npm&color=cb3837)](https://www.npmjs.com/package/@bakissation/satim-testing)\n[![CI](https://github.com/bakissation/satim-testing/actions/workflows/ci.yml/badge.svg)](https://github.com/bakissation/satim-testing/actions/workflows/ci.yml)\n[![license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)\n\n```bash\nnpm i -D @bakissation/satim-testing\n```\n\n> A **test-only** tool — never wire it into production (it fabricates approvals).\n\n## Why\n\nSATIM's `test2.satim.dz` is remote, gated behind certification credentials, and non-deterministic — useless for unit tests/CI. `satim-testing` is a local, deterministic double of the gateway, so payments get green tests like everything else.\n\nIt satisfies the [`@bakissation/satim`](https://github.com/bakissation/satim) `SatimClient` interface, so it works **anywhere a real SATIM client goes** — swap `createSatimClient(config)` for `createMockSatim()` in your tests, whether you call SATIM **directly** or through [`@bakissation/tasdid`](https://github.com/bakissation/tasdid).\n\n### Testing a direct `@bakissation/satim` integration\n\n```ts\nimport { createMockSatim } from '@bakissation/satim-testing';\n\n// production: const satim = createSatimClient(config)\nconst satim = createMockSatim();                 // ← in tests\nconst reg = await satim.register({ orderNumber: 'A1', amount: 5000, returnUrl: '…', udf1: 'A1' });\nconst status = await satim.getOrderStatus(reg.orderId!);\nstatus.isPaid();                                 // → true   (no account, no network)\n```\n\n### Testing a `@bakissation/tasdid` checkout\n\n```ts\nimport { Dinar } from '@bakissation/dinar';\nimport { createMockSatim } from '@bakissation/satim-testing';\nimport { createCheckout, createMemoryStore } from '@bakissation/tasdid';\n\nconst satim = createMockSatim();                 // default: approves\nconst checkout = createCheckout({ satim, store: createMemoryStore() });\n\nconst { paymentId } = await checkout.start({ orderNumber: 'A1', amount: Dinar.fromDinars(5000), returnUrl: '…' });\n(await checkout.reconcile(paymentId)).status;    // → 'paid'   (no browser, no network)\n```\n\n## Steer the outcome\n\n```ts\ncreateMockSatim({ scenario: 'declined' });   // new orders → failed\ncreateMockSatim({ scenario: 'abandoned' });  // buyer never pays → expires after 20 min\n\n// or drive a specific order:\nsatim.scenario('approved');\nsatim.pay(orderId);                          // force paid\nsatim.pay(orderId, { card: testCards.lost });// a cert card decides paid vs declined\nsatim.decline(orderId);\nsatim.reverse(orderId);                      // cancellation (annulation)\nsatim.refundOutOfBand(orderId);              // refund done directly at SATIM\nsatim.advanceTime(21 * 60_000);              // jump past the auto-cancel window\n```\n\n## Certification matrix as your e2e base\n\n`certChecklist` is SATIM's transaction test matrix (the cahier de recette), transcribed from the CIBWEBSATIM validation console — the same cases the SATIM team runs. Walk it as your e2e suite:\n\n```ts\nimport { certChecklist, testCards, createMockSatim } from '@bakissation/satim-testing';\n\nfor (const c of certChecklist) {\n  // valid card → accepted; the 13 decline cards → refused; refund → refunded; cancellation → cancelled\n}\n```\n\n`testCards` are the **official** SATIM certification PANs (CIB), copied verbatim — never invented. Each maps to its `approved`/`declined` outcome.\n\n> Passing the whole checklist locally is the strongest signal an integration will certify — but **real certification still runs on `test2.satim.dz`**, watched by SATIM via the CIBWEBLab console. A mock can't certify you.\n\n## Run a SATIM simulator in CI (browser e2e)\n\nThe same engine also powers an **HTTP server** that speaks the real SATIM REST wire (`register.do` / `acknowledgeTransaction.do` / `refund.do`) and serves a **bottable payment page** at the `formUrl`. Point your real app's SATIM client at it and let Playwright/Cypress drive the page with a **test card** — true end-to-end, no account, no network.\n\n### As a CLI service\n\n```bash\nnpx satim-mock --port 8888\n# mock SATIM listening on http://127.0.0.1:8888\n#   apiBaseUrl : http://127.0.0.1:8888/payment/rest   ← point your app's SATIM client here\n```\n\nSet your app's SATIM base URL to `http://127.0.0.1:8888/payment/rest`. The page mimics SATIM's real two-step flow — **card entry → 3-D Secure OTP → redirect** — and is served in the registered `language` (`fr`/`en`/`ar`, RTL for Arabic). Mock-only selectors: `#pan`, `#expiry`, `#cvv`, `#mock-pay`, then `#otp`, `#mock-otp-confirm` (cancel: `#mock-cancel`).\n\n```ts\n// Playwright\nawait page.getByText('Pay').click();             // your app registers → redirects to the mock card page\nawait page.fill('#pan', testCards.valid.pan);    // a real cert card (declined cards → refused)\nawait page.click('#mock-pay');                   // → 3-D Secure OTP page\nawait page.fill('#otp', '123456');               // correct OTP; a wrong one re-prompts, 3 wrong → declined\nawait page.click('#mock-otp-confirm');           // → 302 back to your returnUrl?orderId=…\n```\n\n> The selectors are **intentionally mock-only** — they don't match SATIM's real page. Automating a live hosted payment page is against payment-industry norms, so a page-driving e2e written here passes against the simulator and **fails against the real gateway by design**. The simulator lets you prove your *integration flow* (register → redirect → OTP → return → confirm) without ever touching the real page.\n\n### Programmatically (in-process)\n\n```ts\nimport { createMockSatimServer } from '@bakissation/satim-testing/server';\nimport { createSatimClient } from '@bakissation/satim';\n\nconst mock = createMockSatimServer();\nawait mock.listen();                                       // ephemeral port\nconst satim = createSatimClient({ /* … */, apiBaseUrl: mock.apiBaseUrl() });\n// register / drive the page / getOrderStatus exactly as in production…\nawait mock.close();\n```\n\nIt's the same `MockSatimCore` engine, so **the full cahier de recette and all 15 cert cards pass over the wire too** — verified in `test/server.test.ts`. (Still a simulator: **real certification runs on `test2.satim.dz`**.)\n\n## License\n\nMIT © Abdelbaki Berkati\n\n## Credits\n\nBuilt and maintained by **Abdelbaki Berkati** — [berkati.xyz](https://berkati.xyz) · [@bakissation](https://github.com/bakissation).\n","readmeFilename":"README.md"}