source-controller
source-controller copied to clipboard
Git Operations Test Server
The test coverage around git operations heavily relies on gitkit for self-contained tests. For E2E tests we also rely on directly accessing SaaS providers (e.g. GitHub) to ensure that our git implementation is consistently working across all out supported platforms.
Unfortunately, different SaaS providers support a different range of crypto algorithms, Git protocol versions, etc. Our upstream dependencies may introduce changes that may break specific features with said SaaS providers.
Instead of creating E2E tests for every single major SaaS provider, we could instead create or improving the existing git server to enable us to test features we want to support, and therefore quickly understand regression before releasing changes.
Below is a brain dump of specific features that are based on different issues that users have reported, and ideally a git test server would support:
- HTTP specific settings
- [ ] Be able to switch ON/OFF support for HTTP/1.1 and HTTP/2.
- [ ] Reject Basic Auth when provided empty set of user/password.
- [ ] Algorithm specific settings
- [ ] TLS Ciphers
- Git protocol specific settings
- [ ] HTTP Dump Server
- [ ] HTTP Smart Server
- [ ] Git Protocol v2
- SSH specific settings
- [x] No simultaneous connections https://github.com/fluxcd/gitkit/pull/1
- [x] Short timeout connections https://github.com/fluxcd/gitkit/pull/1
- [ ] Single operation connections
- [ ] Add random latency https://github.com/fluxcd/gitkit/pull/6
- [x] Algorithm specific settings https://github.com/fluxcd/gitkit/pull/1
- [x] Key Exchange Algorithm
- [x] MACs
- [x] Ciphers
- [x] HostKey Algorithmn
These items should enable the test coverage to extend to support each one of the points above.