mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-09 21:07:46 +00:00
[cli] Fix team validation bug where you are apart of a team (#10092)
When consolidating the deployment team validation, a bug was introduced where the command would error if the user was currently using a team. The logic was meant to copy the logic in `getDeploymentByIdOrURL()`: https://github.com/vercel/vercel/blob/main/packages/cli/src/util/deploy/get-deployment-by-id-or-url.ts#L80.
This commit is contained in:
@@ -74,9 +74,7 @@ export default async function getProjectByDeployment({
|
||||
err.code = 'ERR_INVALID_TEAM';
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
if (team) {
|
||||
} else if (team) {
|
||||
const err: NodeJS.ErrnoException = new Error(
|
||||
`Deployment doesn't belong to current team ${chalk.bold(contextName)}`
|
||||
);
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
import { client } from '../../../mocks/client';
|
||||
import getProjectByDeployment from '../../../../src/util/projects/get-project-by-deployment';
|
||||
import { useTeams } from '../../../mocks/team';
|
||||
import { useUser } from '../../../mocks/user';
|
||||
import { useDeployment } from '../../../mocks/deployment';
|
||||
import { defaultProject, useProject } from '../../../mocks/project';
|
||||
|
||||
describe('getProjectByDeployment', () => {
|
||||
it('should get project and deployment', async () => {
|
||||
const user = useUser();
|
||||
const { project: p } = useProject({
|
||||
...defaultProject,
|
||||
id: 'foo',
|
||||
name: 'foo',
|
||||
});
|
||||
const d = useDeployment({
|
||||
creator: user,
|
||||
createdAt: Date.now(),
|
||||
project: p,
|
||||
});
|
||||
|
||||
const { deployment, project } = await getProjectByDeployment({
|
||||
client,
|
||||
deployId: d.id,
|
||||
output: client.output,
|
||||
});
|
||||
|
||||
expect(project.id).toBe(p.id);
|
||||
expect(deployment.id).toBe(d.id);
|
||||
});
|
||||
|
||||
it('should get project and deployment associated to a team', async () => {
|
||||
const [team] = useTeams('team_dummy');
|
||||
const user = useUser();
|
||||
const { project: p } = useProject({
|
||||
...defaultProject,
|
||||
id: 'foo',
|
||||
name: 'foo',
|
||||
});
|
||||
const d = useDeployment({
|
||||
creator: {
|
||||
id: team.id,
|
||||
name: team.name,
|
||||
email: user.email,
|
||||
username: team.slug,
|
||||
},
|
||||
createdAt: Date.now(),
|
||||
project: p,
|
||||
});
|
||||
|
||||
client.config.currentTeam = team.id;
|
||||
d.team = team;
|
||||
|
||||
const { deployment, project } = await getProjectByDeployment({
|
||||
client,
|
||||
deployId: d.id,
|
||||
output: client.output,
|
||||
});
|
||||
|
||||
expect(project.id).toBe(p.id);
|
||||
expect(deployment.id).toBe(d.id);
|
||||
});
|
||||
|
||||
it("should error if deployment team doesn't match current user's team", async () => {
|
||||
const [team] = useTeams('team_dummy');
|
||||
const user = useUser();
|
||||
const { project: p } = useProject({
|
||||
...defaultProject,
|
||||
id: 'foo',
|
||||
name: 'foo',
|
||||
});
|
||||
const d = useDeployment({
|
||||
creator: {
|
||||
id: team.id,
|
||||
name: team.name,
|
||||
email: user.email,
|
||||
username: team.slug,
|
||||
},
|
||||
createdAt: Date.now(),
|
||||
project: p,
|
||||
});
|
||||
|
||||
client.config.currentTeam = team.id;
|
||||
|
||||
await expect(
|
||||
getProjectByDeployment({
|
||||
client,
|
||||
deployId: d.id,
|
||||
output: client.output,
|
||||
})
|
||||
).rejects.toThrowError("Deployment doesn't belong to current team");
|
||||
|
||||
client.config.currentTeam = undefined;
|
||||
d.team = team;
|
||||
|
||||
await expect(
|
||||
getProjectByDeployment({
|
||||
client,
|
||||
deployId: d.id,
|
||||
output: client.output,
|
||||
})
|
||||
).rejects.toThrowError('Deployment belongs to a different team');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user