--- title: "Test Your Application" url: https://docs.catalyst.zoho.com/en/tutorials/photo-store-app/nodejs/test-app/ description: "Build a React gallery app to upload images to a bucket in Stratus, and shre these images with other registered users. Host the app on AppSail and sync with GitHub and deploy the app usiong Pipelines." last_updated: 2026-08-17T12:16:04Z service: All Services type: tutorial related_links: - name: "Catalyst Stratus" url: /en/cloud-scale/help/stratus/introduction/ - name: "CLI Serve Resources" url: /en/cli/v1/serve-resources/introduction/ - name: "Stratus Web SDK" url: /en/sdk/web/v4/cloud-scale/stratus/overview/ - name: "Stratus REST API" url: /en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets --- # Test Your Application Before you deploy the application to the remote console, you can [test the application](https://docs.catalyst.zoho.com/en/cli/v1/serve-resources/introduction/) on a local server and check if everything works using the Catalyst CLI. To serve the Catalyst project locally, execute the following command from your project directory: ```sh catalyst serve ``` The application will be ideally served on the default port `3001`. ![catalyst_tutorials_photostore_stratus_catalyst_serve](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_catalyst_serve.webp) > **Note:** Every time you access the home page or any of the sub-pages of your application, the CLI will display a live log of the URL accessed, along with the HTTP request method. ![catalyst_tutorials_photostore_stratus_catalyst_serve_init_2](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_catalyst_serve_init_2.webp) > **Note:** Ensure that you have whitelisted your localhost URL using the Bucket CORS feature as demonstrated in [this step](https://docs.catalyst.zoho.com/en/tutorials/photo-store-app/nodejs/config-appsail/#enable-bucket-cors). You can now open the application’s localhost URL in a browser to access the PhotoStoreApp application. ![catalyst_tutorials_photostore_stratus_pipelines_serve_cli__browser](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_pipelines_serve_cli__browser.webp) ### Test Case 1: Login Functionality The first page of the application will be the Login screen. ![catalyst_tutorials_photostore_stratus_login_screen](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_login_screen.webp) Once you complete the login process, you will be added to the application, and be able to access all the applications' functionality. ![catalyst_tutorials_photostore_stratus_login_logged_on](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_login_logged_on.webp) You can manage end-user sign ups using the [**User Management**](https://docs.catalyst.zoho.com/en/cloud-scale/help/authentication/user-management/introduction/) feature present in the *Authentication* component. ![catalyst_tutorials_photostore_stratus_auth_user_mgmt](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_auth_user_mgmt.webp) ### Test Case 2: Upload Functionality You can try uploading an image from your local system to the application by clicking the **Upload** button. ![catalyst_tutorials_photostore_stratus_upload_hihg](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_upload_hihg.webp) Click **Upload** once you've chosen a file from your local system. ![catalyst_tutorials_photostore_stratus_upload_pic](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_upload_pic.webp) The image will be uploaded to the bucket and rendered in the application. ![catalyst_tutorials_photostore_stratus_uploaded_func](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_uploaded_func.webp) You can verify the upload in the bucket. ![catalyst_tutorials_photostore_stratus_objects_page](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_objects_page.webp) To view the object, you can either click the **Goto Preview** button or you can execute **Object URL** to view the object. ![catalyst_tutorials_photostore_stratus_objects_objctURL](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_objects_objctURL.webp) ### Test Case 3: View Functionality You can click the **hamburger menu** icon to view the uploaded images in the list view. ![catalyst_tutorials_photostore_stratus_list_view](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_list_view.webp) You can use the **hamburger-icon** again to switch the view back to thumbnails. ![catalyst_tutorials_photostore_stratus_thumbnail_view](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_thumbnail_view.webp) You can also click the required image to view it in its original size. ![catalyst_tutorials_photostore_stratus_og_view](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_og_view.webp) ### Test Case 4: Delete and Download Functionality You have the option to download or delete an uploaded image. To delete an image, you can click the **delete icon** in *list view* or click the **ellipsis icon** and click **Delete** in the *thumbnail view*. ![catalyst_tutorials_photostore_stratus_del_view](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_del_view.webp) The image will be deleted. ![catalyst_tutorials_photostore_stratus_del_cmpltd](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_del_cmpltd.webp) Similarly, to download an image, you can click the **download icon** in *list view* or click the **ellipsis icon** and click **Download** in the *thumbnail view*. ![catalyst_tutorials_photostore_stratus_download_sel](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_download_sel.webp) The required image will be downloaded to your local system. ![catalyst_tutorials_photostore_stratus_downloaded_cmpltd](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_downloaded_cmpltd.webp) ### Test Case 5: Share Functionality You can choose to share images with other registered end-users. Click the **share** icon to share your required image with other registered end-users. ![catalyst_tutorials_photostore_stratus_share_func](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_share_func.webp) You can also choose to share the image with the registered user in **View** or **Edit** access. ![catalyst_tutorials_photostore_stratus_share_func_permis](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_share_func_permis.webp) **View Access** will only allow the end-user to download the image. **Edit Access** allows the end-user to update, delete and download the image. Once you've shared an image to the end-user the end-user will be able to view the shared image in their Shared **Gallery**. ![catalyst_tutorials_photostore_stratus_shared_gallery](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_shared_gallery.webp) You can use the **Manage Shared Details** section to update access level of images. ![catalyst_tutorials_photostore_stratus_share_func_accesses](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_share_func_accesses.webp) Use the **Access Type** drop-down to update the access level for the required image and click **Update** to render the changes. ![catalyst_tutorials_photostore_stratus_share_update_access](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_share_update_access.webp) You can also use the **Revoke Access** toggle and click **Update** to remove all access to the required image. ![catalyst_tutorials_photostore_stratus_share_revoke_access](https://catalyst-docs-development.zohostratus.in/images/tutorials/photo-store/catalyst_tutorials_photostore_stratus_share_revoke_access.webp) The shared user will no longer be able to view the previously shared image. If the application is working as defined in this page, then you can deploy the application.