Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Mock Data provider for API Testing #496

Open
varshil-shah opened this issue Nov 9, 2024 · 12 comments · May be fixed by #777
Open

Implement Mock Data provider for API Testing #496

varshil-shah opened this issue Nov 9, 2024 · 12 comments · May be fixed by #777
Labels
priority: low Low priority issue

Comments

@varshil-shah
Copy link

varshil-shah commented Nov 9, 2024

Implement Mock Data provider for API Testing

Description

Currently, when testing API endpoints in the API Dash repository, users must manually enter or modify details such as email, username, and other user-specific information. This manual effort can be tedious and error-prone, especially during repeated testing. To streamline this process, we propose implementing a feature that generates random placeholder values for common fields like email, username, etc.

Feature Details

Introduce a set of predefined random data variables (e.g., {{$randomEmail}}, {{$randomUsername}}) that can be used in the API requests. These placeholders will automatically populate with randomized data when the API is called, allowing testers to quickly simulate unique user details without manual input.

Benefits

  • Increased Efficiency: Simplifies testing by automating data entry, reducing repetitive manual work.
  • Consistency: Standardizes testing by providing consistent random values across sessions.
  • Enhanced User Experience: Enables faster and more reliable API testing workflows.

Implementation Suggestions

  1. Define random generators for various data types (e.g., email, username, numeric ID).
  2. Update the API to recognize and replace variables like {{$randomEmail}} with generated values.
  3. Ensure variables can be used across multiple endpoints, maintaining flexibility and ease of use.

This feature will greatly enhance developer productivity and provide a more seamless testing experience in the API Dash environment.

@varshil-shah varshil-shah added the enhancement New feature or request label Nov 9, 2024
@varshil-shah
Copy link
Author

Can I work on this issue???

@ashitaprasad
Copy link
Member

You can mention the below details in this thread:

  1. Where are you planning to add this feature in the UI? How will the user know this feature is available ?
  2. List of random data you will provide - how will you provide it? what package will you use?
  3. We already have environment variables .. will you leverage it?

@ashitaprasad ashitaprasad changed the title Implement Random Data Generator for API Dash Repository Implement Mock Data Generator for API Testing Nov 9, 2024
@ashitaprasad ashitaprasad changed the title Implement Mock Data Generator for API Testing Implement Mock Data provider for API Testing Nov 9, 2024
@varshil-shah
Copy link
Author

Implementation Details

  • UI Addition:
    This feature will be accessible within the request body editor. Users can invoke it by typing {{ (double curly brackets), which will reveal the list of available random placeholders.

  • Random Data Types:
    Initial options will include random values for email, username, names, and potentially others. The faker package in Flutter will be used to generate this data without needing to modify environment variables.

  • Package Used:
    I will utilize the faker package for Flutter to generate these random values.

  • Environment Variables:
    No need to leverage environment variables for this feature, as the faker package provides sufficient randomness for testing purposes.

@ashitaprasad
Copy link
Member

As you are a first time contributor to this project, I recommend you to pick up an open issue first and resolve it to get familiar with the codebase, before working on adding this completely new feature.

@ashitaprasad ashitaprasad added the priority: low Low priority issue label Nov 9, 2024
@varshil-shah
Copy link
Author

Alright, Thanks for your response.

@abhinavs1920
Copy link
Contributor

First, I’ll identify where user inputs (like email or username) are injected into requests. Then, I’ll create small utility functions to generate random values for common fields (e.g., randomEmail() could combine random strings with @test.com).

Next, I’ll update the request-handling logic to detect placeholders like {{$randomEmail}} in API payloads. Using regex or string replacement, I’ll swap these placeholders with the outputs of the corresponding utility functions just before sending the request.

I’ll ensure this replacement works for all endpoints, nested JSON structures, and repeated fields. To keep it lightweight, I’ll avoid external libraries and stick to simple, APIDash core functionalities,

@ashitaprasad @animator @DenserMeerkat

Please provide me feedback for my approach!

@animator
Copy link
Member

animator commented Apr 4, 2025

@abhinavs1920 think how you can leverage some concept similar to env variables for this feature.

@abhinavs1920
Copy link
Contributor

@abhinavs1920 think how you can leverage some concept similar to env variables for this feature.

I'll use APIDash's current environment variables feature that is very well implemented. I'll add a new section called 'Random Generators' where testers can use special tags like {{$randomEmail}} in their API requests (Or we can use some flag to identify if they are the dummy value placeholders or not). When someone runs the request, the system will automatically replace these tags with fresh random values.

First, I'll update the code to check for these {{$...}} tags after handling normal environment variables. Simple functions will generate the random data. The UI will show examples so testers understand how to use {{$randomUsername}} or {{$randomId}} without confusion(extension of feature). This way I can use the existing implementation.

@animator
Copy link
Member

animator commented Apr 5, 2025

@abhinavs1920 think how you can leverage some concept similar to env variables for this feature.

I'll use APIDash's current environment variables feature that is very well implemented. I'll add a new section called 'Random Generators' where testers can use special tags like {{$randomEmail}} in their API requests (Or we can use some flag to identify if they are the dummy value placeholders or not). When someone runs the request, the system will automatically replace these tags with fresh random values.

First, I'll update the code to check for these {{$...}} tags after handling normal environment variables. Simple functions will generate the random data. The UI will show examples so testers understand how to use {{$randomUsername}} or {{$randomId}} without confusion(extension of feature). This way I can use the existing implementation.

Random Generators => Fake Data Providers

very nice idea.

@abhinavs1920
Copy link
Contributor

@animator
Thanks! Shall I move forward with the implementation I mentioned?

Keeping in mind Fake Data Providers

@animator
Copy link
Member

animator commented Apr 5, 2025

@abhinavs1920 Yes you can proceed 👍

@abhinavs1920
Copy link
Contributor

@animator
I have implemented the Fake Data Providers Pane this way, let me know the changes required.

Image

@abhinavs1920 abhinavs1920 linked a pull request Apr 6, 2025 that will close this issue
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: low Low priority issue
Projects
None yet
4 participants