forked from Lilly-Protocol/lily-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpayments.schema.test.ts
More file actions
122 lines (103 loc) · 3.46 KB
/
Copy pathpayments.schema.test.ts
File metadata and controls
122 lines (103 loc) · 3.46 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import { describe, it, expect } from "vitest";
import { stellarAssetCodeSchema, quoteSchema } from "../src/modules/payments/payments.schema";
describe("stellarAssetCodeSchema", () => {
it("accepts valid 1-12 alphanumeric codes", () => {
expect(stellarAssetCodeSchema.safeParse("USDC").success).toBe(true);
});
it("accepts single character code", () => {
expect(stellarAssetCodeSchema.safeParse("A").success).toBe(true);
});
it("accepts 12-character code (max length)", () => {
expect(stellarAssetCodeSchema.safeParse("ABCDEFGHIJKL").success).toBe(true);
});
it("accepts mixed case alphanumeric", () => {
expect(stellarAssetCodeSchema.safeParse("AbCd1234").success).toBe(true);
});
it("accepts XLM (native asset special case)", () => {
expect(stellarAssetCodeSchema.safeParse("XLM").success).toBe(true);
});
it("rejects empty string", () => {
const result = stellarAssetCodeSchema.safeParse("");
expect(result.success).toBe(false);
});
it("rejects code longer than 12 characters", () => {
const result = stellarAssetCodeSchema.safeParse("ABCDEFGHIJKLM");
expect(result.success).toBe(false);
});
it("rejects spaces in asset code", () => {
const result = stellarAssetCodeSchema.safeParse("US DC");
expect(result.success).toBe(false);
});
it("rejects hyphens in asset code", () => {
const result = stellarAssetCodeSchema.safeParse("USD-CDC");
expect(result.success).toBe(false);
});
it("rejects unicode/emoji in asset code", () => {
const result = stellarAssetCodeSchema.safeParse("USD\u{1F600}");
expect(result.success).toBe(false);
});
it("rejects special characters", () => {
const result = stellarAssetCodeSchema.safeParse("US$DC");
expect(result.success).toBe(false);
});
it("rejects underscores", () => {
const result = stellarAssetCodeSchema.safeParse("US_DC");
expect(result.success).toBe(false);
});
});
describe("quoteSchema", () => {
it("accepts a valid quote request with XLM", () => {
const result = quoteSchema.safeParse({
assetCode: "XLM",
amount: "100.50",
destination: "GABC123",
});
expect(result.success).toBe(true);
});
it("accepts a valid quote request with USDC", () => {
const result = quoteSchema.safeParse({
assetCode: "USDC",
amount: "50",
destination: "GXYZ789",
});
expect(result.success).toBe(true);
});
it("rejects quote with invalid asset code containing space", () => {
const result = quoteSchema.safeParse({
assetCode: "US DC",
amount: "50",
destination: "GXYZ789",
});
expect(result.success).toBe(false);
});
it("rejects quote with missing amount", () => {
const result = quoteSchema.safeParse({
assetCode: "USDC",
destination: "GXYZ789",
});
expect(result.success).toBe(false);
});
it("rejects quote with missing destination", () => {
const result = quoteSchema.safeParse({
assetCode: "USDC",
amount: "50",
});
expect(result.success).toBe(false);
});
it("rejects quote with empty asset code", () => {
const result = quoteSchema.safeParse({
assetCode: "",
amount: "50",
destination: "GXYZ789",
});
expect(result.success).toBe(false);
});
it("rejects quote with emoji in asset code", () => {
const result = quoteSchema.safeParse({
assetCode: "USD\u{1F600}",
amount: "50",
destination: "GXYZ789",
});
expect(result.success).toBe(false);
});
});