mockjutsu 1.0.0__tar.gz
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.
- mockjutsu-1.0.0/LICENSE +38 -0
- mockjutsu-1.0.0/PKG-INFO +386 -0
- mockjutsu-1.0.0/README.md +331 -0
- mockjutsu-1.0.0/pyproject.toml +98 -0
- mockjutsu-1.0.0/setup.cfg +4 -0
- mockjutsu-1.0.0/setup.py +4 -0
- mockjutsu-1.0.0/src/mockjutsu/__init__.py +1 -0
- mockjutsu-1.0.0/src/mockjutsu/api/__init__.py +0 -0
- mockjutsu-1.0.0/src/mockjutsu/api/main.py +225 -0
- mockjutsu-1.0.0/src/mockjutsu/cli.py +927 -0
- mockjutsu-1.0.0/src/mockjutsu/core.py +600 -0
- mockjutsu-1.0.0/src/mockjutsu/data/__init__.py +1 -0
- mockjutsu-1.0.0/src/mockjutsu/data/bip39_en.py +2050 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/__init__.py +1 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/ai_vector.py +62 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/automotive.py +188 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/aviation.py +88 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/bank_statement.py +221 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/banking.py +341 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/barcode.py +163 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/cardphysics.py +300 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/commerce.py +240 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/communication.py +175 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/compliance.py +112 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/corporate.py +106 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/crypto.py +276 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/crypto_fuzz.py +233 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/ecommerce.py +181 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/edi.py +168 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/event_sourcing.py +215 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/fido2.py +197 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/financial.py +421 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/financial_markets.py +565 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/gamedev.py +155 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/hardware.py +126 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/health.py +353 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/identity.py +733 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/intl_ids.py +871 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/iot.py +546 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/location.py +100 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/meta.py +475 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/mrz.py +270 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/name_data.py +862 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/nmea.py +159 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/ohlcv.py +193 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/oidc.py +210 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/payments.py +425 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/prometheus.py +255 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/reverse_regex.py +180 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/security.py +238 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/social.py +123 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/telecom.py +202 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/telemetry.py +167 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/tle.py +216 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/ubl.py +267 -0
- mockjutsu-1.0.0/src/mockjutsu/generators/wallet.py +228 -0
- mockjutsu-1.0.0/src/mockjutsu/masker.py +613 -0
- mockjutsu-1.0.0/src/mockjutsu/regulations.py +1982 -0
- mockjutsu-1.0.0/src/mockjutsu.egg-info/PKG-INFO +386 -0
- mockjutsu-1.0.0/src/mockjutsu.egg-info/SOURCES.txt +104 -0
- mockjutsu-1.0.0/src/mockjutsu.egg-info/dependency_links.txt +1 -0
- mockjutsu-1.0.0/src/mockjutsu.egg-info/entry_points.txt +2 -0
- mockjutsu-1.0.0/src/mockjutsu.egg-info/requires.txt +32 -0
- mockjutsu-1.0.0/src/mockjutsu.egg-info/top_level.txt +1 -0
- mockjutsu-1.0.0/tests/test_ai_vector.py +157 -0
- mockjutsu-1.0.0/tests/test_api.py +395 -0
- mockjutsu-1.0.0/tests/test_automotive.py +343 -0
- mockjutsu-1.0.0/tests/test_aviation.py +163 -0
- mockjutsu-1.0.0/tests/test_bank_statement.py +206 -0
- mockjutsu-1.0.0/tests/test_bip39.py +199 -0
- mockjutsu-1.0.0/tests/test_cardphysics.py +490 -0
- mockjutsu-1.0.0/tests/test_cli.py +2764 -0
- mockjutsu-1.0.0/tests/test_cli_industrial.py +46 -0
- mockjutsu-1.0.0/tests/test_cli_output.py +67 -0
- mockjutsu-1.0.0/tests/test_cross_field_consistency.py +246 -0
- mockjutsu-1.0.0/tests/test_crypto_fuzz.py +167 -0
- mockjutsu-1.0.0/tests/test_edi.py +179 -0
- mockjutsu-1.0.0/tests/test_event_sourcing.py +187 -0
- mockjutsu-1.0.0/tests/test_external_validators.py +1638 -0
- mockjutsu-1.0.0/tests/test_fido2.py +176 -0
- mockjutsu-1.0.0/tests/test_fix_protocol.py +274 -0
- mockjutsu-1.0.0/tests/test_gamedev.py +257 -0
- mockjutsu-1.0.0/tests/test_generators.py +4153 -0
- mockjutsu-1.0.0/tests/test_hardware.py +39 -0
- mockjutsu-1.0.0/tests/test_hl7_fhir_dicom.py +347 -0
- mockjutsu-1.0.0/tests/test_intl_ids.py +386 -0
- mockjutsu-1.0.0/tests/test_iot_wireless.py +143 -0
- mockjutsu-1.0.0/tests/test_known_vectors.py +989 -0
- mockjutsu-1.0.0/tests/test_locale_coverage.py +258 -0
- mockjutsu-1.0.0/tests/test_mask.py +510 -0
- mockjutsu-1.0.0/tests/test_mrz.py +297 -0
- mockjutsu-1.0.0/tests/test_nmea.py +349 -0
- mockjutsu-1.0.0/tests/test_ohlcv.py +232 -0
- mockjutsu-1.0.0/tests/test_oidc.py +207 -0
- mockjutsu-1.0.0/tests/test_payments.py +284 -0
- mockjutsu-1.0.0/tests/test_performance.py +34 -0
- mockjutsu-1.0.0/tests/test_prometheus.py +339 -0
- mockjutsu-1.0.0/tests/test_psd2.py +285 -0
- mockjutsu-1.0.0/tests/test_reverse_regex.py +122 -0
- mockjutsu-1.0.0/tests/test_security.py +150 -0
- mockjutsu-1.0.0/tests/test_sync.py +166 -0
- mockjutsu-1.0.0/tests/test_tax_b2b.py +124 -0
- mockjutsu-1.0.0/tests/test_telemetry.py +211 -0
- mockjutsu-1.0.0/tests/test_tle.py +253 -0
- mockjutsu-1.0.0/tests/test_ubl.py +304 -0
- mockjutsu-1.0.0/tests/test_wallet.py +179 -0
mockjutsu-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Altan Sezer Ayan - A.S.A
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
DISCLAIMER β TESTING PURPOSES ONLY
|
|
26
|
+
|
|
27
|
+
All data generated by this software is algorithmically synthesized and entirely
|
|
28
|
+
fictitious. It is designed exclusively for software testing, QA automation, and
|
|
29
|
+
load testing workflows.
|
|
30
|
+
|
|
31
|
+
Generated values β including but not limited to identity numbers, IBANs, card
|
|
32
|
+
numbers, passport numbers, and financial identifiers β must never be used for
|
|
33
|
+
fraud, identity theft, financial crime, impersonation, or any other unlawful
|
|
34
|
+
activity.
|
|
35
|
+
|
|
36
|
+
The authors and copyright holders expressly disclaim any liability arising from
|
|
37
|
+
misuse of this software. Use of this software constitutes acceptance of these
|
|
38
|
+
terms.
|
mockjutsu-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mockjutsu
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Algorithmic mock data engine β 390+ types, 6 locales, real checksums. TCKN, IBAN, Luhn, VIN, NHS, SWIFT, crypto, MRZ, JMeter plugin and more.
|
|
5
|
+
Author-email: Altan Sezer Ayan <altansezerayan@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/altansayan/mock-jutsu-api
|
|
8
|
+
Project-URL: Repository, https://github.com/altansayan/mock-jutsu-api
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/altansayan/mock-jutsu-api/issues
|
|
10
|
+
Keywords: mock,fake,data,testing,fintech,faker,tckn,iban,luhn,vin,nhs,rfid,nfc,epc,ndef,apdu,ir,nec,pronto,rc5,locale
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Topic :: Software Development :: Testing
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Operating System :: OS Independent
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: click>=8.0
|
|
26
|
+
Requires-Dist: pyfiglet>=0.8
|
|
27
|
+
Requires-Dist: rich>=13.0
|
|
28
|
+
Provides-Extra: server
|
|
29
|
+
Requires-Dist: fastapi>=0.100; extra == "server"
|
|
30
|
+
Requires-Dist: granian>=1.0; extra == "server"
|
|
31
|
+
Requires-Dist: httpx>=0.24; extra == "server"
|
|
32
|
+
Provides-Extra: test
|
|
33
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
|
34
|
+
Requires-Dist: pytest-cov>=4.0; extra == "test"
|
|
35
|
+
Requires-Dist: playwright>=1.30; extra == "test"
|
|
36
|
+
Requires-Dist: pytest-playwright>=0.4; extra == "test"
|
|
37
|
+
Provides-Extra: validation
|
|
38
|
+
Requires-Dist: python-stdnum>=1.20; extra == "validation"
|
|
39
|
+
Requires-Dist: schwifty>=2023.0; extra == "validation"
|
|
40
|
+
Requires-Dist: bip-utils>=2.9; extra == "validation"
|
|
41
|
+
Requires-Dist: mrz>=0.6; extra == "validation"
|
|
42
|
+
Requires-Dist: lxml>=5.0; extra == "validation"
|
|
43
|
+
Requires-Dist: PyJWT>=2.8; extra == "validation"
|
|
44
|
+
Requires-Dist: cryptography>=42.0; extra == "validation"
|
|
45
|
+
Requires-Dist: mt940>=0.8; extra == "validation"
|
|
46
|
+
Requires-Dist: hl7>=0.4; extra == "validation"
|
|
47
|
+
Requires-Dist: fhir.resources>=7.0; extra == "validation"
|
|
48
|
+
Requires-Dist: simplefix>=1.0; extra == "validation"
|
|
49
|
+
Requires-Dist: netaddr>=1.0; extra == "validation"
|
|
50
|
+
Requires-Dist: icd10-cm>=0.0.5; extra == "validation"
|
|
51
|
+
Requires-Dist: cbor2>=5.0; extra == "validation"
|
|
52
|
+
Requires-Dist: fido2>=1.1; extra == "validation"
|
|
53
|
+
Requires-Dist: phonenumbers>=8.13; extra == "validation"
|
|
54
|
+
Dynamic: license-file
|
|
55
|
+
|
|
56
|
+
<div align="center">
|
|
57
|
+
|
|
58
|
+
<!-- A placeholder for a future logo or GIF -->
|
|
59
|
+
<!-- <img src="https://raw.githubusercontent.com/altansayan/mock-jutsu-api/main/assets/mock-jutsu-banner.png" alt="mock-jutsu banner" width="100%"> -->
|
|
60
|
+
|
|
61
|
+
# π₯· Mock Jutsu
|
|
62
|
+
|
|
63
|
+
**Stop mocking with random strings. Start generating cryptographically valid test data.**
|
|
64
|
+
|
|
65
|
+
[](./tests)
|
|
66
|
+
[](https://python.org)
|
|
67
|
+
[](https://altansayan.github.io/mock-jutsu-api/)
|
|
68
|
+
[](#-6-locales-100-real-algorithms)
|
|
69
|
+
[](#-features-that-will-blow-your-mind)
|
|
70
|
+
[](./LICENSE)
|
|
71
|
+
[](https://hub.docker.com/r/altansezerayan/mock-jutsu)
|
|
72
|
+
[](https://github.com/altansayan/mock-jutsu-jmeter/releases/tag/v1.0.0)
|
|
73
|
+
[](https://github.com/altansayan/mock-jutsu-api/tree/main/.postman/collections)
|
|
74
|
+
|
|
75
|
+
> **DISCLAIMER β FOR TESTING PURPOSES ONLY**
|
|
76
|
+
> All data generated by this library is **algorithmically synthesized and entirely fictitious**.
|
|
77
|
+
> Designed exclusively for software testing, QA automation, and load testing.
|
|
78
|
+
> Generated values (identity numbers, IBANs, card numbers, passport numbers, etc.) must **never** be used for fraud, identity theft, financial crime, or any other illegal activity.
|
|
79
|
+
> The authors accept no liability for misuse. By using this software you agree to these terms.
|
|
80
|
+
|
|
81
|
+
*Traditional Mockers give you a random 16-digit string and call it a credit card number.<br>**Mock Jutsu runs Luhn. Every. Single. Time.***
|
|
82
|
+
|
|
83
|
+
[**Installation**](#%EF%B8%8F-installation) β’ [**Why Mock Jutsu?**](#-why-not-faker) β’ [**Usage Guide**](#-usage) β’ [**390 Types**](#236-supported-data-types)
|
|
84
|
+
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## π The Ultimate Algorithmic Mock Data Engine
|
|
90
|
+
|
|
91
|
+
QA engineers, Data Scientists, and Fintech developers are tired of test data failing at the validation layer. **Mock Jutsu** is built differently. It treats every identifier as a strict technical specification. If an algorithm defines a checksum, `Mock Jutsu` computes it. **No shortcuts.**
|
|
92
|
+
|
|
93
|
+
### π₯ Features That Will Blow Your Mind
|
|
94
|
+
- **Zero External Dependencies**: The core data engine uses pure Python standard library for maximum speed, security, and zero bloat.
|
|
95
|
+
- **5955 Automated Tests**: We don't guess. We verify. Every single format and locale is rigorously tested against real-world algorithmic specifications.
|
|
96
|
+
- **Multi-Interface**: Use it as a rich Python SDK, a blazing-fast CLI, or a FastAPI REST endpoint.
|
|
97
|
+
- **Export Anywhere**: Directly export structured records as JSON, CSV, or SQL `INSERT` statements with thousands of rows in milliseconds.
|
|
98
|
+
- **Context-Aware Profiles**: Generate a person, and their email, phone, national ID, and IBAN will inherently match their locale and name.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## π€ Why Mock Jutsu?
|
|
103
|
+
|
|
104
|
+
| Capability | `Mock Jutsu` π₯· | Traditional Mockers π€‘ |
|
|
105
|
+
|:---|:---:|:---:|
|
|
106
|
+
| **Card Numbers (Luhn Valid)** | β
9 Networks Validated | β Random digits |
|
|
107
|
+
| **IBANs (MOD-97 Valid)** | β
Country-specific | β Format-only |
|
|
108
|
+
| **National IDs** | β
Real algorithms (6 countries) | β οΈ Partial / Random |
|
|
109
|
+
| **Telecom (IMEI, ICCID, IMSI)**| β
3GPP / ITU-T Valid | β None |
|
|
110
|
+
| **Securities (ISIN, LEI, SEDOL)**| β
Checksum Validated | β None |
|
|
111
|
+
| **Crypto (BTC, ETH addresses)** | β
Base58Check / Keccak-256 | β None |
|
|
112
|
+
| **Payment QRs (EMVCo/SEPA)** | β
CRC-16 Checksum / BCD Format | β None |
|
|
113
|
+
| **Barcodes (EAN, ISBN, GS1)** | β
GS1 v24.0 Valid | β None |
|
|
114
|
+
| **Tracking (USPS/UPS/FedEx)** | β
Pub.97 Luhn / Mod-11 | β None |
|
|
115
|
+
| **Banking Routing Codes** | β
Valid ABA/Sort/BIC | β οΈ Format-only |
|
|
116
|
+
| **RFID & NFC Data** | β
EPC SGTIN-96, NDEF URI/Text | β None |
|
|
117
|
+
| **Context-Aware Profiles** | β
Linked Name β Email β Phone | β οΈ Disconnected randoms |
|
|
118
|
+
| **SQL/CSV Direct Export** | β
Native Support | β Manual generation |
|
|
119
|
+
| **Schema/Template Generation**| β
`jutsu.template()` for complex dictionaries | β Manual object mapping |
|
|
120
|
+
| **Built-in CLI Tool** | β
Out-of-the-box (`mockjutsu generate`) | β Requires custom scripts |
|
|
121
|
+
| **Built-in REST API** | β
1 command (`mockjutsu start-api`) | β Requires custom wrapper |
|
|
122
|
+
| **Reverse Regex Generation** | β
Pattern β valid string (stdlib only) | β None |
|
|
123
|
+
| **External Dependencies** | β
**Zero** (Pure Python) | β Relies on external files |
|
|
124
|
+
| **Regulation-Aware Masking** | β
PCI DSS Β· GDPR Β· KVKK Β· HIPAA Β· GLBA Β· UK GDPR Β· LGPD Β· PDPA Β· PIPL Β· PSD2 Β· BSA Β· FATF | β None |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## βοΈ Installation
|
|
129
|
+
|
|
130
|
+
### Python Package
|
|
131
|
+
|
|
132
|
+
Requires **Python 3.9+**.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Standard Installation
|
|
136
|
+
pip install mockjutsu
|
|
137
|
+
|
|
138
|
+
# For Developers (Editable Mode)
|
|
139
|
+
git clone https://github.com/altansayan/mock-jutsu-api.git
|
|
140
|
+
cd mock-jutsu-api
|
|
141
|
+
pip install -e .
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### REST API β Docker (Recommended)
|
|
145
|
+
|
|
146
|
+
Run the full REST API locally with a single command. No Python required.
|
|
147
|
+
|
|
148
|
+
[](https://hub.docker.com/r/altansezerayan/mock-jutsu)
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Pull and run (port 8000)
|
|
152
|
+
docker run -p 8000:8000 altansezerayan/mock-jutsu:latest
|
|
153
|
+
|
|
154
|
+
# With custom worker count
|
|
155
|
+
docker run -p 8000:8000 -e GRANIAN_WORKERS=8 altansezerayan/mock-jutsu:latest
|
|
156
|
+
|
|
157
|
+
# Run in background
|
|
158
|
+
docker run -d -p 8000:8000 --name mock-jutsu altansezerayan/mock-jutsu:latest
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Once running:
|
|
162
|
+
- **Swagger UI:** http://localhost:8000/docs
|
|
163
|
+
- **API:** http://localhost:8000/generate/{type}
|
|
164
|
+
|
|
165
|
+
### π REST API β Built-in CLI (Local, Optional)
|
|
166
|
+
|
|
167
|
+
If you have the Python package installed, you can also spin up the API directly via CLI β no Docker needed.
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
$ mockjutsu start-api --port 8000
|
|
171
|
+
```
|
|
172
|
+
```http
|
|
173
|
+
GET http://localhost:8000/generate/cardnum?network=visa
|
|
174
|
+
GET http://localhost:8000/profile?locale=DE&count=3
|
|
175
|
+
|
|
176
|
+
# Interactive Swagger UI automatically available at http://localhost:8000/docs
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### π§ JMeter Plugin
|
|
180
|
+
|
|
181
|
+
Use Mock Jutsu types directly inside JMeter test plans as native custom functions β no scripting, no CSV, no subprocess required.
|
|
182
|
+
|
|
183
|
+
[](https://github.com/altansayan/mock-jutsu-jmeter/releases/tag/v1.0.0)
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
${__mockjutsu_identity(tckn|TR)} β 46396909916
|
|
187
|
+
${__mockjutsu_financial(iban|DE)} β DE89370400440532013000
|
|
188
|
+
${__mockjutsu_financial(cardnum:visa|TR|mask)} β 4155 56** **** 3399
|
|
189
|
+
${__mockjutsu_contact(email|US)} β john.doe@example.com
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
β **[mock-jutsu-jmeter on GitHub](https://github.com/altansayan/mock-jutsu-jmeter)** Β· [Download JAR v1.0.0](https://github.com/altansayan/mock-jutsu-jmeter/releases/tag/v1.0.0)
|
|
193
|
+
|
|
194
|
+
### π¬ Postman Collection
|
|
195
|
+
|
|
196
|
+
390 ready-to-run requests organized by category. Import and hit Send.
|
|
197
|
+
|
|
198
|
+
[](https://github.com/altansayan/mock-jutsu-api/tree/main/.postman/collections)
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Collection is bundled in this repo β import directly in Postman:
|
|
202
|
+
# .postman/collections/mock-jutsu.postman_collection.json
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
β **[View Collection](https://github.com/altansayan/mock-jutsu-api/tree/main/.postman/collections)**
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## π» Usage
|
|
210
|
+
|
|
211
|
+
Whether you are writing automated tests, working in the terminal, or spinning up a mock API, `Mock Jutsu` is ready.
|
|
212
|
+
|
|
213
|
+
### π 1. Python SDK
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from mockjutsu.core import jutsu
|
|
217
|
+
|
|
218
|
+
# 1. Complete, internally-consistent profiles
|
|
219
|
+
person = jutsu.profile(locale='DE')
|
|
220
|
+
print(person['nationalid']) # -> "86094599602" (Steuer-ID: ISO 7064 MOD 11,10 β
)
|
|
221
|
+
print(person['iban']) # -> "DE89370400440532013000" (ISO 13616 MOD-97 β
)
|
|
222
|
+
|
|
223
|
+
# 2. Individual precise data types
|
|
224
|
+
card = jutsu.generate('cardnum', network='amex') # -> "376956063521007" (Luhn β
)
|
|
225
|
+
btc = jutsu.generate('btc_address') # -> "1BvBMSEYstWet..." (Base58Check SHA256d β
)
|
|
226
|
+
|
|
227
|
+
# 3. π― Fully Customizable Templates
|
|
228
|
+
# Define your own schema and generate a list of dictionaries instantly
|
|
229
|
+
users = jutsu.template(
|
|
230
|
+
{'user_id': 'uuid', 'name': 'fullname', 'wallet': 'crypto_address'},
|
|
231
|
+
count=100, locale='UK'
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
# 4. Generate thousands of records & export directly to SQL
|
|
235
|
+
sql = jutsu.export(
|
|
236
|
+
{'id': 'uuid', 'name': 'fullname', 'card': 'cardnum', 'bank_account': 'iban'},
|
|
237
|
+
count=5000, format='sql', table='users', locale='TR'
|
|
238
|
+
)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### β‘ 2. Beautiful CLI
|
|
242
|
+
|
|
243
|
+
Generate valid test data straight from your terminal.
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# Get single values instantly
|
|
247
|
+
$ mockjutsu generate tckn
|
|
248
|
+
$ mockjutsu generate iban --locale FR
|
|
249
|
+
$ mockjutsu generate cardnum --network troy
|
|
250
|
+
|
|
251
|
+
# Need an array of valid US phone numbers?
|
|
252
|
+
$ mockjutsu bulk phone --count 500 --locale US
|
|
253
|
+
|
|
254
|
+
# Generate CSV datasets and save to a file
|
|
255
|
+
$ mockjutsu template uuid fullname crypto_address --count 100 --format csv > users.csv
|
|
256
|
+
|
|
257
|
+
# Generate SQL seed files and save to a text file
|
|
258
|
+
$ mockjutsu template uuid fullname crypto_address --count 500 --format sql --table USERS > data.txt
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### π§± 4. Template Generation via CLI
|
|
262
|
+
|
|
263
|
+
Combine multiple data types into a structured JSON record directly from your terminal.
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
$ mockjutsu template uuid fullname crypto_address --count 2 --locale US
|
|
267
|
+
```
|
|
268
|
+
```json
|
|
269
|
+
[
|
|
270
|
+
{
|
|
271
|
+
"uuid": "5ae780dd-1e26-4317-bc87-495eb53563aa",
|
|
272
|
+
"fullname": "Holly Brandt",
|
|
273
|
+
"crypto_address": "13gSozPBVaQMfFvVrRB7AQ3Fe6ZLDXErUh"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"uuid": "76706c3e-3eaa-4afd-a749-e4002764d275",
|
|
277
|
+
"fullname": "Brooke Lyons",
|
|
278
|
+
"crypto_address": "1GPuQvEVjYfy7C4fdxtY2Y1q76Awngsk9n"
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## π 6 Locales. 100% Real Algorithms.
|
|
286
|
+
|
|
287
|
+
We don't just localize names; we localize **mathematics**.
|
|
288
|
+
|
|
289
|
+
| Locale | Country | National ID | Internal Algorithm Executed |
|
|
290
|
+
|:---:|:---|:---|:---|
|
|
291
|
+
| πΉπ· | **TR** | TCKN | Dual MOD-10 checksum, 11 digits |
|
|
292
|
+
| πΊπΈ | **US** | SSN / EIN | ABA Routing MOD-10 |
|
|
293
|
+
| π¬π§ | **UK** | NIN / UTR | HMRC prefix restrictions |
|
|
294
|
+
| π©πͺ | **DE** | Steuer-ID | ISO 7064 MOD 11,10 |
|
|
295
|
+
| π«π· | **FR** | SIREN / TVA | Luhn + MOD-97 |
|
|
296
|
+
| π·πΊ | **RU** | INN / SNILS | Weighted checksum arrays, MOD-101 |
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## π¦ 390 Supported Data Types
|
|
301
|
+
|
|
302
|
+
We cover everything from standard identities to complex financial market identifiers.
|
|
303
|
+
|
|
304
|
+
<details>
|
|
305
|
+
<summary><b>π€ Identity & Demographic (42 types)</b></summary>
|
|
306
|
+
<br>
|
|
307
|
+
<code>tckn</code> <code>ssn</code> <code>ein</code> <code>nin</code> <code>siren</code> <code>siret</code> <code>tva</code> <code>inn</code> <code>snils</code> <code>ogrn</code> <code>passport</code> <code>license</code> +20 more
|
|
308
|
+
</details>
|
|
309
|
+
|
|
310
|
+
<details>
|
|
311
|
+
<summary><b>π³ Financial & Banking (53 types)</b></summary>
|
|
312
|
+
<br>
|
|
313
|
+
<code>cardnum</code> <code>cardnetwork</code> <code>iban</code> <code>sepa_qr</code> <code>emv_qr_p2p</code> <code>emv_qr_atm</code> <code>emv_qr_pos</code> <code>bic</code> <code>sort_code</code> +18 more
|
|
314
|
+
</details>
|
|
315
|
+
|
|
316
|
+
<details>
|
|
317
|
+
<summary><b>π‘ Telecom & IoT (19 types)</b></summary>
|
|
318
|
+
<br>
|
|
319
|
+
<code>imei</code> <code>iccid</code> <code>imsi</code> <code>msisdn</code> <code>rfid_uid</code> <code>epc</code> <code>nfc_uid</code> <code>ndef_uri</code> <code>apdu</code> <code>ir_nec</code> +10 more
|
|
320
|
+
</details>
|
|
321
|
+
|
|
322
|
+
<details>
|
|
323
|
+
<summary><b>πΉ Securities & Crypto (38 types)</b></summary>
|
|
324
|
+
<br>
|
|
325
|
+
<code>isin</code> <code>cusip</code> <code>sedol</code> <code>lei</code> <code>btc_address</code> <code>eth_address</code> <code>tx_hash</code> <code>block_hash</code>
|
|
326
|
+
</details>
|
|
327
|
+
|
|
328
|
+
<details>
|
|
329
|
+
<summary><b>π¦ E-Commerce & Barcodes (20 types)</b></summary>
|
|
330
|
+
<br>
|
|
331
|
+
<code>ean13</code> <code>upca</code> <code>isbn13</code> <code>gs1_128</code> <code>tracking_number</code> <code>sku</code> <code>order_id</code> +5 more
|
|
332
|
+
</details>
|
|
333
|
+
|
|
334
|
+
*(See our interactive guides for the full list of 390 types:
|
|
335
|
+
[πΉπ· TR](https://altansayan.github.io/mock-jutsu-api/HOW-TO/TR/HOW-TO-MockJutsu-TR.html) | [πΊπΈ EN](https://altansayan.github.io/mock-jutsu-api/HOW-TO/EN/HOW-TO-MockJutsu-EN.html) | [π¬π§ UK](https://altansayan.github.io/mock-jutsu-api/HOW-TO/UK/HOW-TO-MockJutsu-UK.html) | [π©πͺ DE](https://altansayan.github.io/mock-jutsu-api/HOW-TO/DE/HOW-TO-MockJutsu-DE.html) | [π«π· FR](https://altansayan.github.io/mock-jutsu-api/HOW-TO/FR/HOW-TO-MockJutsu-FR.html) | [π·πΊ RU](https://altansayan.github.io/mock-jutsu-api/HOW-TO/RU/HOW-TO-MockJutsu-RU.html))*
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## π€ Contributing
|
|
340
|
+
|
|
341
|
+
`Mock Jutsu` thrives on community contributions. Found a checksum we're not validating? A locale we're missing? We'd love your help!
|
|
342
|
+
|
|
343
|
+
**π¨ Strict TDD & Performance Mandate**
|
|
344
|
+
To maintain our enterprise-grade quality, this repository mechanically enforces **Test-Driven Development (TDD)**.
|
|
345
|
+
- Every new generator must be fully tested mathematically.
|
|
346
|
+
- Every new generator must pass the `< 1.5ms` performance baseline.
|
|
347
|
+
- **GitHub Actions will automatically block any Pull Request that lacks passing tests.**
|
|
348
|
+
|
|
349
|
+
Please read our full **[CONTRIBUTING.md](./CONTRIBUTING.md)** guide before starting your work.
|
|
350
|
+
|
|
351
|
+
### Quick Start for Contributors
|
|
352
|
+
1. Fork the Project & clone it locally.
|
|
353
|
+
2. Install the pre-push safety hook: `python scripts/setup-hooks.py`
|
|
354
|
+
3. Write your test first, then implement your algorithm.
|
|
355
|
+
4. Commit your changes and open a Pull Request!
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## βοΈ Legal Disclaimer
|
|
360
|
+
|
|
361
|
+
Generated data is **entirely synthetic and for development/testing environments only.**
|
|
362
|
+
- Do not submit to real financial, government, or telecom production systems.
|
|
363
|
+
- Generated IBANs, card numbers, and national IDs are mathematically valid but **do not belong to real entities**.
|
|
364
|
+
|
|
365
|
+
<br>
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## π Support Mock Jutsu
|
|
370
|
+
|
|
371
|
+
Mock Jutsu is **free and open-source**. If it saved you hours of debugging, consider buying me a coffee β
|
|
372
|
+
|
|
373
|
+
> _"Every cup of coffee = one more data type."_ π₯·
|
|
374
|
+
|
|
375
|
+
| Network | Address |
|
|
376
|
+
|---------|---------|
|
|
377
|
+
| Ξ **Ethereum (ETH)** | `0x8D2fF0a795E3a19D41758Cb9b4451C39D528BbAF` |
|
|
378
|
+
|
|
379
|
+
_This section will be updated with our sponsors._
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
<div align="center">
|
|
384
|
+
<h3>If mock-jutsu saved you from debugging a "valid-looking but broken" test ID, please leave a β!</h3>
|
|
385
|
+
<p>Released under the <a href="./LICENSE">MIT License</a> β’ Copyright Β© 2026 <a href="https://github.com/altansayan">Altan Sezer Ayan β A.S.A</a></p>
|
|
386
|
+
</div>
|