sdk-generator icon indicating copy to clipboard operation
sdk-generator copied to clipboard

js-sdk: Batch check does not preserve output order

Open a0js opened this issue 10 months ago • 1 comments

Checklist

  • [X] I have looked into the README and have not found a suitable solution or answer.
  • [X] I have looked into the documentation and have not found a suitable solution or answer.
  • [X] I have searched the issues and have not found a suitable solution or answer.
  • [X] I have searched the Slack Community and have not found a suitable solution or answer.
  • [X] I agree to the terms within the OpenFGA Code of Conduct.

Description

When using the batch check functionality in the js-sdk, the check results are not returned in the same order as the input. Based on what I've found in the python sdk, the order is preserved.

Expectation

I would expect when an array is provided as input, and the expected output is an array of equal length, order should be preserved.

Reproduction

Run the following:

const { OpenFgaClient } = require('@openfga/sdk');
const assert = require('assert');
const util = require('util');

const fgaClient = new OpenFgaClient({apiUrl: "https://api.playground.fga.dev", storeId: "01HVW8AJAT069Y9M1FZDKV6SP0", authorizationModelId: "01HVW8C9JP1XS2ZZG614S8KH47"});

async function test() {
	const checks = [
	{
		user: "user:1",
		relation: "test",
		object: "object:2"
	},
		{
		user: "user:1",
		relation: "test",
		object: "object:2",
		contextualTuples: [{
			user: "user:1",
			relation: "test",
			object: "object:2"
		}]
	},
		{
		user: "user:1",
		relation: "test",
		object: "object:1"
		}
	];


	const results = await fgaClient.batchCheck(checks);
	console.log(util.inspect(results, false, null, true));

	assert.deepEqual(results.responses[0]._request, checks[0]);
	assert.deepEqual(results.responses[1]._request, checks[1]);
	assert.deepEqual(results.responses[2]._request, checks[2]);
}

test();

This hits this model: https://play.fga.dev/sandbox/?store=js-sdk-batch-ordering

SDK Checklist

  • [X] JS SDK
  • [ ] Go SDK
  • [ ] .NET SDK
  • [ ] Python SDK
  • [ ] Java SDK

OpenFGA SDK version

0.3.5

OpenFGA version

any

SDK Configuration

any

Logs

No response

References

This issue seems to be related to the cause https://github.com/rxaviers/async-pool/issues/47

a0js avatar Apr 19 '24 23:04 a0js