Skip to content

Commit ccc9cad

Browse files
authored
Merge branch 'alpha' into ignoreincludes
2 parents c4eb90c + 00f8d4c commit ccc9cad

32 files changed

+1234
-184
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,6 @@ lib/
6161

6262
# Redis Dump
6363
dump.rdb
64+
65+
# AI agents
66+
.claude

changelogs/CHANGELOG_alpha.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,59 @@
1+
# [8.3.0-alpha.12](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.11...8.3.0-alpha.12) (2025-10-25)
2+
3+
4+
### Features
5+
6+
* Add Parse Server option `verifyServerUrl` to disable server URL verification on server launch ([#9881](https://github.com/parse-community/parse-server/issues/9881)) ([b298ccc](https://github.com/parse-community/parse-server/commit/b298cccd9fb4f664b9d83894faad6d1ea7a3c964))
7+
8+
# [8.3.0-alpha.11](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.10...8.3.0-alpha.11) (2025-10-24)
9+
10+
11+
### Bug Fixes
12+
13+
* Stale data read in validation query on `Parse.Object` update causes inconsistency between validation read and subsequent update write operation ([#9859](https://github.com/parse-community/parse-server/issues/9859)) ([f49efaf](https://github.com/parse-community/parse-server/commit/f49efaf5bb1d6b19f6d6712f7cdf073855c95c6e))
14+
15+
# [8.3.0-alpha.10](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.9...8.3.0-alpha.10) (2025-10-22)
16+
17+
18+
### Bug Fixes
19+
20+
* Error in `afterSave` trigger for `Parse.Role` due to `name` field ([#9883](https://github.com/parse-community/parse-server/issues/9883)) ([eb052d8](https://github.com/parse-community/parse-server/commit/eb052d8e6abe1ae32505fd068d5445eaf950a770))
21+
22+
# [8.3.0-alpha.9](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.8...8.3.0-alpha.9) (2025-10-19)
23+
24+
25+
### Bug Fixes
26+
27+
* Server URL verification before server is ready ([#9882](https://github.com/parse-community/parse-server/issues/9882)) ([178bd5c](https://github.com/parse-community/parse-server/commit/178bd5c5e258d9501c9ac4d35a3a105ab64be67e))
28+
29+
# [8.3.0-alpha.8](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.7...8.3.0-alpha.8) (2025-10-16)
30+
31+
32+
### Bug Fixes
33+
34+
* Warning logged when setting option `databaseOptions.disableIndexFieldValidation` ([#9880](https://github.com/parse-community/parse-server/issues/9880)) ([1815b01](https://github.com/parse-community/parse-server/commit/1815b019b52565d2bc87be2596a49aea7600aeba))
35+
36+
# [8.3.0-alpha.7](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.6...8.3.0-alpha.7) (2025-10-15)
37+
38+
39+
### Bug Fixes
40+
41+
* Security upgrade to parse 7.0.1 ([#9877](https://github.com/parse-community/parse-server/issues/9877)) ([abfa94c](https://github.com/parse-community/parse-server/commit/abfa94cd6de2c4e76337931c8ea8311c4ccf2a1a))
42+
43+
# [8.3.0-alpha.6](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.5...8.3.0-alpha.6) (2025-10-14)
44+
45+
46+
### Features
47+
48+
* Add request context middleware for config and dependency injection in hooks ([#8480](https://github.com/parse-community/parse-server/issues/8480)) ([64f104e](https://github.com/parse-community/parse-server/commit/64f104e5c5f8863098e801eee632c14fcbd9b6f9))
49+
50+
# [8.3.0-alpha.5](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.4...8.3.0-alpha.5) (2025-10-14)
51+
52+
53+
### Features
54+
55+
* Allow returning objects in `Parse.Cloud.beforeFind` without invoking database query ([#9770](https://github.com/parse-community/parse-server/issues/9770)) ([0b47407](https://github.com/parse-community/parse-server/commit/0b4740714c29ba99672bc535619ee3516abd356f))
56+
157
# [8.3.0-alpha.4](https://github.com/parse-community/parse-server/compare/8.3.0-alpha.3...8.3.0-alpha.4) (2025-10-09)
258

359

package-lock.json

Lines changed: 48 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parse-server",
3-
"version": "8.3.0-alpha.4",
3+
"version": "8.3.0-alpha.12",
44
"description": "An express module providing a Parse-compatible API server",
55
"main": "lib/index.js",
66
"repository": {
@@ -49,7 +49,7 @@
4949
"mongodb": "6.17.0",
5050
"mustache": "4.2.0",
5151
"otpauth": "9.4.0",
52-
"parse": "6.1.1",
52+
"parse": "7.0.1",
5353
"path-to-regexp": "6.3.0",
5454
"pg-monitor": "3.0.0",
5555
"pg-promise": "12.2.0",

spec/Adapters/Auth/linkedIn.spec.js

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,16 @@ describe('LinkedInAdapter', function () {
8989

9090
describe('Test getUserFromAccessToken', function () {
9191
it('should fetch user successfully', async function () {
92-
global.fetch = jasmine.createSpy().and.returnValue(
93-
Promise.resolve({
94-
ok: true,
95-
json: () => Promise.resolve({ id: 'validUserId' }),
96-
})
97-
);
92+
mockFetch([
93+
{
94+
url: 'https://api.linkedin.com/v2/me',
95+
method: 'GET',
96+
response: {
97+
ok: true,
98+
json: () => Promise.resolve({ id: 'validUserId' }),
99+
},
100+
},
101+
]);
98102

99103
const user = await adapter.getUserFromAccessToken('validToken', false);
100104

@@ -104,14 +108,21 @@ describe('LinkedInAdapter', function () {
104108
'x-li-format': 'json',
105109
'x-li-src': undefined,
106110
},
111+
method: 'GET',
107112
});
108113
expect(user).toEqual({ id: 'validUserId' });
109114
});
110115

111116
it('should throw error for invalid response', async function () {
112-
global.fetch = jasmine.createSpy().and.returnValue(
113-
Promise.resolve({ ok: false })
114-
);
117+
mockFetch([
118+
{
119+
url: 'https://api.linkedin.com/v2/me',
120+
method: 'GET',
121+
response: {
122+
ok: false,
123+
},
124+
},
125+
]);
115126

116127
await expectAsync(adapter.getUserFromAccessToken('invalidToken', false)).toBeRejectedWith(
117128
new Error('LinkedIn API request failed.')
@@ -121,12 +132,16 @@ describe('LinkedInAdapter', function () {
121132

122133
describe('Test getAccessTokenFromCode', function () {
123134
it('should fetch token successfully', async function () {
124-
global.fetch = jasmine.createSpy().and.returnValue(
125-
Promise.resolve({
126-
ok: true,
127-
json: () => Promise.resolve({ access_token: 'validToken' }),
128-
})
129-
);
135+
mockFetch([
136+
{
137+
url: 'https://www.linkedin.com/oauth/v2/accessToken',
138+
method: 'POST',
139+
response: {
140+
ok: true,
141+
json: () => Promise.resolve({ access_token: 'validToken' }),
142+
},
143+
},
144+
]);
130145

131146
const tokenResponse = await adapter.getAccessTokenFromCode('validCode', 'http://example.com');
132147

@@ -139,9 +154,15 @@ describe('LinkedInAdapter', function () {
139154
});
140155

141156
it('should throw error for invalid response', async function () {
142-
global.fetch = jasmine.createSpy().and.returnValue(
143-
Promise.resolve({ ok: false })
144-
);
157+
mockFetch([
158+
{
159+
url: 'https://www.linkedin.com/oauth/v2/accessToken',
160+
method: 'POST',
161+
response: {
162+
ok: false,
163+
},
164+
},
165+
]);
145166

146167
await expectAsync(
147168
adapter.getAccessTokenFromCode('invalidCode', 'http://example.com')

spec/Adapters/Auth/wechat.spec.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ describe('WeChatAdapter', function () {
2323
const user = await adapter.getUserFromAccessToken('validToken', { id: 'validOpenId' });
2424

2525
expect(global.fetch).toHaveBeenCalledWith(
26-
'https://api.weixin.qq.com/sns/auth?access_token=validToken&openid=validOpenId'
26+
'https://api.weixin.qq.com/sns/auth?access_token=validToken&openid=validOpenId',
27+
jasmine.any(Object)
2728
);
2829
expect(user).toEqual({ errcode: 0, id: 'validUserId' });
2930
});
@@ -64,7 +65,8 @@ describe('WeChatAdapter', function () {
6465
const token = await adapter.getAccessTokenFromCode(authData);
6566

6667
expect(global.fetch).toHaveBeenCalledWith(
67-
'https://api.weixin.qq.com/sns/oauth2/access_token?appid=validAppId&secret=validAppSecret&code=validCode&grant_type=authorization_code'
68+
'https://api.weixin.qq.com/sns/oauth2/access_token?appid=validAppId&secret=validAppSecret&code=validCode&grant_type=authorization_code',
69+
jasmine.any(Object)
6870
);
6971
expect(token).toEqual('validToken');
7072
});

0 commit comments

Comments
 (0)