This repo serves as a tutorial of how to use golang interfaces in order to achieve a modular and testable code. the code is divided into 3 parts:
- phase 1 - the basic implementation of a s3 downloader. The s3 downloader is a simple program that downloads an object from aws s3 bucket and saves it to a file.
- phase 2 - the same program but with interfaces and unit tests.
- phase 3 - the same program as in phase 2 with more code refactoring and better tests coverage.
make test_phase_2
make test_phase_3
make test_with_coverage