Skip to content

Project Design

Adnan Khan edited this page Jan 17, 2023 · 4 revisions

Design

The project is a CLI application that uses Python argparse for argument handling. We utilize the third-party library colorama to provide colorized output.

The three operating modes are implemented in their respective modules (search, attack, and enumerate). All functionality related to interacting with the GitHub API is located within the github module. Any functionality pertaining to interacting with a locally cloned git repository is contained in the git module.

Any user-facing print statements should live in each respective module, and only log statements should be present within the github and git modules.

Code Standards

All non-unit test code should have function documentation for the method, parameters, and return value. Additionally, all lines must be no longer than 79 characters.

Testing

Manual testing

Since this tool is an enumeration and attack tool targeting GitHub, it is essential to test any new features manually. This will require creating test repositories and users to ensure the new functionality works as intended. If you would like to discuss the test scenarios that would be helpful in ensuring your new contribution works, feel free to discuss this in the discussions section.

Unit Tests

All new features must have unit tests written as part of the pull request. The unit tests must cover the passing, failure, and edge cases at a minimum.

Unit tests should mock out any requests to GitHub.com. It is ok to use files for unit tests, provided they live within the test/files directory, and they are not written to. The file open builtin should be mocked out for any unit tests that write files.

Integration Testing

Integration testing is performed on the develop and main branches on a nightly basis and when new features are added to the branches. Integration testing may also be carried out manually against proposed new features by maintainers.