github.com/openfga/openfga@v1.5.4-rc1/assets/tests/abac_tests.yaml (about)

     1  tests:
     2    - name: direct_relation_with_condition
     3      stages:
     4        - model: |
     5            model
     6              schema 1.1
     7            type user
     8  
     9            type document
    10              relations
    11                define viewer: [user with x_less_than]
    12  
    13            condition x_less_than(x: int) {
    14              x < 100
    15            }
    16          tuples:
    17            - user: user:jon
    18              relation: viewer
    19              object: document:1
    20              condition:
    21                name: x_less_than
    22          checkAssertions:
    23            - tuple:
    24                user: user:jon
    25                relation: viewer
    26                object: document:1
    27              errorCode: 2000
    28            - tuple:
    29                user: user:jon
    30                relation: viewer
    31                object: document:1
    32              context:
    33                "x": 10
    34              expectation: true
    35            - tuple:
    36                user: user:jon
    37                relation: viewer
    38                object: document:1
    39              context:
    40                "x": 101
    41              expectation: false
    42          listObjectsAssertions:
    43            - request:
    44                user: user:jon
    45                type: document
    46                relation: viewer
    47              errorCode: 2000
    48            - request:
    49                user: user:jon
    50                type: document
    51                relation: viewer
    52              context:
    53                "x": 10
    54              expectation:
    55                - document:1
    56            - request:
    57                user: user:jon
    58                type: document
    59                relation: viewer
    60              context:
    61                "x": 101
    62              expectation:
    63          listUsersAssertions:
    64            - request:
    65                filters:
    66                  - user
    67                relation: viewer
    68                object: document:1
    69              errorCode: 2000
    70            - request:
    71                filters:
    72                  - user
    73                object: document:1
    74                relation: viewer
    75              context:
    76                "x": 101
    77              expectation:
    78            - request:
    79                filters:
    80                  - user
    81                object: document:1
    82                relation: viewer
    83              context:
    84                "x": 99
    85              expectation:
    86                - user:jon
    87    - name: indirect_relation_with_condition
    88      stages:
    89        - model: |
    90            model
    91              schema 1.1
    92            type user
    93  
    94            type group
    95              relations
    96                define member: [user]
    97  
    98            type document
    99              relations
   100                define viewer: [group#member with ts_less_than]
   101  
   102            condition ts_less_than(ts: timestamp) {
   103              ts < timestamp("2023-10-11T10:00:00.000Z")
   104            }
   105          tuples:
   106            - user: group:eng#member
   107              relation: viewer
   108              object: document:1
   109              condition:
   110                name: ts_less_than
   111            - user: user:jon
   112              relation: member
   113              object: group:eng
   114          checkAssertions:
   115            - tuple:
   116                user: user:jon
   117                relation: viewer
   118                object: document:1
   119              errorCode: 2000
   120            - tuple:
   121                user: user:jon
   122                relation: viewer
   123                object: document:1
   124              context:
   125                "ts": "2023-10-11T09:00:00.000Z"
   126              expectation: true
   127            - tuple:
   128                user: user:jon
   129                relation: viewer
   130                object: document:1
   131              context:
   132                "ts": "2023-10-11T10:00:00.000Z"
   133              expectation: false
   134          listObjectsAssertions:
   135            - request:
   136                user: user:jon
   137                type: document
   138                relation: viewer
   139              errorCode: 2000
   140            - request:
   141                user: user:jon
   142                type: document
   143                relation: viewer
   144              context:
   145                "ts": "2023-10-11T09:00:00.000Z"
   146              expectation:
   147                - document:1
   148            - request:
   149                user: user:jon
   150                type: document
   151                relation: viewer
   152              context:
   153                "ts": "2023-10-11T10:00:00.000Z"
   154              expectation:
   155          listUsersAssertions:
   156            - request:
   157                filters:
   158                  - user
   159                relation: viewer
   160                object: document:1
   161              errorCode: 2000
   162            - request:
   163                filters:
   164                  - user
   165                object: document:1
   166                relation: viewer
   167              context:
   168                "ts": "2023-10-11T10:00:00.000Z"
   169              expectation:
   170            - request:
   171                filters:
   172                  - user
   173                object: document:1
   174                relation: viewer
   175              context:
   176                "ts": "2023-10-11T09:00:00.000Z"
   177              expectation:
   178                - user:jon
   179            - request:
   180                filters:
   181                  - group#member
   182                object: document:1
   183                relation: viewer
   184              context:
   185                "ts": "2023-10-11T10:00:00.000Z"
   186              expectation:
   187            - request:
   188                filters:
   189                  - group#member
   190                object: document:1
   191                relation: viewer
   192              context:
   193                "ts": "2023-10-11T09:00:00.000Z"
   194              expectation:
   195                - group:eng#member
   196    - name: nested_indirect_relation_with_condition
   197      stages:
   198        - model: |
   199            model
   200              schema 1.1
   201            type user
   202  
   203            type group
   204              relations
   205                define member: [user, group#member with ipaddr_in_range]
   206  
   207            type document
   208              relations
   209                define viewer: [group#member]
   210  
   211            condition ipaddr_in_range(user_ip: ipaddress, cidr: string) {
   212              user_ip.in_cidr(cidr)
   213            }
   214          tuples:
   215            - user: user:jon
   216              relation: member
   217              object: group:fga
   218            - user: group:eng#member
   219              relation: viewer
   220              object: document:1
   221            - user: group:fga#member
   222              relation: member
   223              object: group:eng
   224              condition:
   225                name: ipaddr_in_range
   226                context:
   227                  "cidr": "192.168.0.0/24"
   228          checkAssertions:
   229            - tuple:
   230                user: user:jon
   231                relation: viewer
   232                object: document:1
   233              errorCode: 2000
   234            - tuple:
   235                user: user:jon
   236                relation: viewer
   237                object: document:1
   238              context:
   239                "user_ip": "192.168.0.1"
   240              expectation: true
   241            - tuple:
   242                user: user:jon
   243                relation: viewer
   244                object: document:1
   245              context:
   246                "user_ip": "192.168.1.0"
   247              expectation: false
   248          listObjectsAssertions:
   249            - request:
   250                user: user:jon
   251                type: document
   252                relation: viewer
   253              errorCode: 2000
   254            - request:
   255                user: user:jon
   256                type: document
   257                relation: viewer
   258              context:
   259                "user_ip": "192.168.0.1"
   260              expectation:
   261                - document:1
   262            - request:
   263                user: user:jon
   264                type: document
   265                relation: viewer
   266              context:
   267                "user_ip": "192.168.1.0"
   268              expectation:
   269          listUsersAssertions:
   270            - request:
   271                filters:
   272                  - user
   273                relation: viewer
   274                object: document:1
   275              errorCode: 2000
   276            - request:
   277                filters:
   278                  - user
   279                object: document:1
   280                relation: viewer
   281              context:
   282                "user_ip": "192.168.1.0"
   283              expectation:
   284            - request:
   285                filters:
   286                  - user
   287                object: document:1
   288                relation: viewer
   289              context:
   290                "user_ip": "192.168.0.1"
   291              expectation:
   292                - user:jon
   293            - request:
   294                filters:
   295                  - group#member
   296                object: document:1
   297                relation: viewer
   298              context:
   299                "user_ip": "192.168.1.0"
   300              expectation:
   301                - group:eng#member
   302            - request:
   303                filters:
   304                  - group#member
   305                object: document:1
   306                relation: viewer
   307              context:
   308                "user_ip": "192.168.0.1"
   309              expectation:
   310                - group:eng#member
   311                - group:fga#member
   312    - name: computed_userset_with_condition
   313      stages:
   314        - model: |
   315            model
   316              schema 1.1
   317            type user
   318  
   319            type document
   320              relations
   321                define writer: [user with x_less_than]
   322                define viewer: writer
   323  
   324            condition x_less_than(x: int) {
   325              x < 100
   326            }
   327          tuples:
   328            - object: document:1
   329              relation: writer
   330              user: user:aardvark
   331              condition:
   332                name: x_less_than
   333          checkAssertions:
   334            - tuple:
   335                object: document:1
   336                relation: writer
   337                user: user:aardvark
   338              errorCode: 2000
   339            - tuple:
   340                object: document:1
   341                relation: writer
   342                user: user:aardvark
   343              context:
   344                "x": 10
   345              expectation: true
   346            - tuple:
   347                object: document:1
   348                relation: writer
   349                user: user:aardvark
   350              context:
   351                "x": 101
   352              expectation: false
   353          listObjectsAssertions:
   354            - request:
   355                user: user:aardvark
   356                type: document
   357                relation: writer
   358              errorCode: 2000
   359            - request:
   360                user: user:aardvark
   361                type: document
   362                relation: writer
   363              context:
   364                "x": 10
   365              expectation:
   366                - document:1
   367            - request:
   368                user: user:aardvark
   369                type: document
   370                relation: writer
   371              context:
   372                "x": 101
   373              expectation:
   374          listUsersAssertions:
   375            - request:
   376                filters:
   377                  - user
   378                relation: viewer
   379                object: document:1
   380              errorCode: 2000
   381            - request:
   382                filters:
   383                  - user
   384                object: document:1
   385                relation: viewer
   386              context:
   387                "x": 101
   388              expectation:
   389            - request:
   390                filters:
   391                  - user
   392                object: document:1
   393                relation: viewer
   394              context:
   395                "x": 99
   396              expectation:
   397                - user:aardvark
   398    - name: tuple_to_userset_with_condition
   399      stages:
   400        - model: |
   401            model
   402              schema 1.1
   403            type user
   404  
   405            type folder
   406              relations
   407                define viewer: [user]
   408  
   409            type document
   410              relations
   411                define parent: [folder with x_less_than]
   412                define viewer: viewer from parent
   413  
   414            condition x_less_than(x: int) {
   415              x < 100
   416            }
   417          tuples:
   418            - object: document:1
   419              relation: parent
   420              user: folder:x
   421              condition:
   422                name: x_less_than
   423            - object: folder:x
   424              relation: viewer
   425              user: user:aardvark
   426          checkAssertions:
   427            - tuple:
   428                object: document:1
   429                relation: viewer
   430                user: user:aardvark
   431              errorCode: 2000
   432            - tuple:
   433                object: document:1
   434                relation: viewer
   435                user: user:aardvark
   436              context:
   437                "x": 10
   438              expectation: true
   439            - tuple:
   440                object: document:1
   441                relation: viewer
   442                user: user:aardvark
   443              context:
   444                "x": 101
   445              expectation: false
   446          listObjectsAssertions:
   447            - request:
   448                user: user:aardvark
   449                type: document
   450                relation: viewer
   451              errorCode: 2000
   452            - request:
   453                user: user:aardvark
   454                type: document
   455                relation: viewer
   456              context:
   457                "x": 10
   458              expectation:
   459                - document:1
   460            - request:
   461                user: user:aardvark
   462                type: document
   463                relation: viewer
   464              context:
   465                "x": 101
   466              expectation:
   467          listUsersAssertions:
   468            - request:
   469                filters:
   470                  - user
   471                relation: viewer
   472                object: document:1
   473              errorCode: 2000
   474            - request:
   475                filters:
   476                  - user
   477                object: document:1
   478                relation: viewer
   479              context:
   480                "x": 101
   481              expectation:
   482            - request:
   483                filters:
   484                  - user
   485                object: document:1
   486                relation: viewer
   487              context:
   488                 "x": 99
   489              expectation:
   490                - user:aardvark
   491            - request:
   492                filters:
   493                  - folder#viewer
   494                object: document:1
   495                relation: viewer
   496              context:
   497                "x": 101
   498              expectation:
   499            - request:
   500                filters:
   501                  - folder#viewer
   502                object: document:1
   503                relation: viewer
   504              context:
   505                 "x": 99
   506              expectation:
   507                - folder:x#viewer
   508    - name: direct_relation_with_condition
   509      stages:
   510        - model: |
   511            model
   512              schema 1.1
   513            type user
   514  
   515            type document
   516              relations
   517                define viewer: [user with x_less_than]
   518  
   519            condition x_less_than(x: int) {
   520              x < 100
   521            }
   522          tuples:
   523            - user: user:jon
   524              relation: viewer
   525              object: document:1
   526              condition:
   527                name: x_less_than
   528          checkAssertions:
   529            - tuple:
   530                user: user:jon
   531                relation: viewer
   532                object: document:1
   533              errorCode: 2000
   534            - tuple:
   535                user: user:jon
   536                relation: viewer
   537                object: document:1
   538              context:
   539                "x": 10
   540              expectation: true
   541            - tuple:
   542                user: user:jon
   543                relation: viewer
   544                object: document:1
   545              context:
   546                "x": 101
   547              expectation: false
   548          listObjectsAssertions:
   549            - request:
   550                user: user:jon
   551                type: document
   552                relation: viewer
   553              errorCode: 2000
   554            - request:
   555                user: user:jon
   556                type: document
   557                relation: viewer
   558              context:
   559                "x": 10
   560              expectation:
   561                - document:1
   562            - request:
   563                user: user:jon
   564                type: document
   565                relation: viewer
   566              context:
   567                "x": 101
   568              expectation:
   569          listUsersAssertions:
   570            - request:
   571                filters:
   572                  - user
   573                relation: viewer
   574                object: document:1
   575              errorCode: 2000
   576            - request:
   577                filters:
   578                  - user
   579                object: document:1
   580                relation: viewer
   581              context:
   582                "x": 101
   583              expectation:
   584            - request:
   585                filters:
   586                  - user
   587                object: document:1
   588                relation: viewer
   589              context:
   590                "x": 99
   591              expectation:
   592                - user:jon
   593    - name: direct_relations_with_condition_through_intersection
   594      stages:
   595        - model: |
   596            model
   597              schema 1.1
   598            type user
   599  
   600            type document
   601              relations
   602                define allowed: [user with condx]
   603                define viewer: [user with condy] and allowed
   604  
   605            condition condx(x: int) {
   606              x < 100
   607            }
   608  
   609            condition condy(y: int) {
   610              y < 50
   611            }
   612          tuples:
   613            - user: user:jon
   614              relation: viewer
   615              object: document:1
   616              condition:
   617                name: condy
   618            - user: user:jon
   619              relation: allowed
   620              object: document:1
   621              condition:
   622                name: condx
   623          checkAssertions:
   624            - tuple:
   625                user: user:jon
   626                relation: viewer
   627                object: document:1
   628              context:
   629                "x": 10
   630                "y": 5
   631              expectation: true
   632            - tuple:
   633                user: user:jon
   634                relation: viewer
   635                object: document:1
   636              context:
   637                "x": 101
   638                "y": 5
   639              expectation: false
   640          listObjectsAssertions:
   641            - request:
   642                user: user:jon
   643                type: document
   644                relation: viewer
   645              errorCode: 2000
   646            - request:
   647                user: user:jon
   648                type: document
   649                relation: viewer
   650              context:
   651                "x": 10
   652                "y": 5
   653              expectation:
   654                - document:1
   655            - request:
   656                user: user:jon
   657                type: document
   658                relation: viewer
   659              context:
   660                "x": 101
   661                "y": 5
   662              expectation:
   663          listUsersAssertions:
   664            - request:
   665                filters:
   666                  - user
   667                relation: viewer
   668                object: document:1
   669              errorCode: 2000
   670            - request:
   671                filters:
   672                  - user
   673                object: document:1
   674                relation: viewer
   675              context:
   676                "x": 10
   677                "y": 5
   678              expectation:
   679                - user:jon
   680            - request:
   681                filters:
   682                  - user
   683                object: document:1
   684                relation: viewer
   685              context:
   686                "x": 101
   687                "y": 5
   688              expectation:
   689    - name: relation_through_ttu_with_condition
   690      stages:
   691        - model: |
   692            model
   693              schema 1.1
   694            type user
   695  
   696            type folder
   697              relations
   698                define viewer: [user]
   699  
   700            type document
   701              relations
   702                define parent: [folder with str_cond, folder with xcond]
   703                define viewer: [user] or viewer from parent
   704  
   705            condition str_cond(s: string) {
   706              s == "hello"
   707            }
   708  
   709            condition xcond(x: int) {
   710              x == 10
   711            }
   712          tuples:
   713            - user: folder:a
   714              relation: parent
   715              object: document:1
   716              condition:
   717                name: str_cond
   718            - user: folder:b
   719              relation: parent
   720              object: document:1
   721              condition:
   722                name: xcond
   723            - user: user:jon
   724              relation: viewer
   725              object: folder:a
   726            - user: user:jon
   727              relation: viewer
   728              object: folder:b
   729          checkAssertions:
   730            - tuple:
   731                user: user:jon
   732                relation: viewer
   733                object: document:1
   734              errorCode: 2000
   735            - tuple:
   736                user: user:jon
   737                relation: viewer
   738                object: document:1
   739              context:
   740                "s": "hello"
   741              expectation: true
   742            - tuple:
   743                user: user:jon
   744                relation: viewer
   745                object: document:1
   746              context:
   747                "x": 10
   748              expectation: true
   749            - tuple:
   750                user: user:jon
   751                relation: viewer
   752                object: document:1
   753              context:
   754                "s": "foo"
   755              errorCode: 2000
   756            - tuple:
   757                user: user:jon
   758                relation: viewer
   759                object: document:1
   760              context:
   761                "x": 15
   762              errorCode: 2000
   763            - tuple:
   764                user: user:jon
   765                relation: viewer
   766                object: document:1
   767              contextualTuples:
   768                - object: document:1
   769                  relation: viewer
   770                  user: user:jon
   771              expectation: true
   772          listUsersAssertions:
   773            - request:
   774                filters:
   775                  - user
   776                object: document:1
   777                relation: viewer
   778              errorCode: 2000
   779            - request:
   780                filters:
   781                  - user
   782                object: document:1
   783                relation: viewer
   784              context:
   785                "s": "hello"
   786              errorCode: 2000
   787            - request:
   788                filters:
   789                  - user
   790                object: document:1
   791                relation: viewer
   792              context:
   793                "x": 10
   794              errorCode: 2000
   795            - request:
   796                filters:
   797                  - user
   798                object: document:1
   799                relation: viewer
   800              context:
   801                "s": "not hello"
   802              errorCode: 2000
   803            - request:
   804                filters:
   805                  - user
   806                object: document:1
   807                relation: viewer
   808              context:
   809                "x": 11
   810              errorCode: 2000
   811            - request:
   812                filters:
   813                  - folder#viewer
   814                object: document:1
   815                relation: viewer
   816              context:
   817                "x": 10
   818              errorCode: 2000
   819            - request:
   820                filters:
   821                  - folder#viewer
   822                object: document:1
   823                relation: viewer
   824              context:
   825                "s": "hello"
   826              errorCode: 2000
   827            - request:
   828                filters:
   829                  - folder#viewer
   830                object: document:1
   831                relation: viewer
   832              context:
   833                "s": "hello"
   834                "x": 10
   835              expectation:
   836                - folder:a#viewer
   837                - folder:b#viewer
   838            - request:
   839                filters:
   840                  - folder#viewer
   841                object: document:1
   842                relation: viewer
   843              context:
   844                "s": "not hello"
   845                "x": 11
   846              expectation:
   847    - name: direct_relations_with_condition
   848      stages:
   849        - model: |
   850            model
   851              schema 1.1
   852            type user
   853  
   854            type document
   855              relations
   856                define viewer: [user with condxy]
   857  
   858            condition condxy(x: int, y: int) {
   859              x < 100 || y < 50
   860            }
   861          tuples:
   862            - user: user:jon
   863              relation: viewer
   864              object: document:1
   865              condition:
   866                name: condxy
   867          checkAssertions:
   868            - tuple:
   869                user: user:jon
   870                relation: viewer
   871                object: document:1
   872              errorCode: 2000
   873            - tuple:
   874                user: user:jon
   875                relation: viewer
   876                object: document:1
   877              context:
   878                "x": 10
   879                "y": 5
   880              expectation: true
   881            - tuple:
   882                user: user:jon
   883                relation: viewer
   884                object: document:1
   885              context:
   886                "x": 101
   887                "y": 51
   888              expectation: false
   889            - tuple:
   890                user: user:jon
   891                relation: viewer
   892                object: document:1
   893              context:
   894                "x": 10
   895              errorCode: 2000
   896            - tuple:
   897                user: user:jon
   898                relation: viewer
   899                object: document:1
   900              context:
   901                "y": 10
   902              errorCode: 2000
   903          listObjectsAssertions:
   904            - request:
   905                user: user:jon
   906                type: document
   907                relation: viewer
   908              errorCode: 2000 # missing params
   909            - request:
   910                user: user:jon
   911                type: document
   912                relation: viewer
   913              context:
   914                "x": 10
   915                "y": 5
   916              expectation:
   917                - document:1
   918            - request:
   919                user: user:jon
   920                type: document
   921                relation: viewer
   922              context:
   923                "x": 101
   924                "y": 51
   925              expectation:
   926  # TODO inconsistent with Check, which throws error. See https://github.com/openfga/openfga/issues/1567
   927  #          - request:
   928  #              user: user:jon
   929  #              type: document
   930  #              relation: viewer
   931  #            context:
   932  #              "x": 10
   933  #            expectation:
   934  #              - document:1
   935  #          - request:
   936  #              user: user:jon
   937  #              type: document
   938  #              relation: viewer
   939  #            context:
   940  #              "y": 10
   941  #            expectation:
   942  #              - document:1
   943          listUsersAssertions:
   944            - request:
   945                filters:
   946                  - user
   947                relation: viewer
   948                object: document:1
   949              errorCode: 2000
   950            - request:
   951                filters:
   952                  - user
   953                relation: viewer
   954                object: document:1
   955              context:
   956                "y": 10
   957              errorCode: 2000
   958            - request:
   959                filters:
   960                  - user
   961                object: document:1
   962                relation: viewer
   963              context:
   964                "x": 1
   965                "y": 1
   966              expectation:
   967                - user:jon
   968            - request:
   969                filters:
   970                  - user
   971                object: document:1
   972                relation: viewer
   973              context:
   974                "x": 50000
   975                "y": 50000
   976              expectation:
   977            - request:
   978                filters:
   979                  - user
   980                object: document:1
   981                relation: viewer
   982              context:
   983                "x": 1
   984                "y": 50000
   985              expectation:
   986                - user:jon
   987            - request:
   988                filters:
   989                  - user
   990                object: document:1
   991                relation: viewer
   992              context:
   993                "x": 50000
   994                "y": 1
   995              expectation:
   996                - user:jon
   997    - name: prior_conditions_ignored
   998      stages:
   999        - model: |
  1000            model
  1001              schema 1.1
  1002            type user
  1003  
  1004            type document
  1005              relations
  1006                define viewer: [user with oldcondition]
  1007  
  1008            condition oldcondition(x: int) {
  1009              x > 100
  1010            }
  1011          tuples:
  1012            - object: document:1
  1013              relation: viewer
  1014              user: user:jon
  1015              condition:
  1016                name: oldcondition
  1017          checkAssertions:
  1018            - tuple:
  1019                object: document:1
  1020                relation: viewer
  1021                user: user:jon
  1022              context:
  1023                "x": 101
  1024              expectation: true
  1025          listObjectsAssertions:
  1026            - request:
  1027                user: user:jon
  1028                type: document
  1029                relation: viewer
  1030              context:
  1031                "x": 101
  1032              expectation:
  1033                - document:1
  1034          listUsersAssertions:
  1035            - request:
  1036                filters:
  1037                  - user
  1038                object: document:1
  1039                relation: viewer
  1040              context:
  1041                "x": 201
  1042              expectation:
  1043                - user:jon
  1044            - request:
  1045                filters:
  1046                  - user
  1047                object: document:1
  1048                relation: viewer
  1049              context:
  1050                "x": 99
  1051              expectation:
  1052        - model: |
  1053            model
  1054              schema 1.1
  1055            type user
  1056  
  1057            type document
  1058              relations
  1059                define viewer: [user with newcondition]
  1060  
  1061            condition newcondition(x: int) {
  1062              x > 200
  1063            }
  1064          checkAssertions:
  1065            - tuple:
  1066                object: document:1
  1067                relation: viewer
  1068                user: user:jon
  1069              context:
  1070                "x": 101
  1071              expectation: false
  1072            - tuple:
  1073                object: document:1
  1074                relation: viewer
  1075                user: user:jon
  1076              context:
  1077                "x": 201
  1078              expectation: false
  1079          listObjectsAssertions:
  1080            - request:
  1081                user: user:jon
  1082                type: document
  1083                relation: viewer
  1084              context:
  1085                "x": 101
  1086              expectation:
  1087            - request:
  1088                user: user:jon
  1089                type: document
  1090                relation: viewer
  1091              context:
  1092                "x": 201
  1093              expectation:
  1094          listUsersAssertions:
  1095            - request:
  1096                filters:
  1097                  - user
  1098                object: document:1
  1099                relation: viewer
  1100              context:
  1101                "x": 201
  1102              expectation:
  1103            - request:
  1104                filters:
  1105                  - user
  1106                object: document:1
  1107                relation: viewer
  1108              context:
  1109                "x": 99
  1110              expectation:
  1111        - model: |
  1112            model
  1113              schema 1.1
  1114            type user
  1115  
  1116            type document
  1117              relations
  1118                define viewer: [user with oldcondition]
  1119  
  1120            condition oldcondition(x: int) {
  1121              x > 200
  1122            }
  1123          checkAssertions:
  1124            - tuple:
  1125                object: document:1
  1126                relation: viewer
  1127                user: user:jon
  1128              context:
  1129                "x": 101
  1130              expectation: false
  1131            - tuple:
  1132                object: document:1
  1133                relation: viewer
  1134                user: user:jon
  1135              context:
  1136                "x": 201
  1137              expectation: true
  1138          listObjectsAssertions:
  1139            - request:
  1140                user: user:jon
  1141                type: document
  1142                relation: viewer
  1143              context:
  1144                "x": 101
  1145              expectation:
  1146            - request:
  1147                user: user:jon
  1148                type: document
  1149                relation: viewer
  1150              context:
  1151                "x": 201
  1152              expectation:
  1153                - document:1
  1154          listUsersAssertions:
  1155            - request:
  1156                filters:
  1157                  - user
  1158                object: document:1
  1159                relation: viewer
  1160              context:
  1161                "x": 201
  1162              expectation:
  1163                - user:jon
  1164            - request:
  1165                filters:
  1166                  - user
  1167                object: document:1
  1168                relation: viewer
  1169              context:
  1170                "x": 101
  1171              expectation:
  1172    - name: handles_floats
  1173      stages:
  1174        - model: |
  1175            model
  1176              schema 1.1
  1177  
  1178            type user
  1179  
  1180            type document
  1181              relations
  1182                define viewer: [user with condfloat]
  1183  
  1184            condition condfloat(x: double) {
  1185              x > 0.0
  1186            }
  1187          tuples:
  1188            - object: document:1
  1189              relation: viewer
  1190              user: user:jon
  1191              condition:
  1192                name: condfloat
  1193          checkAssertions:
  1194            - tuple:
  1195                object: document:1
  1196                relation: viewer
  1197                user: user:jon
  1198              context:
  1199                "x": 1.797693134862315708145274237317
  1200              expectation: true
  1201            - tuple:
  1202                object: document:1
  1203                relation: viewer
  1204                user: user:jon
  1205              context:
  1206                "x": -1.797693134862315708145274237317
  1207              expectation: false
  1208            - tuple:
  1209                object: document:1
  1210                relation: viewer
  1211                user: user:jon
  1212              context:
  1213                "x": "1.79769313486231570814527423731704356798070e+309"
  1214              errorCode: 2000
  1215            - tuple:
  1216                object: document:1
  1217                relation: viewer
  1218                user: user:jon
  1219              context:
  1220                "x": "-1.79769313486231570814527423731704356798070e+309"
  1221              errorCode: 2000
  1222            - tuple:
  1223                object: document:1
  1224                relation: viewer
  1225                user: user:jon
  1226              context:
  1227                "x": 1.79769313486231570814527423731704356798070e+309
  1228              errorCode: 2000
  1229            - tuple:
  1230                object: document:1
  1231                relation: viewer
  1232                user: user:jon
  1233              context:
  1234                "x": -1.79769313486231570814527423731704356798070e+309
  1235              errorCode: 2000
  1236          listObjectsAssertions:
  1237            - request:
  1238                user: user:jon
  1239                type: document
  1240                relation: viewer
  1241              context:
  1242                "x": 1.797693134862315708145274237317
  1243              expectation:
  1244               - document:1
  1245            - request:
  1246                user: user:jon
  1247                type: document
  1248                relation: viewer
  1249              context:
  1250                "x": -1.797693134862315708145274237317
  1251              expectation:
  1252            - request:
  1253                user: user:jon
  1254                type: document
  1255                relation: viewer
  1256              context:
  1257                "x": "1.79769313486231570814527423731704356798070e+309"
  1258              errorCode: 2000
  1259            - request:
  1260                user: user:jon
  1261                type: document
  1262                relation: viewer
  1263              context:
  1264                "x": "-1.79769313486231570814527423731704356798070e+309"
  1265              errorCode: 2000
  1266            - request:
  1267                type: document
  1268                relation: viewer
  1269                user: user:jon
  1270              context:
  1271                "x": 1.79769313486231570814527423731704356798070e+309
  1272              errorCode: 2000
  1273            - request:
  1274                type: document
  1275                relation: viewer
  1276                user: user:jon
  1277              context:
  1278                "x": -1.79769313486231570814527423731704356798070e+309
  1279              errorCode: 2000
  1280          listUsersAssertions:
  1281            - request:
  1282                filters:
  1283                  - user
  1284                object: document:1
  1285                relation: viewer
  1286              context:
  1287                "x": "1.79769313486231570814527423731704356798070e+309"
  1288              errorCode: 2000
  1289            - request:
  1290                filters:
  1291                  - user
  1292                object: document:1
  1293                relation: viewer
  1294              context:
  1295                "x": 1.79769313486231570814527423731704356798070e+309
  1296              errorCode: 2000
  1297            - request:
  1298                filters:
  1299                  - user
  1300                object: document:1
  1301                relation: viewer
  1302              context:
  1303                "x": -1.797693134862315708145274237317
  1304              expectation:
  1305            - request:
  1306                filters:
  1307                  - user
  1308                object: document:1
  1309                relation: viewer
  1310              context:
  1311                "x": 1.797693134862315708145274237317
  1312              expectation:
  1313                - user:jon