@@ -44,6 +44,57 @@ describe('FGA', () => {
4444 warrantToken : 'abc' ,
4545 } ) ;
4646 } ) ;
47+
48+ it ( 'deserializes warnings in check response' , async ( ) => {
49+ fetchOnce ( {
50+ result : 'authorized' ,
51+ is_implicit : false ,
52+ warrant_token : 'abc' ,
53+ warnings : [
54+ {
55+ code : 'missing_context_keys' ,
56+ message : 'Missing required context keys' ,
57+ keys : [ 'tenant_id' , 'region' ] ,
58+ } ,
59+ {
60+ code : 'some_other_warning' ,
61+ message : 'Some other warning message' ,
62+ } ,
63+ ] ,
64+ } ) ;
65+ const checkResult = await workos . fga . check ( {
66+ checks : [
67+ {
68+ resource : {
69+ resourceType : 'role' ,
70+ resourceId : 'admin' ,
71+ } ,
72+ relation : 'member' ,
73+ subject : {
74+ resourceType : 'user' ,
75+ resourceId : 'user_123' ,
76+ } ,
77+ } ,
78+ ] ,
79+ } ) ;
80+ expect ( fetchURL ( ) ) . toContain ( '/fga/v1/check' ) ;
81+ expect ( checkResult ) . toMatchObject ( {
82+ result : 'authorized' ,
83+ isImplicit : false ,
84+ warrantToken : 'abc' ,
85+ warnings : [
86+ {
87+ code : 'missing_context_keys' ,
88+ message : 'Missing required context keys' ,
89+ keys : [ 'tenant_id' , 'region' ] ,
90+ } ,
91+ {
92+ code : 'some_other_warning' ,
93+ message : 'Some other warning message' ,
94+ } ,
95+ ] ,
96+ } ) ;
97+ } ) ;
4798 } ) ;
4899
49100 describe ( 'createResource' , ( ) => {
@@ -618,6 +669,101 @@ describe('FGA', () => {
618669 ] ) ;
619670 } ) ;
620671
672+ it ( 'deserializes warnings in query response' , async ( ) => {
673+ fetchOnce ( {
674+ data : [
675+ {
676+ resource_type : 'role' ,
677+ resource_id : 'admin' ,
678+ warrant : {
679+ resource_type : 'role' ,
680+ resource_id : 'admin' ,
681+ relation : 'member' ,
682+ subject : {
683+ resource_type : 'user' ,
684+ resource_id : 'user_123' ,
685+ } ,
686+ } ,
687+ is_implicit : false ,
688+ } ,
689+ {
690+ resource_type : 'role' ,
691+ resource_id : 'manager' ,
692+ warrant : {
693+ resource_type : 'role' ,
694+ resource_id : 'manager' ,
695+ relation : 'member' ,
696+ subject : {
697+ resource_type : 'user' ,
698+ resource_id : 'user_123' ,
699+ } ,
700+ } ,
701+ is_implicit : true ,
702+ } ,
703+ ] ,
704+ list_metadata : {
705+ before : null ,
706+ after : null ,
707+ } ,
708+ warnings : [
709+ {
710+ code : 'missing_context_keys' ,
711+ message : 'Missing required context keys' ,
712+ keys : [ 'tenant_id' ] ,
713+ } ,
714+ {
715+ code : 'some_other_warning' ,
716+ message : 'Some other warning message' ,
717+ } ,
718+ ] ,
719+ } ) ;
720+ const result = await workos . fga . query ( {
721+ q : 'select role where user:user_123 is member' ,
722+ } ) ;
723+ expect ( fetchURL ( ) ) . toContain ( '/fga/v1/query' ) ;
724+ expect ( result . data ) . toMatchObject ( [
725+ {
726+ resourceType : 'role' ,
727+ resourceId : 'admin' ,
728+ warrant : {
729+ resourceType : 'role' ,
730+ resourceId : 'admin' ,
731+ relation : 'member' ,
732+ subject : {
733+ resourceType : 'user' ,
734+ resourceId : 'user_123' ,
735+ } ,
736+ } ,
737+ isImplicit : false ,
738+ } ,
739+ {
740+ resourceType : 'role' ,
741+ resourceId : 'manager' ,
742+ warrant : {
743+ resourceType : 'role' ,
744+ resourceId : 'manager' ,
745+ relation : 'member' ,
746+ subject : {
747+ resourceType : 'user' ,
748+ resourceId : 'user_123' ,
749+ } ,
750+ } ,
751+ isImplicit : true ,
752+ } ,
753+ ] ) ;
754+ expect ( result . warnings ) . toMatchObject ( [
755+ {
756+ code : 'missing_context_keys' ,
757+ message : 'Missing required context keys' ,
758+ keys : [ 'tenant_id' ] ,
759+ } ,
760+ {
761+ code : 'some_other_warning' ,
762+ message : 'Some other warning message' ,
763+ } ,
764+ ] ) ;
765+ } ) ;
766+
621767 it ( 'sends correct params and options' , async ( ) => {
622768 fetchOnce ( {
623769 data : [
0 commit comments