@@ -328,7 +328,7 @@ describe.each([ProjectType.Stitching, ProjectType.Federation, ProjectType.Single
328328 const { inviteAndJoinMember, createProject } = await createOrg ( ) ;
329329 await inviteAndJoinMember ( ) ;
330330 const { createTargetAccessToken } = await createProject ( projectType ) ;
331- const { secret, latestSchema } = await createTargetAccessToken ( { } ) ;
331+ const { secret } = await createTargetAccessToken ( { } ) ;
332332
333333 const cli = createCLI ( {
334334 readonly : secret ,
@@ -355,3 +355,101 @@ describe.each([ProjectType.Stitching, ProjectType.Federation, ProjectType.Single
355355 ) ;
356356 } ,
357357) ;
358+
359+ test . concurrent (
360+ 'schema:publish with --target parameter matching the access token (slug)' ,
361+ async ( { expect } ) => {
362+ const { createOrg } = await initSeed ( ) . createOwner ( ) ;
363+ const { inviteAndJoinMember, createProject, organization } = await createOrg ( ) ;
364+ await inviteAndJoinMember ( ) ;
365+ const { createTargetAccessToken, project, target } = await createProject ( ) ;
366+ const { secret } = await createTargetAccessToken ( { } ) ;
367+
368+ const targetSlug = [ organization . slug , project . slug , target . slug ] . join ( '/' ) ;
369+
370+ await expect (
371+ schemaPublish ( [
372+ '--registry.accessToken' ,
373+ secret ,
374+ '--author' ,
375+ 'Kamil' ,
376+ '--target' ,
377+ targetSlug ,
378+ 'fixtures/init-schema.graphql' ,
379+ ] ) ,
380+ ) . resolves . toMatchInlineSnapshot ( `
381+ :::::::::::::::: CLI SUCCESS OUTPUT :::::::::::::::::
382+
383+ stdout--------------------------------------------:
384+ ✔ Published initial schema.
385+ ℹ Available at http://__URL__
386+ ` ) ;
387+ } ,
388+ ) ;
389+
390+ test . concurrent (
391+ 'schema:publish with --target parameter matching the access token (UUID)' ,
392+ async ( { expect } ) => {
393+ const { createOrg } = await initSeed ( ) . createOwner ( ) ;
394+ const { inviteAndJoinMember, createProject } = await createOrg ( ) ;
395+ await inviteAndJoinMember ( ) ;
396+ const { createTargetAccessToken, target } = await createProject ( ) ;
397+ const { secret } = await createTargetAccessToken ( { } ) ;
398+
399+ await expect (
400+ schemaPublish ( [
401+ '--registry.accessToken' ,
402+ secret ,
403+ '--author' ,
404+ 'Kamil' ,
405+ '--target' ,
406+ target . id ,
407+ 'fixtures/init-schema.graphql' ,
408+ ] ) ,
409+ ) . resolves . toMatchInlineSnapshot ( `
410+ :::::::::::::::: CLI SUCCESS OUTPUT :::::::::::::::::
411+
412+ stdout--------------------------------------------:
413+ ✔ Published initial schema.
414+ ℹ Available at http://__URL__
415+ ` ) ;
416+ } ,
417+ ) ;
418+
419+ test . concurrent (
420+ 'schema:publish fails with --target parameter not matching the access token (slug)' ,
421+ async ( { expect } ) => {
422+ const { createOrg } = await initSeed ( ) . createOwner ( ) ;
423+ const { inviteAndJoinMember, createProject } = await createOrg ( ) ;
424+ await inviteAndJoinMember ( ) ;
425+ const { createTargetAccessToken } = await createProject ( ) ;
426+ const { secret } = await createTargetAccessToken ( { } ) ;
427+
428+ const targetSlug = 'i/do/not-match' ;
429+
430+ await expect (
431+ schemaPublish ( [
432+ '--registry.accessToken' ,
433+ secret ,
434+ '--author' ,
435+ 'Kamil' ,
436+ '--target' ,
437+ targetSlug ,
438+ 'fixtures/init-schema.graphql' ,
439+ ] ) ,
440+ ) . rejects . toMatchInlineSnapshot ( `
441+ :::::::::::::::: CLI FAILURE OUTPUT :::::::::::::::
442+ exitCode------------------------------------------:
443+ 2
444+ stderr--------------------------------------------:
445+ › Error: No access (reason: "Missing permission for performing
446+ › 'schemaVersion:publish' on resource") (Request ID: __REQUEST_ID__) [115]
447+ › > See https://__URL__ for
448+ › a complete list of error codes and recommended fixes.
449+ › To disable this message set HIVE_NO_ERROR_TIP=1
450+ › Reference: __ID__
451+ stdout--------------------------------------------:
452+ __NONE__
453+ ` ) ;
454+ } ,
455+ ) ;
0 commit comments