Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

constants.test.ts 4.4 KB

You have to be logged in to leave a comment. Sign In
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
123
124
125
126
127
128
129
  1. import { jest } from '@jest/globals';
  2. import {
  3. CLOUD_PROVIDER_PREFIX,
  4. DEFAULT_API_BASE_URL,
  5. DEFAULT_QUERY_LIMIT,
  6. getDefaultPort,
  7. getDefaultShareViewBaseUrl,
  8. getShareApiBaseUrl,
  9. getShareViewBaseUrl,
  10. TERMINAL_MAX_WIDTH,
  11. VERSION,
  12. } from '../src/constants';
  13. import { REDTEAM_DEFAULTS } from '../src/redteam/constants';
  14. describe('constants', () => {
  15. beforeEach(() => {
  16. jest.clearAllMocks();
  17. process.env = {};
  18. });
  19. it('should export VERSION from package.json', () => {
  20. expect(VERSION).toBeDefined();
  21. });
  22. it('should have DEFAULT_QUERY_LIMIT set to 100', () => {
  23. expect(DEFAULT_QUERY_LIMIT).toBe(100);
  24. });
  25. it('should have DEFAULT_API_BASE_URL set to api.promptfoo.app', () => {
  26. expect(DEFAULT_API_BASE_URL).toBe('https://api.promptfoo.app');
  27. });
  28. it('should have REDTEAM_DEFAULTS with correct values', () => {
  29. expect(REDTEAM_DEFAULTS.MAX_CONCURRENCY).toBe(4);
  30. expect(REDTEAM_DEFAULTS.NUM_TESTS).toBe(10);
  31. });
  32. describe('getShareApiBaseUrl', () => {
  33. it('should return DEFAULT_API_BASE_URL by default', () => {
  34. expect(getShareApiBaseUrl()).toBe(DEFAULT_API_BASE_URL);
  35. });
  36. it('should return NEXT_PUBLIC_PROMPTFOO_REMOTE_API_BASE_URL if set', () => {
  37. process.env.NEXT_PUBLIC_PROMPTFOO_REMOTE_API_BASE_URL = 'https://custom.api.com';
  38. expect(getShareApiBaseUrl()).toBe('https://custom.api.com');
  39. });
  40. it('should return NEXT_PUBLIC_PROMPTFOO_BASE_URL if set', () => {
  41. process.env.NEXT_PUBLIC_PROMPTFOO_BASE_URL = 'https://custom.base.com';
  42. expect(getShareApiBaseUrl()).toBe('https://custom.base.com');
  43. });
  44. it('should return PROMPTFOO_REMOTE_API_BASE_URL if set', () => {
  45. process.env.PROMPTFOO_REMOTE_API_BASE_URL = 'https://remote.api.com';
  46. expect(getShareApiBaseUrl()).toBe('https://remote.api.com');
  47. });
  48. it('should prioritize NEXT_PUBLIC_PROMPTFOO_REMOTE_API_BASE_URL over others', () => {
  49. process.env.NEXT_PUBLIC_PROMPTFOO_REMOTE_API_BASE_URL = 'https://custom.api.com';
  50. process.env.NEXT_PUBLIC_PROMPTFOO_BASE_URL = 'https://custom.base.com';
  51. process.env.PROMPTFOO_REMOTE_API_BASE_URL = 'https://remote.api.com';
  52. expect(getShareApiBaseUrl()).toBe('https://custom.api.com');
  53. });
  54. });
  55. describe('getDefaultShareViewBaseUrl', () => {
  56. it('should return promptfoo.app by default', () => {
  57. expect(getDefaultShareViewBaseUrl()).toBe('https://promptfoo.app');
  58. });
  59. it('should return PROMPTFOO_SHARING_APP_BASE_URL if set', () => {
  60. process.env.PROMPTFOO_SHARING_APP_BASE_URL = 'https://custom.share.com';
  61. expect(getDefaultShareViewBaseUrl()).toBe('https://custom.share.com');
  62. });
  63. });
  64. describe('getShareViewBaseUrl', () => {
  65. it('should return promptfoo.app by default', () => {
  66. expect(getShareViewBaseUrl()).toBe('https://promptfoo.app');
  67. });
  68. it('should return NEXT_PUBLIC_PROMPTFOO_BASE_URL if set', () => {
  69. process.env.NEXT_PUBLIC_PROMPTFOO_BASE_URL = 'https://custom.base.com';
  70. expect(getShareViewBaseUrl()).toBe('https://custom.base.com');
  71. });
  72. it('should return PROMPTFOO_REMOTE_APP_BASE_URL if set', () => {
  73. process.env.PROMPTFOO_REMOTE_APP_BASE_URL = 'https://remote.app.com';
  74. expect(getShareViewBaseUrl()).toBe('https://remote.app.com');
  75. });
  76. it('should prioritize NEXT_PUBLIC_PROMPTFOO_BASE_URL over others', () => {
  77. process.env.NEXT_PUBLIC_PROMPTFOO_BASE_URL = 'https://custom.base.com';
  78. process.env.PROMPTFOO_REMOTE_APP_BASE_URL = 'https://remote.app.com';
  79. expect(getShareViewBaseUrl()).toBe('https://custom.base.com');
  80. });
  81. });
  82. describe('getDefaultPort', () => {
  83. it('should return 15500 by default', () => {
  84. expect(getDefaultPort()).toBe(15500);
  85. });
  86. it('should return API_PORT if set', () => {
  87. process.env.API_PORT = '3000';
  88. expect(getDefaultPort()).toBe(3000);
  89. });
  90. it('should handle invalid API_PORT value', () => {
  91. process.env.API_PORT = 'invalid';
  92. expect(getDefaultPort()).toBe(15500);
  93. });
  94. });
  95. describe('TERMINAL_MAX_WIDTH', () => {
  96. it('should match expected terminal width', () => {
  97. const expectedWidth =
  98. process?.stdout?.isTTY && process?.stdout?.columns && process?.stdout?.columns > 10
  99. ? process.stdout.columns - 10
  100. : 120;
  101. expect(TERMINAL_MAX_WIDTH).toBe(expectedWidth);
  102. });
  103. });
  104. it('should have CLOUD_PROVIDER_PREFIX set correctly', () => {
  105. expect(CLOUD_PROVIDER_PREFIX).toBe('promptfoo://provider/');
  106. });
  107. });
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...