## Description
This PR adds the spotless formatter and validator for the JSON files
present in the project. If there is any invalid JSON file, the formatter
fails and logs the file and the error LOC to be fixed.
Since Spotless is already added to the pre-commit hook it also makes it
necessary to fix the JSON and then commit the changes.
Screenshot of the errors displayed for Invalid JSONs

### Why is this Important?
All of our datasource forms appear on the UI from the JSON configuration
files in the plugins. If an Invalid JSON is added, it can break the
datasource usage experience for the users.
One such instance happened in the past, where due to a JSON formatting
error, the users could not use Smart Substitution feature on production.
[Reference](https://theappsmith.slack.com/archives/C040LHZN03V/p1721124893238579)
Fixes#34969
## Automation
/ok-to-test tags="@tag.Sanity"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10243164292>
> Commit: 08bc87acd2e44c4a2677d3eed1bad002f991050a
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10243164292&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Mon, 05 Aug 2024 05:50:07 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
## Description
This PR replaces logs added in
[PR](https://github.com/appsmithorg/appsmith/issues/35330) with
System.out.println as log.info does not show up logs on mezmo.
Fixes #`Issue Number`
_or_
Fixes https://github.com/appsmithorg/appsmith/issues/35331
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10193728337>
> Commit: 817f2d09ecf0f74ade574ff07a86703089f9675f
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10193728337&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Datasource`
> Spec:
> <hr>Thu, 01 Aug 2024 07:42:14 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Updated logging approach in the MySqlPlugin to use standard output
instead of the logging framework.
- Maintained the same information output while altering the method of
logging.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
Fixed GraphQL version
## Automation
/ok-to-test tags="@tag.Sanity"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10177151252>
> Commit: 52a3f4ebc0ad3cd169bf1fe8cabd0156ed7a22e4
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10177151252&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Wed, 31 Jul 2024 09:17:29 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [X] No
## Summary by CodeRabbit
- **New Features**
- Updated the GraphQL plugin and server to utilize the latest version
(21.5) of the `graphql-java` library, enhancing functionality and
performance.
- **Bug Fixes**
- Improvements and bug fixes may be included with the update to the
`graphql-java` dependency, potentially improving GraphQL query handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
This PR adds logs around connection pool metrics in order to debug
memory leak issue https://github.com/appsmithorg/appsmith/issues/34028
Following metrics are logged for Get strcuture and Excute query calls:
- Acquired - It indicates number of connections acquired from pool
- Idle - Number of connections sitting idle in the connection pool
- Allocated - Number of connections active / idle in the pool
- Pending - Number of connections pending to be acquired.
This information can help us understand if connections are not being
released from the pool leading to memory leak.
Fixes#35158
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10148654649>
> Commit: 2588f79ed0203bd6943408e421f37159dbdfbc48
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10148654649&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Datasource`
> Spec:
> <hr>Mon, 29 Jul 2024 17:38:32 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced logging capabilities for the MySqlPlugin connection pool
metrics, improving observability during database operations.
- **Bug Fixes**
- Improved monitoring tools to help identify potential memory leak
issues related to connection pool usage.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
When we create snowflake datasource with wrong credentials -> test
configuration/query execution takes about 25 seconds to complete and
then throws generic error message of `Unable to create connection to
snowflake URL`. This error message does not provide any action items for
user.
The reason this generic error message gets thrown is because we had set
`initializationFailTimeout` hikari config property to -1, which means it
will create a datasource object but will not create connection to it.
Only when we do testDatasource, we fetch the hikari datasource object
using `getConnection` method. This method tries to establish connection
to database and keeps trying until it is successful or timeout of 25
seconds is reached, that's why in our case hikari would throw
interrupted during connection acquisition exception after 25 seconds and
on our plugin code, we would wrap this up in a generic error message
mentioned above.
The fix is to remove the code where we are setting this
initializationFailTimeout, the default value for this property is 1ms
and what this is does is, it tries to establish connection with
snowflake db within that 1ms and if it can't it throws
PoolInitializationException along with error message sent by snowflake
jdbc driver itself, thus we can use this message to show it in the UI.
This initialization was set to -1 in
[PR](https://github.com/appsmithorg/appsmith/pull/23270) which we had
fixed for handling wrong credentials.
### Steps to test:
1. Create snowflake datasource with wrong credentials (In both basic and
key pair auth)
2. Test the configuration
3. Save the datasources and execute a query on it (check the error
message)
4. Test #16140
5. Test #22035
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource, @tag.Sanity"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9934985863>
> Commit: 8e21675e47f31ebf846c04dbab40193b571f5273
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9934985863&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Datasource, @tag.Sanity`
> Spec:
> <hr>Mon, 15 Jul 2024 07:27:31 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved connection initialization behavior in the Snowflake plugin,
enhancing startup validations and reliability.
- **Tests**
- Updated and refined test cases for datasource, key pair
authentication, and basic authentication in the Snowflake plugin to
ensure robustness and accuracy.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
This PR adds JUnit test cases for snowflake Key auth pair feature added.
Following cases have been added:
- For basic authentication mechanism, when we do datasource create ->
hikari config should have non empty username and password and datasource
object inside hikari config should be null
- For key pair authentication mechanism with valid private key -> hikari
config should have datasource object which is of type
SnowflakeBasicDatasource and username, password should be null.
- For key pair authentication mechanism with invalid private key ->
error should be thrown with appropriate error message
- For key pair authentication mechanism with valid private key ->
SnowflakeKeyUtils.readEncryptedPrivateKey should return valid instance
of PrivateKey class.
Note: Valid private key generated for above test cases is unencrypted
private key (i.e. without passphrase). Adding test cases with private
key having passphrase was a little complex than anticipated, hence will
create a separate task and tackle it separately.
Fixes#34692
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Perf"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9856542221>
> Commit: 87074a7373ea5cb8a327baaf9c826fdca3c836d6
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9856542221&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Perf`
> Spec:
> <hr>Tue, 09 Jul 2024 12:20:08 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Tests**
- Implemented new tests for key pair authentication with both valid and
invalid private keys.
- Added tests for basic authentication.
- Introduced tests for reading an encrypted private key.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
This PR fixes the intermittent issue in snowflake, where if we import
the app containing snowflake and if we open the datasource it in edit
mode, password field was not there.
Root cause:
When we are on slow 3g and when we don’t wait for datasources to load in
reconnect dialog and quickly go to application, the authentication
object does not get set, which causes snowflake password conditions to
break and it does not show up.
We tried by simulating slow 3g on all environments and were able to
reproduce it
Steps to test:
- We can try importing following app json and simulating slow 3g in
network tab
- Once app is imported, when we see reconnect modal, quickly click on go
to application before the datasources are loaded in the modal
[Snow
issue_aparna.json](https://github.com/user-attachments/files/16107584/Snow.issue_aparna.json)
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Sanity"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9805844586>
> Commit: 9868be55568774565f9c675d8cec92b12eb55d70
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9805844586&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> <hr>Fri, 05 Jul 2024 09:38:19 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced a new comparison operation `DEFINED_AND_NOT_EQUALS` for
form controls.
- **Bug Fixes**
- Updated the Snowflake plugin to use `DEFINED_AND_NOT_EQUALS` for
better validation of authentication type configurations.
- **Improvements**
- Enhanced form control logic to support more precise comparison checks.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
This PR adds backwards compatibility for older snowflake datasources so
that we wont need migration.
With new updates on snowflake plugin for key pair authentication, we
have introduced a new field in authentication object called
authenticationType, this field is responsible for telling us whether
it's a basic authentication or key pair authentication. For older
datasources, this field wont be there, so in order to ensure that those
datasource continue to work smoothly, we have added a fallback
mechanism, where if any datasource does not have authentication field,
it will be considered as basic auth and we will set its properties
accordingly. This PR adds that support
### Steps to test:
1. Create a snowflake datasource along with queries on app.appsmith.com
2. Attach these queries to table widget so they run on page load
3. Export this app and get json
4. Import this json on the DP of this PR, the queries should work
Fixes#34627
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9759249212>
> Commit: f68972710918b450d989c1d28a9286a397fc08bd
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9759249212&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Datasource`
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Enhanced backward compatibility for Snowflake plugins by handling
cases where `authenticationType` is not present in older datasources.
- **New Features**
- Improved datasource configuration by cleaning the authentication
object in the `DatasourcesApi`.
- **Refactor**
- Simplified authentication type handling by removing unused
`USERNAME_PASSWORD` and `KEY_PAIR` enums in `DBAuth`.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
This PR adds new authentication method for snowflake: Use of public and
private keys to authorise a snowflake database.
Snowflake provides a couple of authentication mechanisms in order to
authenticate the DB. Currently appsmith only provides a way to authorise
using username and password. This PR adds support for private key
authentication, where by user can set a public key on their DB and they
can use corresponding private key in appsmith to authorise the
datasource.
In snowflake DB form, we have added a new field for authentication type
which has two options: Basic and Key pair. Basic will allows us to
authenticate using username and password. Key pair will provide us a way
to upload the private key along with input field for adding passphrase
(In case of encrypted private key).
More info: https://docs.snowflake.com/en/user-guide/key-pair-authhttps://github.com/appsmithorg/appsmith/assets/30018882/99774925-12a3-4cc0-af0a-614c3574cdc3
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9743830603>
> Commit: cb64fffc9e181558525e020a4597b616eeacea7a
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9743830603&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Datasource`
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced Snowflake integration with improved connection creation and
authentication handling (key pair and basic auth types).
- **Bug Fixes**
- Fixed issues related to handling authentication objects within
datasource configuration to ensure more reliable connections.
- **Documentation**
- Added new error messages for passphrase requirements and incorrect
passphrase or private key for encrypted private keys.
- **Tests**
- Updated tests to verify the correct setting of authentication types in
the Snowflake plugin.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com>
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
Add gpt-4o model in Open AI datasource's vision and chat commands
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9541802412>
> Commit: 78eb94443c7e8ed5396f6e3369aac1e5373954bc
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9541802412&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: ``
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced `VisionCommand` to support new model naming conventions,
including `gpt-4-vision-preview` and `gpt-4o`.
- **Bug Fixes**
- Improved message content handling in `transformUserMessages` and
`transformSystemMessages` methods to ensure proper data type casting.
- **Tests**
- Updated test cases to align with the new model name `gpt-4o`, ensuring
accurate test coverage.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Nirmal Sarswat <nirmal@appsmith.com>
## Description
- Add encoding for Api key secret value before storing it as query param
to avoid incorrect parsing.
- Remove hardcoded "api_key" check to mask headers.
- Used standard URL parsing APIs instead of custom
- Added unit test to cover the case
Fixes https://github.com/appsmithorg/appsmith/issues/33742
flaws in the implementation
[here](https://github.com/appsmithorg/appsmith/pull/33528)
## Automation
/test datasource
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> 🟣🟣🟣 Your tests are running.
> Tests running at:
<https://github.com/appsmithorg/appsmith/actions/runs/9256269257>
> Commit: 602b0f599ff17ac7530b25336eae6a0523c90977
> Workflow: `PR Automation test suite`
> Tags: `@tag.Datasource`
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
Fixes#30009
### Summary:
This PR addresses the issue of masking sensitive information in query
parameters or headers based on the authentication type selected by the
user. The changes ensure that sensitive data is properly masked before
sending back as response.
### Changes:
- RequestCaptureFilter.java
Added logic to check the authentication type and mask the appropriate
query parameters or headers.
### Testing:
Verified that the masking functionality works as expected for API_KEY
authentication types.
## Automation
/test datasource
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9203547387>
> Commit: 9a7fc9cc1942ddc61c54f6ae9451706ad527f49c
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9203547387&attempt=2"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Bumps com.amazon.redshift:redshift-jdbc42 from 2.1.0.9 to 2.1.0.28.
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).
</details>
/ok-to-test tags="@tag.Datasource, @tag.Sanity"
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9107004323>
> Commit: e46f58b2bf47823730d8dcc496bf43dc53f20fee
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9107004323&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Description
If we use REST API action and file picker widget to upload any
multimedia files (image, audio, video, pdf, xlsx), The file upload would
be successful but file would get corrupted upon uploading. This was
happening because file picker widget encodes this file to base64 format,
and we were uploading this same base64 string using REST API url.
Instead we should have decoded this base64 and then uploaded the file to
retain the original contents of the file.
This PR fixes that issue by adding a new tab in body of the REST API
action called `binary`, once we select this tab, we get autogenerated
header for `Content-Type: application/octet-stream`, in this binary
input field we can then provide base64 encoded file contents, the server
then decodes the contents before triggering the respective REST API and
uploading the file.
### Steps to test the issue
1. Add a file picker widget on canvas
2. Select data format as `Base64`
3. Upload any of pdf, image, audio, video, xlsx in file picker
4. Create a REST API action using [Dropbox upload
API](https://www.dropbox.com/developers/documentation/http/documentation#files-upload)
5. Configure the API headers as mentioned in the documentation, also
configure file name in the header correctly
6. Go to body tab, select binary and file contents in input box using
binding like {{Filepicker1.files[0].data}}
7. Execute this API
8. Now go to your dropbox account and check the uploaded file, you
should be able to successfully preview it
Fixes#32378
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8844375718>
> Commit: 3316290a4d7d77ae3f9d8969245c5f470ef1ab5c
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8844375718&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added support for binary file uploads in API requests, including
handling of base64-encoded files.
- Expanded content type options to include a new "BINARY" type for API
requests.
- **Tests**
- Implemented new tests to verify the functionality of binary file
uploads with dynamic data binding.
- **Bug Fixes**
- Ensured correct handling and auto-generation of headers for binary
file types and form urlencoded data formats.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
As per the documentation the where clause must always come before the
order by clause, and the startAfter clause must come after the order by
clause i.e the recommended order : `where clause --> order by --> start
after`. However, the way code was written it applies the where clause
after the startAfter i.e as per the code : `order by --> start after -->
where clause` .
In this PR, we change the logic to make sure we follow the order `where
clause -> order by and startAfter / endBefore` when generating query.
Fixes https://github.com/appsmithorg/appsmith/issues/32604
documentation link. -
https://firebase.google.com/docs/firestore/query-data/query-cursors
Changes were taken from the PR created by @sumitsum here
https://github.com/appsmithorg/appsmith-ee/pull/4001
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8814737910>
> Commit: 4c7ed97cc1808a537d40682fc0e930cd0e30be70
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8814737910&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Refactor**
- Improved the order of operations in Firestore queries to enhance query
performance and reliability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This changes to publish TED's canonical app port, `4200`.
What's wrong with the currently used ports?
57f63003ef/app/app.ts (L18-L20)
Quoting here:
> 8000, // Past static webserver port, to be removed, after switching to
4200, clashes with CloudServices on CI.
> 5000, // Past Postgraphile port, to be removed, after switching to
4200, clashes with macOS AirDrop.
> 3000, // Past Gitea port, to be removed, after removing Gitea, because
it clashes with `yarn start` in Appsmith.
/ok-to-test tags="@tag.Sanity"
## Description
This PR resolved issue with graphQL, where if we create a graphQL with a
binding and run such query, it returns with error response saying the
query execution has timed out. A user had raised this issue
[here](https://discord.com/channels/725602949748752515/1230134890704539709).
### Root cause:
The issue was not at all reproducible on local, but It was continuously
erroring out on production, release and even DPs. From the logs, we can
see that issue was with `GraphQLDataTypeUtils.java` class. This class
was somehow not getting initialised. This was due to recent changes made
in [PR](https://github.com/appsmithorg/appsmith/pull/32595), where the
version for package was updated to v2.17.0, on local it was compiling
properly but on release, production and other builds, it still seems to
be referencing to the older version of it, we do not know the reason of
it right now, we should further investigate this. But since this was a
critical issue and we need to get user unblocked, we are going ahead
with an alternate fix where we have moved the initialisation of
objectMapper to serialisationUtils.java file.

### Steps to reproduce the issue:
1. Drag and drop a text widget on canvas, change text value to `US`
2. Create a new graphQL query with url as
`https://countries.trevorblades.com/`
3. Add following in the query body and execute the API
```
{
country(code: {{Text1.text}}) {
name
}
}
```
Fixes#32748
_or_
Fixes [`Issue
URL`](https://github.com/appsmithorg/appsmith/issues/32748)
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8735651316>
> Commit: a03f29f8078398a4c317e852667270c0810bddea
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8735651316&attempt=2"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Refactor**
- Updated serialization configuration across various data types and
plugins to enhance functionality and compatibility using a centralized
utility method.
- **New Features**
- Introduced a new method to standardize object mapper configurations,
improving serialization processes across the application.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
Adding new vision models support in Anthropic
<img width="1134" alt="Screenshot 2024-04-12 at 15 59 06"
src="https://github.com/appsmithorg/appsmith/assets/25587962/49110b9d-00ee-4210-9d43-bf2a832aee20">
Fixes https://github.com/appsmithorg/appsmith-ee/issues/3681
## Automation
/ok-to-test tags="@tag.Datasources"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!CAUTION]
> 🔴🔴🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8704175377>
> Commit: 2c393e7ffaf3d08fd8e945761206de76d3a13845
> Cypress dashboard: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8704175377&attempt=3&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank"> Click here!</a>
> The following are new failures, please fix them before merging the PR:
<ol>
> <li>cypress/e2e/Regression/ServerSide/GenerateCRUD/MySQL2_Spec.ts
</ol>
> To know the list of identified flaky tests - <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">Refer here</a>
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced chat functionality with version upgrade and refined message
creation process.
- Added vision-related commands for handling image and text data in the
Anthropic plugin.
- Expanded constants to support new messaging and vision features.
- Introduced new fields in request models to support system prompts and
messages, while deprecating older fields.
- Implemented a `VisionCommand` in method strategy for better handling
of vision tasks.
- Improved utility functions for message handling and configuration
value extraction.
- **Refactor**
- Streamlined request URI construction to support new vision
functionality alongside chat commands.
- Removed unused constants and methods to clean up the codebase.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Fixes build warnings like these:
```
Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.
```
Why is this important?
1. Warnings are always a worse thing than errors, because they only fail
at runtime. And this is quite a significant warning, so should be fixed.
2. This _incorrect_ `equals` method screws up Hibernate's dirty checking
when working with Postgres.
/ok-to-test tags="@tag.Sanity"<!-- This is an auto-generated comment:
Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8679350830>
> Commit: 4f697fc3f9431fcfd35fc0f9814fce763382d06c
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8679350830&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Refactor**
- Enhanced data consistency across various models by ensuring that
equality and hash code calculations now consider superclass fields.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
MySQL datasource config has a field called `Connection mode`, which
allows users to configure their datasource either in read write / read
only mode. This is supposed to block the write queries if datasource is
configured with read only mode, but with current implementation, it does
not block, it lets us execute write query.
On checking the codebase, it seems that this field is not at all being
used in mySQL plugin to configure the datasource, further more mysql
driver used may not even support configuring connection mode as of now,
hence as preventive solution, hiding the connection mode form config for
now.
Fixes https://github.com/appsmithorg/appsmith/issues/9941
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8612888064>
> Commit: `0a0d20e1fb40546e635ba018704b5f13ecc97ab1`
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8612888064&attempt=1"
target="_blank">Click here!</a>
> All cypress tests have passed 🎉🎉🎉
<!-- end of auto-generated comment: Cypress test results -->
---------
Co-authored-by: “sneha122” <“sneha@appsmith.com”>
## Description
> This PR prevents the lowercasing of the URI for the plugins. The URI
is now preserved in the same form that the user has added.
Fixes#32145
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8592797453>
> Commit: `f6dcdc85a4aafdd3329bf7b9de3fa04e583ec340`
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8592797453&attempt=1"
target="_blank">Click here!</a>
> All cypress tests have passed 🎉🎉🎉
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Fixed an issue with option processing by retaining the original case
of keys, ensuring accurate data handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Form config changes for the PG datasource to support reading certs from
user
Fixes#31400
## Automation
/ok-to-test tags="tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8538007537>
> Commit: `0fb57fe78e973db8a3df5f2e407b85eef4adb4e2`
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8538007537&attempt=1"
target="_blank">Click here!</a>
> All cypress tests have passed 🎉🎉🎉
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced SSL configuration options for database connections, including
support for client and server CA certificate files.
- **Refactor**
- Improved handling and encoding of SSL certificate content for database
connections, ensuring compatibility and security.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com>
## Description
Fixes https://github.com/appsmithorg/appsmith/issues/32045
## Automation
/ok-to-test tags="@tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8432564141>
> Commit: `120b0d79d5c4139a92bba228bdcb476cf1f7710c`
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8432564141&attempt=1"
target="_blank">Click here!</a>
> All cypress tests have passed 🎉🎉🎉
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Documentation**
- Updated information text related to using Prepared Statements in
queries, emphasizing the prevention of SQL injections and highlighting
limitations on dynamic bindings.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Created a pre delete hook to delete datasource files on Appsmith AI
server when datasource is deleted in Appsmith instance.
#### PR fixes following issue(s)
Fixes https://github.com/appsmithorg/appsmith-ee/issues/3617
#### How Has This Been Tested?
- [x] Manual
## Automation
/ok-to-test tags="@tag.Datasource"
## Checklist:
#### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced a new method `preDeleteHook` in the `PluginExecutor`
interface to serve as a hook after deleting a datasource.
- Added a new method `disassociateDatasource` in the AI plugin to notify
the AI server about datasource deletion and provide file context if
available.
- **Refactor**
- Enhanced the AI plugin by refactoring methods to use a new
`createAssociateDTO` method for generating `AssociateDTO` instances,
improving code readability and maintainability.
- **Chores**
- Updated the `archiveById` method in DatasourceServiceCEImpl to include
a `flatMap` operation that triggers a `preDeleteHook` method on the
plugin executor before archiving the datasource. Also added a new
private method `findPluginExecutor` for retrieving the plugin executor.
<!-- end of auto-generated comment: release notes by coderabbit.ai
--><!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8338230830>
> Commit: `800915ea99c93663af34d08e8bcf4a14ad1356d0`
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8338230830&attempt=2"
target="_blank">Click here!</a>
> All cypress tests have passed 🎉🎉🎉
<!-- end of auto-generated comment: Cypress test results -->
This is to abide by the Databricks standard practice which expects the
user agent tag to be set automatically and shouldnt be configurable by
end user (in this case developers creating datasources on top of
Databricks). The user agent tag would be set to Appsmith.
## Description
Handling unexpected errors in trigger requests in Appsmith AI plugin
#### PR fixes following issue(s)
Fixes #
#### Type of change
- Bug fix (non-breaking change which fixes an issue)
#### How Has This Been Tested?
- [x] Manual
## Automation
/ok-to-test tags="@tag.Datasource"
## Checklist:
#### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved error handling for file uploading and listing to enhance
stability and user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai
--><!-- This is an auto-generated comment: Cypress test results -->
> [!IMPORTANT]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8245477758>
> Commit: `8a36d1b0216f86c18ebee541fbad2fec9e66dfb9`
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8245477758&attempt=1"
target="_blank">Click here!</a>
> All cypress tests have passed 🎉🎉🎉
<!-- end of auto-generated comment: Cypress test results -->
This PR fixes all uses of double brace initialization, with ordinary
normal code.
It is usually advised to avoid Double brace initialization, especially
for building collections as it can cause very hard-to-troubleshoot bugs
with systems that use reflection a lot, like Spring, Hibernate, Jackson,
etc.
Almost every Java linter out there recommends to avoid this.
This can be configured in IntelliJ to show up as an error with the
following configuration. Please **please** do this.

## Description
Mutual TLS, or mTLS for short, is a method for mutual authentication.
mTLS ensures that the parties at each end of a network connection are
who they claim to be by verifying that they both have the correct
private key.
This PR adds support for mTLS for postgres datasource. Unlike the
standard way of storing the certs in disk, we store them in the
database. This has been achieved via the custom implementation of SSL
Factory. The postgres driver support passing the custom ssl factory
while creating connection, which then will be used for handling and
establishing the connection.
#### PR fixes following issue(s)
Fixes#31326
#### Type of change
- New feature (non-breaking change which adds functionality)
## Testing
#### How Has This Been Tested?
- [ ] Manual
#### Test Plan
> Add Testsmith test cases links that relate to this PR
>
>
#### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
>
>
>
## Checklist:
#### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced the Postgres plugin to support SSL certificate validation for
secure database connections. Users can now select between `VERIFY_CA`
and `VERIFY_FULL` modes for SSL verification, ensuring a higher level of
security for database communications.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
PR adds assertj to the plugin modules as well so we can write better
assertions there. We're changing just one test, but to illustrate as an
example.
With the previous assertion used here, failure messages looked like
this:
```
Expected <true>, but got <false>.
```
But with the better assertions introduced in this PR, we should see
something like:
```
Expected `Random unexpected string` to end with `Host not allowed.`
```
Which should help us much better in troubleshooting.
This reverts commit 5647916478.
This seems to have broken our ability to re-run failed tests on server
workflow. We'll bring the changes back after we figure out how to not
lose that capability.
QueryDSL will be replaced with Lombok's `FieldNameConstants` here. Why?
1. QueryDSL with JPA on relational databases doesn't lend itself very
well to nested data structures. But with MongoDB, it works quite well.
So we've come to rely on it quite a bit. Since we intend to move towards
a more flat, relation-ed and normalized DB design once we get to
Postgres, dealing with nested data structures should be seen as
temporary.
2. We only use QueryDSL for field name constants, and absolutely nothing
else. QueryDSL is a far more capable and powerful system, and is
overkill for this purpose. Lombok's annotation is exactly tuned for this
purpose and is more concise and easy-to-use.
3. QueryDSL query generation current doesn't work in IntelliJ, but
Lombok's does. So this will free us up from having to run a Maven build
when sometimes switching branches.
**PS**: This PR doesn't remove QueryDSL entirely. Only a part of it.
That'd become a much bigger PR and I'm already uncomfortable with the
size of this PR. Once this is merged, I'll open further PRs until we
completely remove QueryDSL.
**PPS**: QueryDSL is a powerful querying mechanism that we don't use
today. Perhaps once we're comfortable with Postgres in the future, we
will very likely revisit.