├── 2022 └── README.md ├── 2023 └── README.md ├── 2024 └── README.md ├── 2025 └── README.md ├── .github ├── ISSUE_TEMPLATE │ ├── --bug-report.yaml │ ├── --feature-request.yaml │ └── config.yml ├── License-Apache_2.0-blue.svg └── slack.svg ├── .gitignore ├── .idea ├── .gitignore ├── gsoc.iml ├── modules.xml └── vcs.xml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── GSoD 2023 └── Readme.md ├── LICENSE ├── MENTOR-GUIDE.md ├── PROPOSAL-GUIDE.md ├── README.md ├── SECURITY.md └── assets ├── issue.svg └── pr.svg /.github/ISSUE_TEMPLATE/--bug-report.yaml: -------------------------------------------------------------------------------- 1 | name: Bug report 2 | description: Create a bug report to help us improve Keploy 3 | title: "[bug]: " 4 | labels: [bug] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thank you for taking the time to fill out this bug report. 10 | - type: checkboxes 11 | attributes: 12 | label: Is there an existing issue for this? 13 | description: Please search to see if an issue already exists for the bug you encountered 14 | options: 15 | - label: I have searched the existing issues 16 | required: true 17 | - type: textarea 18 | attributes: 19 | label: Current behavior 20 | description: A concise description of what you're experiencing and what you expect 21 | placeholder: | 22 | When I do , happens and I see the error message attached below: 23 | ```...``` 24 | What I expect is 25 | validations: 26 | required: true 27 | - type: textarea 28 | attributes: 29 | label: Steps to reproduce 30 | description: Add steps to reproduce this behaviour, include console or network logs and screenshots 31 | placeholder: | 32 | 1. Go to '...' 33 | 2. Click on '....' 34 | 3. Scroll down to '....' 35 | 4. See error 36 | validations: 37 | required: true 38 | - type: dropdown 39 | id: env 40 | attributes: 41 | label: Environment 42 | options: 43 | - Production 44 | - Release 45 | - Deploy preview 46 | validations: 47 | required: false 48 | - type: dropdown 49 | id: version 50 | attributes: 51 | label: Version 52 | options: 53 | - Cloud 54 | - Self-hosted 55 | - Local 56 | validations: 57 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/--feature-request.yaml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: Suggest a feature to improve Keploy 3 | title: "[feature]: " 4 | labels: [feature] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thank you for taking the time to request a feature for Keploy 10 | - type: checkboxes 11 | attributes: 12 | label: Is there an existing feature request for this? 13 | description: Please search to see if an issue related to this feature request/feature request already exists 14 | options: 15 | - label: I have searched the existing issues 16 | required: true 17 | - type: textarea 18 | attributes: 19 | label: Summary 20 | description: One paragraph description of the feature 21 | validations: 22 | required: true 23 | - type: textarea 24 | attributes: 25 | label: Why should this be worked on? 26 | description: A concise description of the problems or use cases for this feature request 27 | validations: 28 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Help and support 3 | url: https://github.com/keploy/keploy#community-support 4 | about: Reach out to us on our Slack channel or Discourse discussions or GitHub discussions. 5 | - name: Dedicated support 6 | url: mailto:hello@keploy.io 7 | about: Write to us if you'd like dedicated support using Keploy -------------------------------------------------------------------------------- /.github/License-Apache_2.0-blue.svg: -------------------------------------------------------------------------------- 1 | License: Apache 2.0LicenseApache 2.0 -------------------------------------------------------------------------------- /.github/slack.svg: -------------------------------------------------------------------------------- 1 | 2 | slack 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 19 | 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/macos,linux,jetbrains,visualstudiocode 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos,linux,jetbrains,visualstudiocode 4 | 5 | ### JetBrains ### 6 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 7 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 8 | 9 | # User-specific stuff 10 | .idea/**/workspace.xml 11 | .idea/**/tasks.xml 12 | .idea/**/usage.statistics.xml 13 | .idea/**/dictionaries 14 | .idea/**/shelf 15 | 16 | # AWS User-specific 17 | .idea/**/aws.xml 18 | 19 | # Generated files 20 | .idea/**/contentModel.xml 21 | 22 | # Sensitive or high-churn files 23 | .idea/**/dataSources/ 24 | .idea/**/dataSources.ids 25 | .idea/**/dataSources.local.xml 26 | .idea/**/sqlDataSources.xml 27 | .idea/**/dynamic.xml 28 | .idea/**/uiDesigner.xml 29 | .idea/**/dbnavigator.xml 30 | 31 | # Gradle 32 | .idea/**/gradle.xml 33 | .idea/**/libraries 34 | 35 | # Gradle and Maven with auto-import 36 | # When using Gradle or Maven with auto-import, you should exclude module files, 37 | # since they will be recreated, and may cause churn. Uncomment if using 38 | # auto-import. 39 | # .idea/artifacts 40 | # .idea/compiler.xml 41 | # .idea/jarRepositories.xml 42 | # .idea/modules.xml 43 | # .idea/*.iml 44 | # .idea/modules 45 | # *.iml 46 | # *.ipr 47 | 48 | # CMake 49 | cmake-build-*/ 50 | 51 | # Mongo Explorer plugin 52 | .idea/**/mongoSettings.xml 53 | 54 | # File-based project format 55 | *.iws 56 | 57 | # IntelliJ 58 | out/ 59 | 60 | # mpeltonen/sbt-idea plugin 61 | .idea_modules/ 62 | 63 | # JIRA plugin 64 | atlassian-ide-plugin.xml 65 | 66 | # Cursive Clojure plugin 67 | .idea/replstate.xml 68 | 69 | # SonarLint plugin 70 | .idea/sonarlint/ 71 | 72 | # Crashlytics plugin (for Android Studio and IntelliJ) 73 | com_crashlytics_export_strings.xml 74 | crashlytics.properties 75 | crashlytics-build.properties 76 | fabric.properties 77 | 78 | # Editor-based Rest Client 79 | .idea/httpRequests 80 | 81 | # Android studio 3.1+ serialized cache file 82 | .idea/caches/build_file_checksums.ser 83 | 84 | ### JetBrains Patch ### 85 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 86 | 87 | # *.iml 88 | # modules.xml 89 | # .idea/misc.xml 90 | # *.ipr 91 | 92 | # Sonarlint plugin 93 | # https://plugins.jetbrains.com/plugin/7973-sonarlint 94 | .idea/**/sonarlint/ 95 | 96 | # SonarQube Plugin 97 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin 98 | .idea/**/sonarIssues.xml 99 | 100 | # Markdown Navigator plugin 101 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced 102 | .idea/**/markdown-navigator.xml 103 | .idea/**/markdown-navigator-enh.xml 104 | .idea/**/markdown-navigator/ 105 | 106 | # Cache file creation bug 107 | # See https://youtrack.jetbrains.com/issue/JBR-2257 108 | .idea/$CACHE_FILE$ 109 | 110 | # CodeStream plugin 111 | # https://plugins.jetbrains.com/plugin/12206-codestream 112 | .idea/codestream.xml 113 | 114 | ### Linux ### 115 | *~ 116 | 117 | # temporary files which can be created if a process still has a handle open of a deleted file 118 | .fuse_hidden* 119 | 120 | # KDE directory preferences 121 | .directory 122 | 123 | # Linux trash folder which might appear on any partition or disk 124 | .Trash-* 125 | 126 | # .nfs files are created when an open file is removed but is still being accessed 127 | .nfs* 128 | 129 | ### macOS ### 130 | # General 131 | .DS_Store 132 | .AppleDouble 133 | .LSOverride 134 | 135 | # Icon must end with two \r 136 | Icon 137 | 138 | 139 | # Thumbnails 140 | ._* 141 | 142 | # Files that might appear in the root of a volume 143 | .DocumentRevisions-V100 144 | .fseventsd 145 | .Spotlight-V100 146 | .TemporaryItems 147 | .Trashes 148 | .VolumeIcon.icns 149 | .com.apple.timemachine.donotpresent 150 | 151 | # Directories potentially created on remote AFP share 152 | .AppleDB 153 | .AppleDesktop 154 | Network Trash Folder 155 | Temporary Items 156 | .apdisk 157 | 158 | ### VisualStudioCode ### 159 | .vscode/* 160 | !.vscode/settings.json 161 | !.vscode/tasks.json 162 | !.vscode/launch.json 163 | !.vscode/extensions.json 164 | !.vscode/*.code-snippets 165 | 166 | # Local History for Visual Studio Code 167 | .history/ 168 | 169 | # Built Visual Studio Code Extensions 170 | *.vsix 171 | 172 | ### VisualStudioCode Patch ### 173 | # Ignore all local history of files 174 | .history 175 | .ionide 176 | 177 | # Support for Project snippet scope 178 | 179 | # End of https://www.toptal.com/developers/gitignore/api/macos,linux,jetbrains,visualstudiocode -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /.idea/gsoc.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /2022/README.md: -------------------------------------------------------------------------------- 1 | # GSoC'22 Participant Guide 2 | 3 | ## **Communication** 4 | 5 | Welcome to the Keploy GSoC projects page. We encourage candidates to come up with their own project idea. 6 | 7 | Join our [Slack Channel](https://join.slack.com/t/keploy/shared_invite/zt-12rfbvc01-o54cOG0X1G6eVJTuI_orSA) and stay tuned for updates. 8 | 9 | Use our [Template](https://docs.google.com/document/d/1QSSs4vPvn_tPeJkhwDuJ9YLSXdtygob9cPc-5yXj3pY/edit?usp=sharing) for the proposal. We recommend the use of google docs for the proposal. 10 | 11 | 12 | ## **General suggestions and warnings** 13 | _________________ 14 | 15 | - **Project ideas describe the goals we want to achieve 16 | but may miss details that have to be defined during the project**: 17 | we expect students to do their own research, propose solutions and be 18 | ready to deal with uncertainty and solve challenges that 19 | will come up during the project 20 | 21 | - **Code and prototypes are preferred over detailed 22 | documents and unreliable estimates**: 23 | rather than using your time to write a very long 24 | application document, we suggest to invest in writing a prototype 25 | (which means the code may be thrown out entirely) which will help you 26 | understand the challenges of the project you want to work on; your 27 | application should refer to the prototype or other Github contributions 28 | you made to Keploy that show you have the capability to succeed in the 29 | project idea you are applying for. 30 | 31 | - **Students who have either shown to have or have shown to be 32 | fast learners for the required hard and soft skills by 33 | contributing to Keploy have a lot more chances of being accepted**: 34 | in order to get started contributing refer to the 35 | :doc:`Keploy Contributing Guidelines ` 36 | 37 | - **Get trained in the projects you want to apply for**: once 38 | applicants have completed some basic training by 39 | :doc:`contributing to Keploy ` 40 | we highly suggest to start working on 41 | some aspects of the project they are 42 | interested in applying: all projects 43 | listed this year are improvements 44 | of existing modules so these modules 45 | already have a list of open issues 46 | which can be solved as part of your advanced training. 47 | It will also be possible to complete some of the tasks listed in 48 | the project idea right now before GSoC starts. 49 | We will list some easy tasks in the project idea for this purpose. 50 | 51 | ## **Projects List** 52 | 53 | ### 1. Keploy Typescript/Javascript SDK 54 | **Mentors**: Neha Gupta, Ritik Jain, Rajat Sharma. 55 | 56 | **Goals & Ideas** 57 | * Create Typescript SDK to enable JS/TS application servers to use the keploy ecosystem similar to the [Go SDK](https://github.com/keploy/go-sdk). 58 | * Create integration framework to easily add routers/web-frameworks or external dependencies similar to the [Go Integrations package](https://github.com/keploy/go-sdk/tree/main/integrations) 59 | * Use the integrations package to add support for top 2 web frameworks/routers, http client, mysql/postgres and mongo support. 60 | * Document the integration for users interested in adding support for more libraries. 61 | * Package and publish the SDK to npm registry. 62 | * Add support for running the SDK through the Mocha or Jest testing frameworks. 63 | * Create a sample nodejs application server to demonstrate the functionalities of the ts/js SDK. 64 | 65 | **Skills Required** 66 | * Typescript/Javascript 67 | * Rest APIs 68 | * Unit testing 69 | 70 | **Refs** 71 | * https://github.com/keploy/go-sdk 72 | * https://jestjs.io 73 | * https://mochajs.org 74 | * https://github.com/keploy/example-url-shortener 75 | 76 | **Time Estimate** : 350 hours 77 | 78 | **Difficulty** : Hard 79 | 80 | ### 2. Keploy Java SDK 81 | **Mentors**: Shubham Jain, Ritik Jain, Saurabh Nigam. 82 | 83 | **Goals & Ideas** 84 | * Create Java SDK to enable Java application servers to use the keploy ecosystem similar to the [Go SDK](https://github.com/keploy/go-sdk). 85 | * Create integration framework to easily add routers/web-frameworks or external dependencies similar to the [Go Integrations package](https://github.com/keploy/go-sdk/tree/main/integrations) 86 | * Use the integrations package to add support for top 2 web frameworks/routers (likely spring boot and Quarkus), mysql/postgres and mongo support. 87 | * Document the integration for users interested in adding support for more libraries. 88 | * Package and publish the SDK to maven central. 89 | * Add support for running the SDK through the JUnit testing framework. 90 | * Create a sample spring boot application to demonstrate the functionalities of the Java SDK. 91 | 92 | **Skills Required** 93 | * Java 94 | * Rest APIs 95 | * Unit testing 96 | 97 | **Refs** 98 | * https://github.com/keploy/go-sdk 99 | * https://junit.org/junit5 100 | * https://github.com/keploy/example-url-shortener 101 | 102 | **Time Estimate** : 350 hours 103 | 104 | **Difficulty** : Medium 105 | 106 | ### 3. Autogenerate test cases 107 | Mentors: Shubham Jain, Neha Gupta, Sarthak, TBD 108 | 109 | **Goals & Ideas** 110 | * Use fuzz testing approach to generate new testcases from existing testcases. We can take inspiration from [Go Fuzzing](https://go.dev/doc/fuzz) 111 | * Define and capture testcases coverage and other useful metrics (KPIs) about the effectiveness of testcases. 112 | * Avoid adding testcases that don't meaningfully impact any of the testing KPIs. 113 | * Use the API schemas and data types to ensure various potential edge cases are generated. 114 | * Create a demo application to demonstrate the test case generation capability. 115 | * Add the feature to generate extra testcases for the keploy server. 116 | 117 | **Skills Required** 118 | * Go 119 | * Rest APIs 120 | * Unit testing 121 | 122 | **Refs** 123 | * https://go.dev/doc/fuzz 124 | * https://github.com/keploy/keploy/issues/25 125 | * https://github.com/keploy/keploy/issues/24 126 | 127 | **Time Estimate** : 175 hours 128 | 129 | **Difficulty** : Medium 130 | 131 | ### 4. Add prioritization to deduplication algorithm 132 | Mentors: Shubham Jain, Neha Gupta, TBD 133 | 134 | **Goals & Ideas** 135 | * The current deduplication algorithm lacks any kind of prioritization for testcases. 136 | * For highly distributed or complex applications the amount of testcases captured from traffic could make the testcases too noisy. 137 | * The idea is to prioritize top N testcases based on predefined KPI templates. 138 | * Create a demo application to demonstrate the test prioritization feature. 139 | * Publish benchmark results to show the baseline performances of the deduplication algorithms. 140 | 141 | **Skills Required** 142 | * Go 143 | * Rest APIs 144 | * Unit testing 145 | 146 | **Refs** 147 | * https://github.com/keploy/keploy/issues/27 148 | 149 | **Time Estimate** : 175 hours 150 | 151 | **Difficulty** : Easy -------------------------------------------------------------------------------- /2023/README.md: -------------------------------------------------------------------------------- 1 | # GSoC'23 Participant Guide 2 | 3 | ## **Communication** 4 | 5 | Welcome to the Keploy GSoC projects page. We encourage candidates to come up with their own project idea. 6 | 7 | Join our [Slack Channel](https://join.slack.com/t/keploy/shared_invite/zt-12rfbvc01-o54cOG0X1G6eVJTuI_orSA) and stay tuned for updates. 8 | 9 | Use our [Template](https://docs.google.com/document/d/1QSSs4vPvn_tPeJkhwDuJ9YLSXdtygob9cPc-5yXj3pY/edit?usp=sharing) for the proposal. We recommend the use of google docs for the proposal. 10 | 11 | 12 | ## **General suggestions and warnings** 13 | _________________ 14 | 15 | - **Project ideas describe the goals we want to achieve 16 | but may miss details that have to be defined during the project**: 17 | we expect students to do their own research, propose solutions and be 18 | ready to deal with uncertainty and solve challenges that 19 | will come up during the project 20 | 21 | - **Code and prototypes are preferred over detailed 22 | documents and unreliable estimates**: 23 | rather than using your time to write a very long 24 | application document, we suggest to invest in writing a prototype 25 | (which means the code may be thrown out entirely) which will help you 26 | understand the challenges of the project you want to work on; your 27 | application should refer to the prototype or other Github contributions 28 | you made to Keploy that show you have the capability to succeed in the 29 | project idea you are applying for. 30 | 31 | - **Students who have either shown to have or have shown to be 32 | fast learners for the required hard and soft skills by 33 | contributing to Keploy have a lot more chances of being accepted**: 34 | in order to get started contributing refer to the 35 | :doc:`Keploy Contributing Guidelines ` 36 | 37 | - **Get trained in the projects you want to apply for**: once 38 | applicants have completed some basic training by 39 | :doc:`contributing to Keploy ` 40 | we highly suggest to start working on 41 | some aspects of the project they are 42 | interested in applying: all projects 43 | listed this year are improvements 44 | of existing modules so these modules 45 | already have a list of open issues 46 | which can be solved as part of your advanced training. 47 | It will also be possible to complete some of the tasks listed in 48 | the project idea right now before GSoC starts. 49 | We will list some easy tasks in the project idea for this purpose. 50 | 51 | ## **Projects List** 52 | 53 | ### 1. Keploy CLI Refactoring 54 | **Mentors**: Neha Gupta, Ritik Jain, Sanskriti Harmukh, Ankit Kumar 55 | 56 | **Goals & Ideas** 57 | * Add support for `Get` curl command for the test case. 58 | * Add support to `Run` individual test case. 59 | * Add support for commands in Keploy CLI, for eg: `show [test_id];` will 60 | show that specific test case among various testcases, `show [test_run_id];` will show the info related to it. 61 | * Rename test files and mock files to method_endpoint. 62 | * Add comment to keploy generated test file and mocks basically KMocks and KTests. 63 | * Add configuration to pipe keploy server logs in a file. 64 | * Add the static link to serve the test report genenerated at end of log. 65 | 66 | **Skills Required** 67 | * Golang 68 | * Rest APIs 69 | 70 | **Refs** 71 | * https://github.com/keploy/keploy 72 | * https://github.com/keploy/example-url-shortener 73 | * https://docs.keploy.io/docs/devtools/server-contrib-guide 74 | * https://docs.keploy.io/ 75 | 76 | **Time Estimate** : 175 hours 77 | 78 | **Difficulty** : Medium 79 | 80 | 81 | **Task List** : 82 | | Tasks | Repo | Actionable By | [Achintya](https://github.com/achintya-7) | [cassiozareck](https://github.com/cassiozareck) | [aerowisca](https://github.com/aerowisca) | 83 | |-------|-----------|-----------|-----------|----------------|----------------| 84 | | Setup Keploy Locally with a Sample Go Application | Samples-go | | | | | 85 | | Use Keploy to increase test cases coverage | Keploy | [
](https://github.com/keploy/keploy/issues/333) | | [
](https://github.com/keploy/keploy/pull/471) | | | 86 | | Add a vertical line separator in CLI | Keploy | [
](https://github.com/keploy/keploy/issues/334) | | | | | 87 | | Add support for `Get TC` to display test-cases from yaml | Keploy | [
](https://github.com/keploy/keploy/issues/337) | | | [
](https://github.com/keploy/keploy/pull/517) | 88 | | Update Keploy UI with new way of working Keploy | UI | [
](https://github.com/keploy/keploy/issues/335) | | | | 89 | | Add configuration to pipe keploy server logs in a file | Keploy | [
](https://github.com/keploy/keploy/issues/444) | [
](https://github.com/keploy/keploy/pull/457) | | [
](https://github.com/keploy/keploy/pull/482) | 90 | 91 | ### 2. Keploy Java SDK 92 | **Mentors**: Sarthak Shyngle, Gourav Kumar, Charan Kamarapu, Barkatul Mujauddin. 93 | 94 | **Goals & Ideas** 95 | * Add support for `MongoDB` database. 96 | * Add support for `Apache Kafka`. 97 | * Add support for java Native HttpClient. 98 | * Add support for `RabbitMQ`. 99 | * Add support for `Google Cloud Platform` & `Azure` SDKs. 100 | * Add Mock Library `Redis` and `KSQL` Support. 101 | 102 | **Skills Required** 103 | * Java 104 | * Rest APIs 105 | * Unit testing 106 | 107 | **Refs** 108 | * https://github.com/keploy/java-sdk 109 | * https://github.com/keploy/go-sdk 110 | * https://github.com/keploy/samples-java 111 | * https://junit.org/junit5 112 | * https://github.com/keploy/example-url-shortener 113 | * https://docs.keploy.io/ 114 | 115 | **Time Estimate** : 350 hours 116 | 117 | **Difficulty** : Medium 118 | 119 | **Task List** : 120 | 121 | | Tasks | Repo | Actionable By | [reem-atalah](https://github.com/reem-atalah) | [Weaam Bassem](https://github.com/We2Am-BaSsem) | 122 | |-------|-----------|-----------|-----------|-----------| 123 | | Setup Keploy Locally with a Sample Java Application (Use as many dependencies you can) | Samples-Java | | | | 124 | | Create a github action for running java based linters in pipeline | Java-SDK | [
](https://github.com/keploy/java-sdk/issues/129) | | [
](https://github.com/keploy/java-sdk/pull/142) | 125 | | Create a github action for publishing sdk to maven central | Java-SDK | [
](https://github.com/keploy/java-sdk/issues/127) | | 126 | | Write the test-cases for JAVA-SDK (for Integrations) | Java-SDK | [
](https://github.com/keploy/java-sdk/issues/131) | | | 127 | | Creating Sample Java Application using JWT Token | Samples-Java | [
](https://github.com/keploy/samples-java/issues/34) | [
](https://github.com/keploy/samples-java/pull/42) | 128 | | Creating Interceptors and Advice for different jwt objects | Java-SDK | [
](https://github.com/keploy/java-sdk/issues/132) | | | 129 | 130 | 131 | ### 3. Keploy Typescript/Javascript SDK 132 | **Mentors**: Charan Kamarapu, Ritik Jain, Shubham Jain, Diganta Kr Banik. 133 | 134 | **Goals & Ideas** 135 | * Add support for `Httpclients` in typescript. 136 | - This sdk currently supports `node-fetch` httpClient, to support other httpclients like `axios`, `http`, etc. You can take the 1st ref below which intercepts other popular httpClients. 137 | * Add support for popular `Sql` databases. For eg: `PostgreSQL`, `MySQL`, etc. By adding support for `Sequelize`. 138 | * Add support for `MongoDB` database. 139 | * Add support for `Amazon S3`, `DynamoDB`, `Azure Blob Storage`, and `Google Cloud Storage` using the HTTP Client. 140 | * Add support for `Redis` & `Elasticsearch`. 141 | 142 | 143 | **Skills Required** 144 | * Typescript/Javascript 145 | * Rest APIs 146 | * Unit testing 147 | 148 | **Refs** 149 | * https://www.npmjs.com/package/@mswjs/interceptors 150 | * https://sequelize.org/ 151 | * https://github.com/keploy/go-sdk 152 | * https://jestjs.io 153 | * https://mochajs.org 154 | * https://github.com/keploy/example-url-shortener 155 | * https://docs.keploy.io/ 156 | 157 | **Time Estimate** : 350 hours 158 | 159 | **Difficulty** : Hard 160 | 161 | **Task List** : 162 | 163 | 164 | | Tasks | Repo | Actionable By | [G0maa](https://github.com/G0maa) | [shreyanshshah27](https://github.com/shreyanshshah27) | [Hermione2408](https://github.com/Hermione2408) | [Frey0-0](https://github.com/frey0-0) |[Sekhar-Kumar-Dash](https://github.com/Sekhar-Kumar-Dash) | 165 | |-------|-----------|-----------|-----------|-----------|-----------|-----------|-----------| 166 | | Setup Keploy Locally with a Sample TS Application | Samples-Typescript | | | | | | 167 | | Empty response for node-fetch http call | Typescript-SDK | [
](https://github.com/keploy/typescript-sdk/issues/49) | [
](https://github.com/keploy/typescript-sdk/pull/60) | | | |[
](https://github.com/keploy/typescript-sdk/pull/87)| 168 | | Add a sample unit test for mocking/stubbing calls in unit-tests | Samples-Typescript | [
](https://github.com/keploy/samples-typescript/issues/10) | [
](https://github.com/keploy/samples-typescript/pull/11) | | | | 169 | | Write the test-cases for TS-SDK (for Integrations) | Typescript-SDK | [
](https://github.com/keploy/typescript-sdk/issues/56) | | | [
](https://github.com/keploy/typescript-sdk/pull/59) | [
](https://github.com/keploy/typescript-sdk/issues/63) |[
](https://github.com/keploy/typescript-sdk/pull/82) | 170 | | Add check to not record testcases during test mode | Typescript-SDK | [
](https://github.com/keploy/typescript-sdk/issues/42) | [
](https://github.com/keploy/typescript-sdk/pull/68) | [
](https://github.com/keploy/typescript-sdk/pull/46) | | |[
](https://github.com/keploy/typescript-sdk/pull/86) | 171 | | Add log statement in keploy and mock module to log mode | Typescript-SDK | [
](https://github.com/keploy/typescript-sdk/issues/45) | | | [
](https://github.com/keploy/typescript-sdk/pull/48)| | 172 | | Remove cp cmd from build script | Typescript-SDK | [
](https://github.com/keploy/typescript-sdk/issues/51) | | | [
](https://github.com/keploy/typescript-sdk/pull/53) | | 173 | | Add filter for headers during recording | Typescript-SDK | [
](https://github.com/keploy/typescript-sdk/issues/44) | |[
](https://github.com/keploy/typescript-sdk/pull/47) | | | 174 | 175 | 176 | ### 4. Autogenerate test cases 177 | Mentors: Shubham Jain, Neha Gupta, Sarthak, Jyotirmoy Roy, Pranshu Srivastava 178 | 179 | **Goals & Ideas** 180 | * Use fuzz testing approach to generate new testcases from existing testcases. We can take inspiration from [Go Fuzzing](https://go.dev/doc/fuzz) 181 | * Define and capture testcases coverage and other useful metrics (KPIs) about the effectiveness of testcases. 182 | * Avoid adding testcases that don't meaningfully impact any of the testing KPIs. 183 | * Use the API schemas and data types to ensure various potential edge cases are generated. 184 | * Create a demo application to demonstrate the test case generation capability. 185 | * Add the feature to generate extra testcases for the keploy server. 186 | 187 | **Skills Required** 188 | * Go 189 | * Rest APIs 190 | * Unit testing 191 | 192 | **Refs** 193 | * https://go.dev/doc/fuzz 194 | * https://github.com/keploy/keploy/issues/25 195 | * https://github.com/keploy/keploy/issues/24 196 | * https://docs.keploy.io/ 197 | 198 | **Time Estimate** : 300 hours 199 | 200 | **Difficulty** : Medium 201 | 202 | **Task List** : 203 | | Tasks | Repo | Actionable By | | 204 | |-------|-----------|-----------|-----------| 205 | | Create a REST-Api in Golang using any router and one database supported by Keploy | Samples-go | [
](https://github.com/keploy/samples-go/issues/40) | | 206 | | Short list different ideas to generate more than one testcase using api schema and response provided | Keploy | [
](https://github.com/keploy/keploy/issues/338) | | 207 | | Add Go-fuzz tests for the application created | Samples-go | [
](https://github.com/keploy/samples-go/issues/40) | | 208 | | Add schema checks in Keploy's validation logic | Keploy | [
](https://github.com/keploy/keploy/issues/431) | | 209 | | Generate OpenAPI schema from API calls/ Testcases | Keploy | [
](https://github.com/keploy/keploy/issues/432) | | 210 | | Add validation to dependency request data | Keploy | [
](https://github.com/keploy/keploy/issues/433) | | 211 | 212 | ### 5. eBPF based Keploy Integration 213 | Mentors: Shubham Jain, Sarthak Shyngle, Gourav Kumar, Animesh Pathak 214 | 215 | **Goals & Ideas** 216 | * Use eBPF to capture network traffic instead of using a Keploy sdks. 217 | * The base platform for eBPF is Linux, but we should add support for other platforms via docker. 218 | * The eBPF program should be able to capture network traffic from any application running on the host machine, without requiring any changes to the application. 219 | * For test generation we need to support HTTP, TLS and gRPC. 220 | * For mocks capturing we should be able to capture all the network traffic going out of the application and parse the protocol. 221 | * Add support http and grpc clients for mocking. 222 | * Add support for popular databases like Postgres, MySQL, Postgres, Redis and MongoDB. 223 | * Make this implementation work with existing demos and samples in go, java and node. 224 | 225 | **Skills Required** 226 | * Linux fundamentals 227 | * eBPF (good to have prior experience) 228 | * Go 229 | * C/C++ 230 | 231 | **Refs** 232 | * https://ebpf.io 233 | * https://github.com/DataDog/ebpf-training 234 | * https://github.com/pixie-io/pixie-demos 235 | * https://github.com/cilium/ebpf 236 | * https://blog.px.dev/ebpf-openssl-tracing/ 237 | 238 | **Time Estimate** : 300 hours 239 | 240 | **Difficulty** : Medium 241 | 242 | **Task List** : 243 | 244 | | Tasks | Repo | Actionable By | | 245 | |-------------------------------------------------------------------------------------------------------------|------------|---------------------------------------------------------------|-----------| 246 | | Implement an eBPF based program to start and application and capture all http incoming and outgoing traffic | Keploy | [
](https://github.com/keploy/keploy/issues/436) | | 247 | | Capture all https incoming and outgoing traffic for an application | Keploy | [
](https://github.com/keploy/keploy/issues/437) | | 248 | | Add add support for intercepting and parsing Postgres traffic | Samples-go | [
](https://github.com/keploy/keploy/issues/438) | | 249 | | Create an eBPF based sample from echo-sql demo in sample-go | Keploy | [
](https://github.com/keploy/keploy/issues/439) | | 250 | 251 | ### 6. JS or Go based DSL for Keploy 252 | Mentors: Shubham Jain, Neha Gupta, Ritik Jain, Animesh Pathak 253 | 254 | **Goals & Ideas** 255 | * Create a DSL for Keploy in JS or Go instead of the current yaml. 256 | * The DSL should allow greater flexibility and extensibility than the current yaml format by enabling users to write custom code. 257 | * Most of the DSL should be encapsulated in the library methods. 258 | * We can take inspiration from k6.io and rest assured. k6 uses JS to define test scenarios. 259 | * The DSL should be able to define testcases and mocks as an alternative to the current yaml format. 260 | 261 | **Skills Required** 262 | * Go 263 | * Javascript (optional) 264 | * Code generation and parsing (good to have prior experience) 265 | 266 | **Refs** 267 | * https://k6.io 268 | * https://rest-assured.io 269 | 270 | **Time Estimate** : 300 hours 271 | 272 | **Difficulty** : Medium 273 | 274 | **Task List** : 275 | 276 | | Tasks | Repo | Actionable By | | 277 | |-----------------------------------------------------------------|------------|---------------------------------------------------------------|-----------| 278 | | Add support for reading js or go based testcases | Keploy | [
](https://github.com/keploy/keploy/issues/447) | | 279 | | Define basic library interfaces for the JS/Go DS | Keploy | [
](https://github.com/keploy/keploy/issues/448) | | 280 | | Add support for generating testcases using the above DSL | Keploy | [
](https://github.com/keploy/keploy/issues/449) | | 281 | | Generate tests using the DSL for the echo-sql demo in samples-go | Samples-go | [
](https://github.com/keploy/keploy/issues/450) | | 282 | 283 | 284 | 309 | -------------------------------------------------------------------------------- /2024/README.md: -------------------------------------------------------------------------------- 1 | # Google Summer of Code'24 Participant Guide 2 | 3 | ## **Communication** 4 | 5 | Welcome to the Keploy GSoC projects page. We encourage candidates to come up with their own project idea. 6 | 7 | Join our [Slack Channel](https://join.slack.com/t/keploy/shared_invite/zt-2dno1yetd-Ec3el~tTwHYIHgGI0jPe7A) and stay tuned for updates. 8 | 9 | Use our [Template](https://docs.google.com/document/d/1QSSs4vPvn_tPeJkhwDuJ9YLSXdtygob9cPc-5yXj3pY/edit?usp=sharing) for the proposal. We recommend the use of google docs for the proposal. 10 | 11 | 12 | ## **General suggestions and warnings** 13 | _________________ 14 | 15 | - **Project ideas describe the goals we want to achieve 16 | but may miss details that have to be defined during the project**: 17 | we expect students to do their own research, propose solutions and be 18 | ready to deal with uncertainty and solve challenges that 19 | will come up during the project 20 | 21 | - **Code and prototypes are preferred over detailed 22 | documents and unreliable estimates**: 23 | rather than using your time to write a very long 24 | application document, we suggest to invest in writing a prototype 25 | (which means the code may be thrown out entirely) which will help you 26 | understand the challenges of the project you want to work on; your 27 | application should refer to the prototype or other Github contributions 28 | you made to Keploy that show you have the capability to succeed in the 29 | project idea you are applying for. 30 | 31 | - **Students who have either shown to have or have shown to be 32 | fast learners for the required hard and soft skills by 33 | contributing to Keploy have a lot more chances of being accepted**: 34 | in order to get started contributing refer to the 35 | :doc:`Keploy Contributing Guidelines ` 36 | 37 | - **Get trained in the projects you want to apply for**: once 38 | applicants have completed some basic training by 39 | :doc:`contributing to Keploy ` 40 | we highly suggest to start working on 41 | some aspects of the project they are 42 | interested in applying: all projects 43 | listed this year are improvements 44 | of existing modules so these modules 45 | already have a list of open issues 46 | which can be solved as part of your advanced training. 47 | It will also be possible to complete some of the tasks listed in 48 | the project idea right now before GSoC starts. 49 | We will list some easy tasks in the project idea for this purpose. 50 | 51 | ## **Projects List** 52 | 53 | ### 1. Add support for macOS native networking 54 | Currently, keploy requires a docker to capture the API calls from the application conatiner. It is able to capture the incoming/outgoing network for linux native using the eBPF feature of linux. So to add support for macOS, keploy should redirect the incoming/outgoing requests to the transparent proxy. 55 | 56 | **Mentors**: 57 | Ritik Jain, Shubham Jain 58 | 59 | **Goals & Ideas** 60 | * Deploy the PF (Packet Filter) firewall, as detailed at [Wikipedia: PF (firewall)](https://en.wikipedia.org/wiki/PF_(firewall)), to reroute network traffic towards the designated proxy server. 61 | * Develop a TCP server capable of processing HTTP and HTTPS requests directed at the application, ensuring efficient and secure data transmission. 62 | * Integrate dependency parsers to manage and interpret outgoing requests generated by the user's application, enhancing the application's ability to interact with external services. 63 | * Implement the logic to simulate the recorded incoming calls using the transparent proxy in test mode. 64 | * Implement TLS support for outgoing calls within the user's application, enabling the capture or simulation of secure communications for testing and development purposes. 65 | 66 | **Skills Required** 67 | * Golang 68 | * C 69 | 70 | **Refs** 71 | * https://docs.mitmproxy.org/stable/howto-transparent/#macos 72 | * https://github.com/keploy/keploy 73 | * https://go.dev/tour/welcome/1 74 | 75 | **Time Estimate** : 350 hours 76 | 77 | **Difficulty** : Medium 78 | 79 | 80 | ### 2. denoising + docker extension 81 | **Mentors**: 82 | 83 | [Charan Kamarapu](https://github.com/charankamarapu) 84 | [Pranshu Srivastava](https://github.com/PranshuSrivastava) 85 | 86 | **Goals & Ideas** 87 | 88 | 1. Create a Denoise Command in Keploy CLI which will eliminate the comparison of the noisy fields in the API response while testing. 89 | 90 | 2. Create a Docker extension for Keploy which will support all the features of current keploy docker usage. There will no more installation or no more setting up of keploy is required in the local machine with docker extension. 91 | 92 | **Skills Required** 93 | 94 | 1. REST APIs 95 | 2. Docker basics 96 | 3. Networking 97 | 98 | **Refs** 99 | 100 | **Time Estimate** : 350 hours 101 | 102 | **Difficulty** : medium 103 | 104 | ### 3. Multiple services using keploy (API chaining) 105 | **Mentors**: 106 | [Gourav Kumar](https://github.com/gouravkrosx), [Shivam Sourav Jha](https://github.com/shivamsouravjha) 107 | 108 | **Description** 109 | - In Keploy, testing multiple services via API chaining emphasizes enabling contract testing to ensure seamless interactions among services. This ensures that all communications across services meet predefined expectations, enhancing the reliability of interconnected systems. 110 | - Contract testing is a method focused on verifying interactions between microservices, applications, or systems, ensuring correct communication through predefined contracts. It facilitates early issue identification and reduces complex end-to-end testing needs. 111 | 112 | 113 | **Goals & Ideas** 114 | 1. Keploy Support: Integrate contract testing capabilities into Keploy to enable advanced testing functionalities, enhancing its ability to validate microservice interactions effectively. 115 | 2. One-Go Testing: Implement functionality within Keploy for recording tests and mocks for all related microservices simultaneously. This feature would capture both ingress and egress traffic, utilizing process identification (PID) for filtering. The primary goal is to ensure that tests and mocks remain synchronized across all services, thereby maintaining consistency and accuracy in testing environments. 116 | 3. Automated Change Management for API Chains: When using Keploy with services m1, m2, and m3, consider a scenario where m2 undergoes a change, such as the addition of a new field. When this change is incorporated into m2's test cases, it could potentially disrupt the mock interactions expected by m1, necessitating updates to m1's tests to align with the new behavior. This process ensures that mocks are consistently refreshed to reflect the most current service interactions. Keploy facilitates this dynamic updating mechanism, streamlining the maintenance of test cases and mocks across services. Consequently, it simplifies end-to-end (E2E) testing, making it more efficient and reducing the complexity typically associated with testing interconnected services. 117 | 4. Both HTTP test and HTTP mock share the same [spec](https://github.com/keploy/samples-go/blob/main/gin-redis/keploy/test-set-0/tests/test-1.yaml). 118 | 119 | 120 | **Skills Required** 121 | 1. Golang 122 | 2. REST APIs 123 | 3. Contract Testing 124 | 4. E2E Testing 125 | 126 | **Refs** 127 | 1. [What is Contract Testing?](https://pactflow.io/blog/what-is-contract-testing/) 128 | 2. [Keploy Documentation](https://keploy.io/docs/) 129 | 3. [What is a REST API? - IBM](https://www.ibm.com/topics/rest-apis#:~:text=the%20next%20step-,What%20is%20a%20REST%20API%3F,representational%20state%20transfer%20architectural%20style.) 130 | 4. [A Tour of Go](https://go.dev/tour/) 131 | 132 | **Time Estimate** : 350 Hours 133 | 134 | **Difficulty** : Medium 135 | 136 | ### 4. VScode and other IDE extension 137 | **Mentors**: Sarthak Shyngle, Animesh Pathak 138 | 139 | **Goals & Ideas:** 140 | 141 | 1. **Cross-Platform Extension Deployment:** 142 | - **Objective:** Develop VS Code and IntelliJ extensions fetching the latest Keploy binary, adapting to system architecture using Docker when native support is lacking (e.g., macOS, Windows). 143 | - **Tech Details:** Platform-specific logic and Docker integration for versatile deployment. 144 | 145 | 2. **Streamlined Keploy CLI Operations:** 146 | - **Objective:** Enhance UX by integrating and managing Keploy's CLI operations within the extension, potentially using config files. 147 | - **Tech Details:** Golang backend for unified CLI command execution within the extensions. 148 | 149 | 3. **Extension as Keploy API Client for Recording and Replay:** 150 | - **Objective:** Enable the extension to act as a client for seamless API calls to Keploy, facilitating recording and replaying. 151 | - **Tech Details:** JavaScript-built client with defined API endpoints for interaction. 152 | 153 | 4. **Interactive UI Elements with Widgets and Buttons:** 154 | - **Objective:** Create an intuitive UI in VS Code and IntelliJ with widgets and buttons for user-friendly Keploy proxy server interaction. 155 | - **Tech Details:** HTML, CSS, and web technologies for embedded UI elements. 156 | 157 | 5. **Marketplace Deployment and Continuous Integration (CI):** 158 | - **Objective:** Deploy extensions to VS Code Marketplace and implement a CI pipeline for automated testing, versioning, and releases. 159 | - **Tech Details:** Standard CI/CD practices, utilizing VS Code Marketplace for distribution. 160 | 161 | These technical advancements aim to deliver a seamless and efficient user experience, making Keploy integration more accessible across diverse development environments. 162 | 163 | **Skills Required** 164 | Javascript 165 | Golang 166 | Node.js and NPM 167 | Git 168 | HTML, CSS, and Web Technologies 169 | 170 | **Refs** 171 | - https://code.visualstudio.com/api/get-started/your-first-extension 172 | - https://github.com/microsoft/vscode-extension-samples 173 | - https://code.visualstudio.com/api#how-to-build-extensions 174 | 175 | **Time Estimate** : 350 hours 176 | 177 | **Difficulty** : Medium 178 | **Task List** : 179 | 180 | ### 5. Add support for Windows native 181 | Currently, keploy requires a docker to capture the API calls from the application conatiner. It is able to capture the incoming/outgoing network for linux native using the eBPF feature of linux. So to add support for windows, keploy should redirect the incoming/outgoing requests to the transparent proxy. 182 | 183 | **Mentors**: 184 | Ritik Jain, Shubham Jain 185 | 186 | **Goals & Ideas** 187 | * Deploy the IP Routing for windows, to reroute network traffic towards the designated proxy server. 188 | * Develop a TCP server capable of processing HTTP and HTTPS requests directed at the application, ensuring efficient and secure data transmission. 189 | * Integrate dependency parsers to manage and interpret outgoing requests generated by the user's application, enhancing the application's ability to interact with external services. 190 | * Implement the logic to simulate the recorded incoming calls using the transparent proxy in test mode. 191 | * Implement TLS support for outgoing calls within the user's application, enabling the capture or simulation of secure communications for testing and development purposes. 192 | 193 | **Skills Required** 194 | * Golang 195 | * C 196 | 197 | **Refs** 198 | * https://docs.mitmproxy.org/stable/howto-transparent/#windows 199 | * https://go.dev/tour/welcome/1 200 | 201 | **Time Estimate** : 350 hours 202 | 203 | **Difficulty** : Medium 204 | 205 | 206 | ### 6. Implementing a React UI Console for Test Generation demonstration 207 | The goal of this task is to develop a user-friendly interface in React that showcases Keploy's test generation capabilities, the console will be open-source and should show features including test record and replay, as well as automatic test generation. This UI should provide users with a clear and interactive way to understand and explore the features of Keploy's testing framework. 208 | 209 | **Mentors**: 210 | Neha Gupta, Charan Kamarapu, Hermione Dadheech 211 | 212 | **Goals & Ideas** 213 | * Design a User-Friendly Interface: Create a visually appealing and intuitive layout that allows users to easily navigate and understand the test generation features. Discuss design with the mentors. 214 | * Implement Test Record and Replay: Integrate the functionality to record user actions and replay them as tests, showcasing the ease of creating tests with Keploy. 215 | * Showcase Automatic Test Generation: Demonstrate how Keploy can automatically generate tests based on user interactions, highlighting the efficiency. 216 | * Interactive Demo: Allow users to interact with the demo, providing them with a hands-on experience of how Keploy simplifies the test generation process. 217 | * Documentation and Tutorials: Include clear documentation and tutorials within the UI to guide users through the demo and explain the underlying concepts and benefits. 218 | * Responsive Design: Ensure that the UI is responsive and accessible on various devices and screen sizes, providing a seamless experience for all users. 219 | 220 | **Skills Required** 221 | * React 222 | * Typescript 223 | * NextJs 224 | * TailwindCSS 225 | 226 | **Time Estimate** : 350 hours 227 | 228 | **Difficulty** : Hard 229 | 230 | --- 231 | 232 | **Task List** : Good First Issue for GSoC aspirants 233 | 234 | | Tasks | Repo | Actionable's | Fixed by | 235 | |------|-------|-----------|-----------| 236 | | Updating Blog Website with fixes and new features | [Keploy](https://github.com/keploy/blog-website) | https://github.com/keploy/keploy/issues/1503
https://github.com/keploy/keploy/issues/1504
https://github.com/keploy/keploy/issues/1238
https://github.com/keploy/keploy/issues/1239
https://github.com/keploy/keploy/issues/1527 | | 237 | | Improve GitHub action for Keploy. | [Keploy](https://github.com/keploy/testGPT) | https://github.com/keploy/keploy/issues/1505
https://github.com/keploy/keploy/issues/1506
https://github.com/keploy/keploy/issues/1507 | | 238 | | Add Rust Sample App to showcasing support of rustlang | [Samples-Rust](https://github.com/keploy/samples-rust) | https://github.com/keploy/keploy/issues/1546
https://github.com/keploy/keploy/issues/1547 | | 239 | | JavaScript Script for Automated Keploy Updates | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1524 | | 240 | | GitHub Actions Workflow for VS Code Extension Publishing | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1525 | | 241 | | Terminating Keploy is not removing docker container | [Keploy](https://github.com/keplopy) | https://github.com/keploy/keploy/issues/1533 | | 242 | | Create a normalisation command in keploy CLI | [Keploy](https://github.com/keplopy) | https://github.com/keploy/keploy/issues/1538 243 | | Keploy fails with "docker start \" as user app command | [Keploy](https://github.com/keplopy) | https://github.com/keploy/keploy/issues/1539 244 | | Redirect the incoming requests to the proxy | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1521 | | 245 | | Filter the incoming traffic for the user app | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1522 | | 246 | | Redirect the outgoing traffic for the user app | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1523 | | 247 | | Test multiple services using keploy | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1541 | | 248 | | Build an app with multiple services, demonstrating contract testing | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1543 | | 249 | | Add support in Keploy to read from server initiated calls | [Keploy](https://github.com/keploy/keploy) | https://github.com/keploy/keploy/issues/1572 | | 250 | -------------------------------------------------------------------------------- /2025/README.md: -------------------------------------------------------------------------------- 1 | # Google Summer of Code'25 Participant Guide 2 | 3 | ## **Communication** 4 | 5 | Welcome to the Keploy GSoC'25 projects page. We encourage candidates to come up with their own project idea. Join our [Slack Channel](https://keploy.slack.com/join/shared_invite/zt-2poflru6f-_VAuvQfCBT8fDWv1WwSbkw) and stay tuned for updates. 6 | 7 | Use our **[Template](https://docs.google.com/document/d/1yRWf5pXuUij-UwlXB9knDKqk9VYvV5GrNf865p77Y1U/edit?usp=sharing)** for the proposal. We recommend the use of google docs for the proposal. 8 | 9 | 10 | ## **General suggestions and warnings** 11 | _________________ 12 | 13 | - **Project ideas describe the goals we want to achieve 14 | but may miss details that have to be defined during the project**: 15 | we expect students to do their own research, propose solutions and be 16 | ready to deal with uncertainty and solve challenges that 17 | will come up during the project 18 | 19 | - **Code and prototypes are preferred over detailed 20 | documents and unreliable estimates**: 21 | rather than using your time to write a very long 22 | application document, we suggest to invest in writing a prototype 23 | (which means the code may be thrown out entirely) which will help you 24 | understand the challenges of the project you want to work on; your 25 | application should refer to the prototype or other Github contributions 26 | you made to Keploy that show you have the capability to succeed in the 27 | project idea you are applying for. 28 | 29 | - **Students who have either shown to have or have shown to be 30 | fast learners for the required hard and soft skills by 31 | contributing to Keploy have a lot more chances of being accepted**: 32 | in order to get started contributing refer to the 33 | :doc:`Keploy Contributing Guidelines ` 34 | 35 | - **Get trained in the projects you want to apply for**: once 36 | applicants have completed some basic training by 37 | :doc:`contributing to Keploy ` 38 | we highly suggest to start working on 39 | some aspects of the project they are 40 | interested in applying: all projects 41 | listed this year are improvements 42 | of existing modules so these modules 43 | already have a list of open issues 44 | which can be solved as part of your advanced training. 45 | It will also be possible to complete some of the tasks listed in 46 | the project idea right now before GSoC starts. 47 | We will list some easy tasks in the project idea for this purpose. 48 | 49 | ## **Projects List** 50 | 51 | ### 1. AI-Powered Open-Source Code Review Agent (Using any CI/CD workflow) 52 | **Mentors**: Hermione, Yash, Gourav, Shubham 53 | 54 | Develop an AI-driven, open-source code review agent that integrates with version control platforms and CI/CD pipelines to provide automated feedback on coding style, security vulnerabilities, and best practices. Use any CI/CD runners and open-source static analysis tools to improve the developer experience in open-source projects. 55 | 56 | **Description**: The objective of this project is to enhance the Keploy Playground by introducing new functionalities, improving user experience, and expanding its capabilities. This includes: 57 | 58 | 1. **Expanding Language Support:** Adding robust support for multiple programming languages such as Java and Python. 59 | 2. **Integrating Test & Mock Support:** Providing comprehensive functionalities to generate tests and simulate mocks seamlessly. 60 | 3. **Improving User Onboarding:** Redesigning the user experience, especially the onboarding process, to ensure a smooth introduction to Keploy’s capabilities. 61 | 62 | **Tasks:** 63 | 1. Explore the architecture and workflows of various open-source code review systems to understand their impact and areas for improvement and build a matrix comparing them based on features such as accuracy, language support, ease of integration, and performance 64 | 2. Build a modular webhook-based system to allow easy integration with various platforms. 65 | 3. Integrate OWASP Dependency-Check or Google’s Open Source Insights (deps.dev API) to detect vulnerable dependencies. 66 | 4. Export review results in JSON, Markdown, or PDF formats for offline analysis. 67 | 68 | **Skills Required:** 69 | - CI/CD workflows & automation 70 | - REST APIs & Webhooks 71 | - Golang 72 | - JavaScript/TypeScript, Node.js 73 | - Static Code Analysis Tools (ESLint, GolangCI-Lint) 74 | - AI/ML for automated code review - Vertex AI (Optional but beneficial) 75 | 76 | **Refs** 77 | 1. [ESLint: Pluggable JavaScript Linter](https://pactflow.io/blog/what-is-contract-testing/) 78 | 2. [GolangCI-Lint](https://golangci-lint.run/) 79 | 80 | **Time Estimate** : 350 hours 81 | 82 | **Difficulty** : Hard 83 | 84 | ### 2. OSS Code Indexer for Efficient Retrieval 85 | 86 | **Mentors**: Shivam, Charan, Sarthak, Shubham Jain 87 | 88 | **Goals & Ideas** 89 | Develop an efficient code indexing system that enables fast and scalable code search and retrieval. The system will integrate open source unit test geneartion with a Retrieval-Augmented Generation (RAG) indexer, utilizing vector and graph databases to improve query efficiency and relevance. The goal is to create a robust and scalable solution that can handle large open-source codebases and enable better code discovery, navigation, and reuse. 90 | 91 | - Integrate the existing RAG bot with a vector database. 92 | - Explore dynamic indexing techniques to improve efficiency. 93 | - Research methodologies for leveraging GRAGs to enhance retrieval. 94 | - Test OSS UTG with OSS Repos. 95 | - Integrate Gemini with UTG. 96 | 97 | **Skills Required** 98 | 1. Experience with RAG (Retrieval Augmented Generation) architectures. 99 | 2. Knowledge of vector databases (e.g., Pinecone, FAISS, Weaviate, etc.). 100 | 3. Understanding of graph databases and their integration with AI systems. 101 | 4. Familiarity with indexing strategies for efficient code retrieval. 102 | 5. Proficiency in Python/Golang for backend development. 103 | 104 | **Refs** 105 | 1. Research papers on RAG and GRAG models. 106 | 2. Documentation for vector and graph databases. 107 | 108 | **Tasks** 109 | 1. Integrate the existing RAG bot with a [Milvus](https://github.com/milvus-io/milvus). 110 | * Modify the existing RAG bot to store code snippets as vector embeddings in Milvus. 111 | 2. Explore dynamic indexing techniques to improve efficiency. 112 | * Research and compare different indexing techniques (HNSW, IVF, PQ, Flat Index) for faster retrieval. 113 | 3. Research methodologies for leveraging GRAGs to enhance retrieval. 114 | * Implement a prototype that combines vector search with graph-based retrieval to improve accuracy. 115 | 4. Test Open-Source [UTG (Unit Test Generation)](https://keploy.io/docs/running-keploy/unit-test-generator/) with OSS Repositories. 116 | * Run Keploy’s OSS Unit Test Generator (UTG) on real-world repositories and suggest optimizations for the UTG model based on results. 117 | 5. Use [Gemini AI](https://gemini.google.com/app) (Google’s LLM) to generate better test cases from indexed OSS codebases. 118 | 119 | **Time Estimate** : 350 hours 120 | 121 | **Difficulty** : Medium 122 | 123 | 124 | ### 3. TestSuite Idempotency Checker 125 | 126 | **Mentors**: Animesh, Sarthak Shyngle, Neha Gupta 127 | 128 | **Description**: Ensuring idempotency in test suites is crucial for reliable and repeatable testing. This project focuses on analyzing test cases to identify operations that should be idempotent, it will help in detecting noisy parameters and inconsistencies which may lead to flaky tests. 129 | 130 | **Goals & Ideas** 131 | 1. Identify Noisy Parameters – Automatically detect parameters in test cases that cause unnecessary variations, leading to non-idempotent behavior. 132 | 2. Validate CRUD Operations – Ensure that CRUD requests in test cases conform to idempotency rules by verifying their consistency across multiple executions. 133 | 3. HTML-based Test Verification – Check test cases that interact with HTML responses to ensure stable outputs and prevent unintended failures. 134 | 4. Automated Idempotency Reporting – Develop a reporting mechanism that flags test cases violating idempotency, with insights into potential fixes. 135 | 136 | **Tasks** 137 | 1. Implement Idempotency Check for GET Requests in Postman 138 | 2. Denoise the un-expected Parameters (timestamp, headers, token's, change in body response) from Keploy Testcases 139 | 3. Create a basic report template using Allure or Extent Reports. 140 | 4. Handling noisy parameters of big payloads(10k or more lines) in the cli-diff viewer. 141 | 142 | **Skills Required** 143 | 1. Scripting Languages such as Python, Bash. 144 | 2. Golang 145 | 3. Logical Reasoning + DSA 146 | 147 | **Ref** 148 | 1. [idempotency and safety in REST APIs ](https://www.linkedin.com/advice/0/how-do-you-test-monitor-idempotency) 149 | 2. [How Idempotent REST APIs Boost Reliability and Error Handling](https://keploy.io/docs/concepts/reference/glossary/idempotency/) 150 | 3. [Idempotent Message Validator](https://docs.mulesoft.com/mule-runtime/latest/idempotent-message-validator) 151 | 152 | **Time Estimate** : 350 hours 153 | 154 | **Difficulty** : Medium 155 | 156 | 157 | ### 4. Improve Keploy Open-Source Playground console 158 | 159 | **Mentors**: Aditya Sharma, Shivam Jha, Tvisha Raji, Manas, Neha Gupta 160 | 161 | **Description** 162 | 163 | The goal of this project is to elevate the open-source Keploy Playground for the contributors to understand record-replay. Few of the features requests b community includes: 164 | 1. **Expanding Language Support:** Adding support for more languages such as Java, Python, Node. 165 | 2. **Integrating Test & Mock Support:** Adding support to fetch generated tests from the keploy server and simulated mocks which can be editable on the playground. 166 | 3. **Improving User Onboarding:** Currently the playground lags if the payload is big, or in case of AI/ML genrated tests, the idea is to improve performance of the react console so that other community members can experience it well. 167 | 168 | **Goals & Ideas** 169 | 1. **Currently Loading Structure Loading is Fragile:** Improve the user experience by fixing the performance issues and handling edge cases. 170 | 2. **Interactive Demo Environment:** Build a dynamic playground console where users can interact with live demos, generate tests, and see real-time results. 171 | 3. **Automated Test Generation from URL Input**: Allow users to provide a URL, then automatically scrape the frontend to generate a sitemap, identify API calls, and create tests based on the discovered endpoints using ATG 172 | 4. **Multi-Language Testing Support:** Implement a flexible backend architecture that supports testing across multiple languages, making Keploy a versatile tool for a diverse range of applications. 173 | 174 | **Skills Required** 175 | 1. Next.js, React, typescript 176 | 2. API call handling 177 | 3. Golang, Java, Python 178 | 4. [optional] AI/ML 179 | 180 | **Refs** 181 | 1. [source code] - https://github.com/keploy/website/tree/main/app/(default) 182 | 2. [Meshery Playground](https://play.meshery.io) 183 | 184 | **Time Estimate** : 350 hours 185 | 186 | **Difficulty** : Medium 187 | 188 | 189 | ### 5. API contract matching - Adding Features and Platform support 190 | **Mentors**: Ahmed Lotfy, Gourav Kumar, Charan Kamarapu, Shubham Jain 191 | 192 | **Description**: The goal of this project is to enhance the functionality of contract testing by adding new features and improving existing capabilities. This includes better schema storage, consolidation, and validation, along with exploring a provider-driven approach as a future enhancement. 193 | 194 | **Goals & Ideas** 195 | 1. **Schema Storage Enhancement**: Implement local storage support for schemas, functioning as a mock public registry (e.g., S3). 196 | 2. **Unified Schema Management**: Merge individual test/mock schemas into a comprehensive single schema for each service, consolidating all APIs 197 | 3. **Advanced Schema Comparison**: Design and improve schema validation between interconnected services to ensure consistency. 198 | 4. **Provider-Driven Architecture**: Develop and integrate a provider-driven contract testing model into Keploy, allowing service providers to define and manage contracts efficiently. 199 | 200 | **Skills Required** 201 | 1. Golang 202 | 2. REST APIs 203 | 204 | **Refs** 205 | 1. [What is Contract Testing?](https://pactflow.io/blog/what-is-contract-testing/) 206 | 2. [Keploy Documentation](https://keploy.io/docs/) 207 | 3. [What is a REST API? - IBM](https://www.ibm.com/topics/rest-apis#:~:text=the%20next%20step-,What%20is%20a%20REST%20API%3F,representational%20state%20transfer%20architectural%20style.) 208 | 4. [A Tour of Go](https://go.dev/tour/) 209 | 210 | **Tasks** 211 | 1. [Implement Microservices Architecture with HTTP APIs & Validate Keploy Contract Testing](https://github.com/keploy/keploy/issues/2541) 212 | 2. [Identify and Resolve Issues in Keploy Contract Testing Implementation](https://github.com/keploy/keploy/issues/2543) 213 | 214 | **Time Estimate** : 350 hours 215 | 216 | **Difficulty** : medium 217 | 218 | 219 | ### 6. App Dashboard with Metrics and Chart 220 | **Mentors**: Manas Manohar, Tvisha Raji, Hermione Dadheech, Neha Gupta 221 | 222 | **Description** 223 | 1. The objective of this project is to create a console that provides interactive visualizations, metrics, and insights for code merges and test activities. 224 | 2. The console should support dynamic updates and be powered by a Go web server that processes and serves data. 225 | 3. It should be structured for easy extensibility, making it straightforward to add new metrics or charts in the future. 226 | 227 | **Goals & Ideas** 228 | 1. Dynamic Dashboard: Develop a frontend that aggregates and displays real-time test reports using visual elements such as graphs and charts 229 | 2. Template-Based PR Insights: Allow users to create and utilize templates for code analysis, offering customizable views for different teams and workflows. 230 | 3. Scalable & Modular Design: Ensure the system’s architecture is modular and can accommodate new metrics, charts, or data sources with minimal effort. 231 | 232 | **Tasks:** 233 | 1. Build a web app that tracks multiple repositories and user activities, offering a customizable feed of test outcomes and analytics. 234 | 2. Research techniques for building modular dashboards, data processing, and integration with various version control or repository hosting services. 235 | 236 | **Skills Required** 237 | 1. Next.js, Charting Libraries(e.g., Chart.js, Recharts, D3.js) 238 | 2. Golang 239 | 3. MongoDB 240 | 241 | **Refs** 242 | 1. Grafana – For inspiration on dashboard design and real-time data visualization. 243 | 2. Golang Documentation – For best practices in building scalable Go services. 244 | 245 | **Time Estimate** : 350 Hours 246 | 247 | **Difficulty** : Medium 248 | 249 | --- 250 | ## Task List : Good First Issue for GSoC aspirants 251 | 252 | | Projects | Good First Issue | 253 | | -------- | ------- | 254 | | update website themes | https://github.com/keploy/keploy/issues/2536
https://github.com/keploy/keploy/issues/2535
https://github.com/keploy/keploy/issues/2534 | 255 | |Improve keploy console| https://github.com/keploy/keploy/issues/2551
https://github.com/keploy/keploy/issues/2552| 256 | | Integrate RAG Bot with a Vector Database | https://github.com/keploy/keploy/issues/2533 | 257 | | PR Analysis with Linting & Static Analysis in testGPT | https://github.com/keploy/keploy/issues/2532 | 258 | | Checking of HTML-Based Test Validation | https://github.com/keploy/keploy/issues/2528 | 259 | | a GitHub App to Trigger GitHub Actions | https://github.com/keploy/keploy/issues/2531 | 260 | | Denoise Unexpected Parameters in Keploy Testcases | https://github.com/keploy/keploy/issues/2527 | 261 | | Implement Idempotency Check for GET Requests | https://github.com/keploy/keploy/issues/2526 | 262 | | SON Diff viewer re-alignment to top | https://github.com/keploy/keploy/issues/2524 | 263 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | support@keploy.io. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Keploy 2 | 3 | Thank you for your interest in Keploy and for taking the time to contribute to this project. 🙌 Keploy is a project by developers for developers and there are a lot of ways you can contribute. 4 | 5 | If you don't know where to start contributing, ask us on our [Slack channel](https://join.slack.com/t/keploy/shared_invite/zt-12rfbvc01-o54cOG0X1G6eVJTuI_orSA). 6 | 7 | ## Code of conduct 8 | 9 | Contributors are expected to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md). 10 | 11 | ## Prerequisites for the contributors 12 | 13 | Contributors should have knowledge of git, go, and markdown for most projects since the project work heavily depends on them. 14 | We encourage Contributors to set up Keploy for local development and play around with the code and tests to get more comfortable with the project. 15 | 16 | Sections 17 | 18 | - General Contribution Flow 19 | - Developer Certificate of Origin 20 | - Keploy Contribution Flow 21 | - Keploy Server 22 | - Keploy Documentation 23 | - Keploy SDK Integration 24 | 25 | # General Contribution Flow 26 | 27 | ## Signing-off on Commits (Developer Certificate of Origin) 28 | 29 | To contribute to this project, you must agree to the Developer Certificate of 30 | Origin (DCO) for each commit you make. The DCO is a simple statement that you, 31 | as a contributor, have the legal right to make the contribution. 32 | 33 | See the [DCO](https://developercertificate.org) file for the full text of what you must agree to 34 | and how it works [here](https://github.com/probot/dco#how-it-works). 35 | To signify that you agree to the DCO for contributions, you simply add a line to each of your 36 | git commit messages: 37 | 38 | ``` 39 | Signed-off-by: Jane Smith 40 | ``` 41 | 42 | In most cases, you can add this signoff to your commit automatically with the 43 | `-s` or `--signoff` flag to `git commit`. You must use your real name and a reachable email 44 | address (sorry, no pseudonyms or anonymous contributions). An example of signing off on a commit: 45 | 46 | ``` 47 | $ commit -s -m “my commit message w/signoff” 48 | ``` 49 | 50 | To ensure all your commits are signed, you may choose to add this alias to your global `.gitconfig`: 51 | 52 | _~/.gitconfig_ 53 | 54 | ``` 55 | [alias] 56 | amend = commit -s --amend 57 | cm = commit -s -m 58 | commit = commit -s 59 | ``` 60 | 61 | ## Keploy Contribution Flow 62 | 63 | Keploy is written in `Go` (Golang) and leverages Go Modules. Relevant coding style guidelines are the [Go Code Review Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments) and the _Formatting and style_ section of Peter Bourgon's [Go: Best 64 | Practices for Production Environments](https://peter.bourgon.org/go-in-production/#formatting-and-style). 65 | 66 | There are many ways in which you can contribute to Keploy. 67 | 68 | ### Keploy Server 69 | 70 | #### Report a Bug 71 | Report all issues through GitHub Issues using the [Report a Bug](https://github.com/keploy/keploy/issues/new?assignees=&labels=&template=bug_report.md&title=) template. 72 | To help resolve your issue as quickly as possible, read the template and provide all the requested information. 73 | 74 | #### Feature request 75 | We welcome all feature requests, whether it's to add new functionality to an existing extension or to offer an idea for a brand new extension. 76 | File your feature request through GitHub Issues using the [Feature Request](https://github.com/keploy/keploy/issues/new?assignees=&labels=&template=feature_request.md&title=) template. 77 | 78 | #### Close a Bug 79 | We welcome contributions that help make keploy bug free & improve the experience of our users. You can also find issues tagged [Good First Issues](https://github.com/keploy/keploy/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). 80 | 81 | ### Keploy Documentation 82 | 83 | The Keploy documentation site uses Docusaurus 2, which is a static website generator, you can make changes locally without previewing them in the browser. 84 | 85 | In the process of shipping features quickly, we may forget to keep our docs up to date. You can help by suggesting improvements to our documentation using the [Documentation Improvement](https://github.com/keploy/docs/issues) template. 86 | 87 | Please refer to [Keploy Docs Contributing Guide](https://github.com/keploy/docs/blob/main/CONTRIBUTING.md#-how-to-set-up-the-docs-website-locally) for setting up your development environment and the follow [Keploy Style Guide](https://github.com/keploy/docs/blob/main/STYLE.md). 88 | 89 | ### Keploy SDKs 90 | 91 | Keploy provides stable support for ``Go``, ``Java`` and ``Ts`` language based applications. 92 | 93 | - [x] [Go SDK](https://github.com/keploy/go-sdk) 94 | - [x] [Java SDK](https://github.com/keploy/java-sdk) 95 | - [x] [TypeScript SDK](https://github.com/keploy/typescript-sdk) 96 | 97 | Every SDKs support the popular and common Routers and Databases. 98 | 99 | 100 | # Contact 101 | 102 | Feel free to join [slack](https://join.slack.com/t/keploy/shared_invite/zt-12rfbvc01-o54cOG0X1G6eVJTuI_orSA) to start a conversation with us. 103 | -------------------------------------------------------------------------------- /GSoD 2023/Readme.md: -------------------------------------------------------------------------------- 1 | ## Google Season Of Docs Proposal : Optimizing Go Repo User Experience: Improving JWT Middleware Documentation and SDK Contribution Guide 2 |
3 | 4 | # WELCOME TO KEPLOY 5 | 6 | Hello! We are thrilled to announce that **Keploy** will be applying as a **GSoD** mentoring org for 2023! We are excited to welcome all technical writers to apply for contributing towards ***Keploy's Docs*** during this season! We love mentoring folks and help them get involved in the field of Open Source, tech and docs. If Keploy gets accepted for `GSoD 2023`, we would create task lists and basis of that select folks to contribute during the period. And even without `GSoD`, we always welcome folks to get involved ❤️! 7 | 8 | **Keep an eye out on this page as we update with more project ideas.** 9 | 10 | 11 | ## Table of Contents: 12 | 13 | * [About Keploy](#about-keploy) 14 | * [About GSoD](#about-gsod) 15 | * [Keploy's Participation](#keploys-participation) 16 | * [Projects](#projects) 17 | * [Project Scope](#project-scope) 18 | * [Measuring Project's Success](#measuring-projects-success) 19 | * [Timeline](#timeline) 20 | * [Project Budget](#project-budget) 21 | * [Proposal Format](#proposal-format) 22 | * [Community](#community) 23 | * [Code Of Conduct](#code-of-conduct) 24 | 25 | ## About Keploy 26 | 27 | Keploy is a functional testing toolkit for developers. It generates E2E tests for APIs (KTests) along with mocks or stubs(KMocks) by recording real API calls. KTests can be imported as mocks for consumers and vice-versa. 28 | 29 | Merge KTests with unit testing libraries(like Go-Test, JUnit..) to track combined test-coverage. 30 | 31 | KMocks can also be referenced in existing tests or use anywhere (including any testing framework). KMocks can also be used as tests for the server. 32 | 33 | You can read more about Keploy from [here](https://docs.keploy.io/docs/keploy-explained/introduction). 34 | 35 | ## About GSoD 36 | Google Season of Docs (GSoD) is a unique program that brings together technical writers and open source communities to work collaboratively on improving project documentation. It is an initiative by Google that aims to improve the state of documentation within the open source community. 37 | 38 | During the program, technical writers are paired with open source communities that are looking to enhance their documentation. The writers collaborate with community mentors to identify areas of improvement, document new features, and provide better explanations of existing features. The program encourages collaboration and communication between technical writers and community members, fostering a strong relationship between the two. 39 | 40 | GSoD provides an opportunity for open source communities to benefit from the skills and expertise of technical writers, who bring a fresh perspective to the project. Technical writers, in turn, gain valuable experience in open source software development and contribute to the greater good of the community. 41 | 42 | The program runs for several months, during which time technical writers work closely with community members to complete documentation tasks. The ultimate goal is to improve the documentation of the project, making it more accessible to users and developers alike. Overall, GSoD helps to create a more vibrant and thriving open source community by promoting collaboration, improving documentation, and enhancing the user experience. 43 | 44 | You can read more about Google Season Of Docs [here](https://developers.google.com/season-of-docs). 45 | 46 | ## Keploy's Participation 47 | 48 | We at Keploy believe that clear and comprehensive documentation is essential to the success of any open source project, as it helps users understand the project's features and functionalities, and how to contribute to it. Given Keploy is a developer tool, it becomes all the more essential to have a clear and concise documentation so that developers and testers can easily understand Keploy's core principals and can integrate and work with Keploy with ease. A better documentation becomes ever more important for us as we have a number of integrations and would definitely not want any developer or tester to sit back and keep scratching their heads to make Keploy work (not that it presently the case, but still better documentation is always better, right😅?) 49 | 50 | We look to participate in Google Season of Docs (GSoD) because we recognize the value of technical writing as a critical aspect of the development process. By engaging with technical writers, we can benefit from their expertise and collaborate on improving our documentation, making it more user-friendly and accessible to a wider audience. 51 | 52 | At Keploy, we believe that open source is more than just a software development model; it's a community-driven approach to building software. We see GSoD as an opportunity to strengthen our community by fostering collaboration between technical writers and Keploy community members. This will not only enhance our documentation but also help create a welcoming and inclusive environment that encourages contributions from all kinds of contributors. 53 | 54 | In summary, participating in GSoD aligns with our values of open source, community engagement, and accessibility. We believe that working with technical writers will enhance our documentation, improve the user experience, and build a stronger community around our project. ***We are excited and hope to be part of this program and look forward to collaborating with technical writers to make Keploy an even better testing framework✨!*** 55 | 56 | 57 | ## Projects 58 | 59 | 1. Improve Documentation For Keploy SDK and Go Documentation: 60 | 1.1 Add References Page for Keploy Variables. 61 | Currently, the guide for Keploy's SDK just has no references to the Variables that user can set in addition to ``KEPLOY_MODE``. These Variables are mentioned under configs in [Server Code](https://github.com/keploy/keploy/blob/f9e65515e65a58dd18572564610cb41c55ee8de5/server/server.go#L53). 62 | 1.2 How Keploy handles authentication and authorization - Add 'Supported JWT Middlewares' to [Go Docs](https://github.com/keploy/docs/tree/main/docs/go). The reference can be taken from https://pkg.go.dev/github.com/keploy/go-sdk#readme-supported-jwt-middlewares and you can add the same to the Go Docs in the docs repo. 63 | 1.3 Add to Documentation how to generate Mocks with generating test case - Keploy supports mock generation without generating test cases. Currently this feature is not documented anywhere in the docs. You need to document this feature, also explaining its advantages (use case scenarios) and the process to achieve3. it. 64 | 1.4 Blog:Write a blog on Mocks vs Stubs vs Real data (Real Database) 65 | 1.5 Blog: How much assertions is good assertion? 66 | Mentors: Sanskriti Harmukh, Diganta Kr Banik and Animesh Pathak 67 | 68 | 2. Improve Contribution Guide for Keploy SDK - 69 | 2.1 Currently, the contribution guide for Keploy's SDK just has a video refernce to Keploy and a HLD for Java. 70 | You can take reference from the exisitng video and diagrams and construct a guided contribution guide based for the [SDK repo](https://github.com/keploy/keploy). 71 | We also would like you to add readmes/guides/guides/blogs for the following topics: 72 | 2.2 Add Adding test coverage to Keploy to Keploy's Contribution Guide 73 | 2.3 Adding Keploy Support for eBPF version of Keploy(both Readme as well as Docs) 74 | 2.4 Migration Guide from Keploy V1 to V2. 75 | 2.5 Blog on E2E vs Unit Testing (especially aimed for advanced developers) 76 | 2.6 Blog on Test Driven Development vs Behaviour Driven Development and how Keploy works with both. 77 | Mentors: Ankit Kumar and Jyotirmoy Roy 78 | 79 | 3. Add blogs, documentation and videos to educate developers around testing with Keploy 80 | 3.1 Karate vs REST-Assured vs Keploy 81 | 3.2 Adding documentation for integrating and adding to DSL version of Keploy 82 | 3.3 We expect the selected technical writer to make a video on how Keploy functions (would be better if animated) as it would help users understand more easily how Keploy works. 83 | Mentors: Ankit Kumar, Jyotirmoy Roy, Sanskriti Harmukh, Diganta Kr Banik and Animesh Pathak 84 | **Keep an Eye Out 👀 as we add more Projects! We would be happy to review any ideas that you may have to improve our docs!** 85 | 86 | ## Project Scope 87 | 88 | 91 | 92 | 1. Improve Documentation For Keploy SDK and Go Documentation: The project aims to improve the documentation for Keploy SDK and Go documentation. The specific tasks that can be undertaken as part of the project are: 93 | - Adding a References page for Keploy Variables: The objective is to create a new page in the Keploy SDK guide that lists all the Keploy variables that can be set in addition to KEPLOY_MODE, along with a brief description of each. 94 | - Adding Supported JWT Middlewares to Go Docs: The objective is to create a new page in the Go documentation that lists the JWT middlewares that Keploy supports, along with a brief description of each. 95 | - Adding Documentation for Mock Generation: The objective is to create a new section in the Keploy SDK guide that explains the process for generating mocks in Keploy without recording test cases, along with its advantages and use cases. 96 | - Writing a Blog on Mocks vs Stubs vs Real Data: The objective is to write a blog post that explains the differences between mocks, stubs, and real data, along with the pros and cons of each approach and when to use each one. 97 | - Writing a Blog on Good Assertion Practices: The objective is to write a blog post that provides tips for writing effective assertions in unit tests, along with examples and use cases. 98 | 99 | 2. Improve Contribution Guide for Keploy SDK: The project aims to improve the contribution guide for Keploy SDK and add new documentation to the SDK repo. The specific tasks that can be undertaken as part of the project are: 100 | - Improving the Contribution Guide: The objective is to create a new contribution guide that is comprehensive and includes detailed instructions on how to contribute to Keploy SDK. 101 | - Adding Test Coverage to Keploy's Contribution Guide: The objective is to add a new section to the contribution guide that explains how to add test coverage to Keploy SDK. 102 | - Adding eBPF Support to Keploy: The objective is to add a new readme and documentation to the Keploy SDK that explains how to use eBPF with Keploy. 103 | - Migration Guide from Keploy V1 to V2: The objective is to create a new migration guide that explains how to migrate from Keploy V1 to V2. 104 | - Blog on E2E vs Unit Testing: The objective is to write a blog post that explains the differences between end-to-end testing and unit testing, and when to use each approach. The post should include examples and use cases, and should be aimed towards advanced users. 105 | - Blog on Test Driven Development vs Behavior Driven Development: The objective is to write a blog post that explains the differences between test-driven development and behavior-driven development, and how Keploy can be used to support both approaches. The post should include examples and use cases, and provide tips for using Keploy in a TDD or BDD workflow. 106 | 107 | 3. Add blogs, documentation and videos to educate developers around testing with Keploy: The scope for the third idea includes: 108 | - Karate vs REST-Assured vs Keploy: The objective is to write a blog post that compares the three testing frameworks Karate, REST-Assured, and Keploy, highlighting their differences and advantages. The post should include examples and use cases for each framework. 109 | - Adding documentation for integrating and adding to DSL version of Keploy: The objective is to add new documentation to the Keploy SDK that explains how to integrate and add to the domain-specific language (DSL) version of Keploy. 110 | - Video on how Keploy works: The objective is to create an animated video that explains how Keploy works, including its architecture, main components, and how it can be used for testing and deployment. The video should be informative and engaging, and should help users understand the key features and benefits of Keploy. 111 | 112 | ## Measuring Project's Success 113 | We will measure the success of projects in two halves. 114 | Firstly, we will use git's workflow issue(if technical writers want to add any) followed by pull requrest followed by discussions on the pull request and then finally merging. 115 | For the second half, we will try to get user reviews as to if they found the changes helpful and if they were able to get their tasks done following the documenttion. To do this we would leverage our slack channel and try to get reviews from our users. 116 | 117 | ## Timeline 118 | 119 | The project considering the three ideas, on a whole is expected to be completed within four months. The first few weeks would be used to help the technical writers get accustomed with Keploy and understand what Keploy does so that they can use the information while preparing and updating the documentations. Once the technical writers are selected for our project, we expect them to suggest a timeline within which they expect to complete their tasks. 120 | 121 | ## Project Budget 122 | If our project proposal is accepted, we will have seven mentors who will work across all three project ideas. In order to support our team, we would like to request a total grant of USD 14000 from Google. We plan to distribute USD 4500 of this grant among the technical writers working on each project, and allocate an additional USD 500 towards awarding swags to the technical writers as a token of appreciation. 123 | 124 | | Budget item | Total Amount (in USD) | 125 | | ---------------- | --------------- | 126 | | Technical Writer achieves the task of improving Documentation For Keploy SDK and Go Documentation| 4500| 127 | | Technical Writer achieves the task of improving Contribution Guide for Keploy SDK | 4500 | 128 | |Technical writer adds blogs, documentation and videos to educate developers around testing with Keploy | 4500 | 129 | | Swags/T-Shirts | 500 | 130 | | TOTAL | 14000 | 131 | 132 | 133 | ### Proposal Format 134 | A Google Season Of Docs usually consists of a Statement Of Interest. Your Statement Of Interest should generally contain about 1,000 words (**But don't consider this as a constraint**). Here's a guide of what you can include in your Statement Of Interest: 135 | 136 | 1. Introduction: Introduce yourself and your background. Explain your interest in participating in the GSoD program and what you hope to gain from it. 137 | 2. Project Description: Provide a brief description of the project you want to work on. Include the project goals, technologies involved, and any relevant information that will help the selection committee understand the project's scope. 138 | 3. Relevant Experience: Highlight any relevant experience you have in the project's domain or technical writing/documentation. Describe past contributions to similar projects and provide links to relevant work. 139 | 4. Proposed Plan: Explain your proposed plan for completing the project within the given timeline. Outline the steps you will take to achieve the project goals and how you will collaborate with the project team and mentor. 140 | 5. Impact: Describe how your project will benefit the community and users of the technology. This can include improving the quality of documentation, increasing accessibility, or adding new features. 141 | 6. Proposed Total Budget: If applicable, provide an estimated budget for completing the proposed project, including any necessary resources or tools. 142 | 7. Conclusion: Summarize your statement of interest and express your enthusiasm for the project. 143 | 144 | You can also go through [GSoD Tech Writer Guide](https://developers.google.com/season-of-docs/docs/tech-writer-guide) and [Creating a Statement of Interest](https://developers.google.com/season-of-docs/docs/tech-writer-statement) to get a better idea of how to construct your Statement of Interest. But remember, at the end of the day, this is just a suggestive list. ***Do add your creativity and provide us with any other information that you feel we should know!*** 145 | 146 | ## About Mentors 147 | 148 | Our mentors Animesh Pathak, Sanskriti Harmukh, Ankit Kumar, Diganta Kr Banik, and Jyotirmoy Roy are also members of this year's `Google Summer Of Code`. Keploy is one of the projects that has been selected under `GSoC 2023` and we hope that we can provide participants seemless experience during the event. We also hope to follow our GSoC Success and participate in this year's `Google Season Of Docs`. 149 | ## Community 150 | 151 | Join the Keploy community and connect with mentors and other members through our Slack channel. 152 | 153 | [![Join Keploy on Slack!](https://img.shields.io/badge/Join%20Us%20On-Slack-orange)](https://keploy.slack.com/) 154 | 155 | Follow us on Twitter and LinkedIn to stay up-to-date with the latest news and announcements: 156 | 157 | [![Twitter Follow](https://img.shields.io/twitter/follow/keploy?style=social)](https://twitter.com/keployio) 158 | 159 | [![LinkedIn Follow](https://img.shields.io/badge/Connect%20On-LinkedIn-blue)](https://www.linkedin.com/company/keploy/) 160 | 161 | You can also reach out to us and submit your Statement Of Interests via email at support@keploy.io. 162 | 163 | We look forward to hearing from you and helping you get involved with the Keploy community! 164 | 165 | ## Code Of Conduct 166 | Contributors to this project are expected to conduct themselves in a respectful way. 167 | See the [CNCF Community Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md) as a reference. 168 | 169 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2022 Keploy Inc 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /MENTOR-GUIDE.md: -------------------------------------------------------------------------------- 1 | # Mentor guide 2 | ## External resources for mentors 3 | [GSoC’s mentor guide](https://google.github.io/gsocguides/mentor/) 4 | 5 | ## Why become a mentor? 6 | As a mentor you get the opportunity to mentor a newbie in open source on your favourite project. 7 | 8 | ## How to become a mentor? 9 | There are 3 steps to becoming a GSoC mentor: 10 | * Propose a project (make sure you have the green light from your manager on the time commitment) 11 | * Interact with students in the student application phase, answer their questions and help them develop their applications 12 | * Review student applications to your organization and project. Select a student(s) to work with you! 13 | 14 | ## What is expected of a mentor? 15 | As a mentor you have the following responsibilities: 16 | * Carefully plan out a project, expectations, deliverables with the student you take on. 17 | * Make sure you have enough experience with the project you’re proposing. 18 | * Mentor the student throughout the code period, making sure they have a good development/testing setup and a good way to get started. 19 | * Review their progress regularly. 20 | -------------------------------------------------------------------------------- /PROPOSAL-GUIDE.md: -------------------------------------------------------------------------------- 1 | # Proposal template 2 | ## 1. Contact details 3 | Full name: 4 | Country: 5 | Time zone: 6 | Email: 7 | Github ID: 8 | Personal blog (optional): 9 | Twitter/LinkedIn/others: 10 | 11 | ## 2. GSOC information 12 | 13 | - Have you participated in the Google Summer of Code previously? Please describe your experience. 14 | Are you applying to any other organizations this year? If so, please list them. 15 | - How many hours will you devote to your GSoC project each week? Do you have any other commitments during the summer? 16 | - Have you ever contributed code to Keploy ? If you have, post the Pull Request (PR) links (It’s ok if they have not been merged/approved yet) 17 | - Do you plan on contributing to the Keploy project after GSoC is finished? 18 | - Were you able to install Keploy locally on your laptop? 19 | - If no, please explain why (Unsupported architecture, missing documentation, time constraints etc)? 20 | - If yes, how was the installation experience (missing documentation, complexity etc)? 21 | - Have you used kubernetes in the past? Please provide a brief description and if possible links to the work. 22 | - Have you used golang in the past? Please provide a brief description and if possible some code samples. 23 | - (If you are interested in the UI project) Have you worked with a frontend framework/library in the past? Please provide a brief description and if possible some code samples. 24 | 25 | ## 3. Project idea 26 | Repeat this section for as many project ideas as you want (Go in the order most likely to least likely). 27 | 28 | - Title of the idea that you are interested in 29 | - Brief description of the idea. 30 | - Have you worked on a similar project in the past? If yes, please provide a brief description (with links if possible) 31 | - How will the project benefit Keploy and the community 32 | - Will it help in driving adoption of Keploy? If yes, then how/why? 33 | - Deliverables 34 | - Include any milestones and deadlines 35 | - Include time for investigation, coding and documentation -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen?logo=github)](CODE_OF_CONDUCT.md) 2 | [![Tests](https://github.com/keploy/keploy/actions/workflows/go.yml/badge.svg)](https://github.com/keploy/keploy/actions) 3 | [![Slack](.github/slack.svg)](https://join.slack.com/t/keploy/shared_invite/zt-12rfbvc01-o54cOG0X1G6eVJTuI_orSA) 4 | [![License](.github/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) 5 | 6 | # About Keploy 7 | Keploy is a no-code testing platform that generates tests from API calls. 8 | 9 | It captures the external dependency network calls (like database queries, internal/external services) for each request to replay them (including writes/mutations!) later during testing. 10 | 11 | Developers can use keploy alongside their favorite unit testing framework to save time writing testcases. 12 | 13 | # Keploy + Google Summer of Code, 2024 14 | This is the main place for all information related to Keploy's participation in Google Summer of Code, 2024 as a mentoring organization. 15 | 16 | ## What is Google Summer of Code? 17 | 18 | [Google Summer of Code](https://summerofcode.withgoogle.com/) is a 16 years old program, run every summer, with the intention of bringing more students into open source. 19 | 20 | Open source projects apply as mentor organizations and if they are accepted, students send proposals to them to work on a few months' long project. Projects can be planned out by the organizations in advance or can be proposed by students. 21 | 22 | Google pays the students, not the organizations they work with. Beginning in 2024, Google is opening the program up to all newcomers of open source that are 18 years and older. 23 | 24 | You can read more about the format of the program and its goals [here](https://google.github.io/gsocguides/mentor/). 25 | 26 | 27 | ## What is the timeline for GSoC 2024? 28 | [Full timeline](https://developers.google.com/open-source/gsoc/timeline) 29 | 30 | |Important events | Deadline| 31 | | ----- | ----- | 32 | | Organization Applications Open | January 22, 2024| 33 | | Organization Application Deadline | February 6, 2024 | 34 | | Organizations Announced | February 21, 2024 | 35 | | Potential GSoC contributors discuss application ideas with mentoring organizations | February 22 - March 18, 2024 | 36 | | GSoC contributor application period | March 18 - April 2, 2024 | 37 | | Accepted GSoC Contributor projects announced | May 1, 2024 | 38 | | Contributors work on their Google Summer of Code projects | May 27, 2024 - August 26, 2024| 39 | | Mentors submit final GSoC contributor evaluations (standard coding period) | August 26, 2024 - September 2, 2024| 40 | | Initial results of Google Summer of Code 2024 announced | September 3, 2023 | 41 | | Students work on their Google Summer of Code project | May 1, 2024 - November 4, 2024| 42 | 43 | #### Statistics 44 | - Since year 2005, 20,000+ students and 19,000+ mentors from over 118 countries has came together to participate in GSoC 45 | - Approximately 38+ million lines of code have been produced 46 | 47 | --- 48 | 49 | # Additional Information 50 | 51 | ## Who can propose a project and who can be a mentor? 52 | 53 | Keploy members and members from the wider community can both propose projects, however, only Keploy members can be mentors. 54 | 55 | ## What is expected of a mentor? 56 | Please read [The Mentor Guide](MENTOR-GUIDE.md). 57 | 58 | ## Information for applying students 59 | 60 | Students should have knowledge of git, go, and markdown for most projects since the project work heavily depends on them. 61 | 62 | We invite students to look into [our open proposals](https://github.com/keploy/gsoc/tree/main/2023), ask mentors questions to understand the projects better and if interested apply for the project when the application period opens. 63 | 64 | Mentors would like to know why the project interests the student, whether they have the pre-requisite skills, and most importantly, how they plan to implement it. 65 | 66 | We encourage Contributors to set up Keploy for local development and play around with the code and tests to get more comfortable with the project. 67 | 68 | 69 | ## Community support 70 | We'd love to collaborate with you to make Keploy great. To get started: 71 | * [Slack](https://join.slack.com/t/keploy/shared_invite/zt-12rfbvc01-o54cOG0X1G6eVJTuI_orSA) - Discussions with the community and the team. 72 | * [GitHub](https://github.com/keploy/keploy/issues) - For bug reports and feature requests. 73 | 74 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Reporting a Vulnerability 4 | 5 | We value security for the project very highly. We encourage all users to report any vulnerabilities they discover to us. 6 | If you find a security vulnerability in the Keploy project, please report it responsibly by sending an email to hello@keploy.io 7 | 8 | At this juncture, we don't have a bug bounty program. We are a small team trying to solve a big problem. We urge you to report any vulnerabilities responsibly 9 | so that we can continue building a secure application for the entire community. -------------------------------------------------------------------------------- /assets/issue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | Gala icon set 23 | 25 | 65 | 70 | 75 | 80 | 81 | 83 | 84 | 86 | image/svg+xml 87 | 89 | Gala icon set 90 | https://github.com/sisyphusion/gala-icons 91 | 92 | 93 | 94 | 95 | 96 | Jake Wells 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 111 | 117 | 123 | 124 | -------------------------------------------------------------------------------- /assets/pr.svg: -------------------------------------------------------------------------------- 1 | --------------------------------------------------------------------------------