TypeError when using keyword replacement with database enabled clients
snorfalorpagus opened this issue · 3 comments
Checklist
- I have looked into the README and have not found a suitable solution or answer.
- I have looked into the documentation and have not found a suitable solution or answer.
- I have searched the issues and have not found a suitable solution or answer.
- I have upgraded to the latest version of this tool and the issue still persists.
- I have searched the Auth0 Community forums and have not found a suitable solution or answer.
- I agree to the terms within the Auth0 Code of Conduct.
Description
I’m trying to implement keyword replacement 1 to allow me to manage our development and production tenants. It’s working as expected, but I’m getting an error when I try to use it for the enabled_clients attribute on a username/password database connection. The goal is to enable it for some applications in development, but not in production.
Originally posted in the community forum: https://community.auth0.com/t/typeerror-when-using-keyword-replacement-with-database-enabled-clients/139339/2
Expectation
If I enable debug output when running a0deploy export I see the following:
2024-07-19T16:10:14.369Z - debug: TypeError: (enabledClients || []).map is not a function or its return value is not iterable
Using the same technique for another attribute in the file (e.g. realms) works as expected.
Have I made some mistake in the syntax? Or is this a bug in the CLI?
Reproduction
My config looks like this:
"AUTH0_KEYWORD_REPLACE_MAPPINGS": {
"DATABASE_CONNECTIONS_USERNAME_PASSWORD_ENABLED_CLIENTS": [
"AnApplication",
"AnotherApplication"
],
}
with a replacement like:
"enabled_clients": "@@DATABASE_CONNECTIONS_USERNAME_PASSWORD_ENABLED_CLIENTS@@"
Deploy CLI version
7.23.1
Node version
18.20.4
I think I've identified the bug. It's specific to using keyword preservation for the enabled_clients
attribute. mapClientID2NameSorted
is being called with the unsubstituted value (i.e. `"@@...@@") as a string instead of a list of strings. I suppose this isn't a problem for other attributes as they don't have any processing like this.
@willvedd it looks like you added the keyword preservation feature. Do you have any thoughts on what a fix for this would look like? I'm able to help with code but don't have a full model in my head of how everything connects together yet.
@snorfalorpagus Thanks for opening this ticket; especially appreciate your insight on the issue.
It seems like keyword preservation running before the database dum operation creates the issue due to client_id and client name mismatch.
Feel free to submit a PR 🙏.