* Setup pre-commit
* Run precommit hook across all files
* Increase scope of Protocol test generaton
Added support for the following fields in protocol tests:
- forbidQueryParams
- requireQueryParams
- headers
* Implement Instantiator
* Add support for dev-dependencies
* Pass the protocol in Protocol config
* Add initial protocol test generator
This commit adds an initial and very limited implementation of protocol test generation. Specifically,
it only asserts that the query string contains certain required parameters. We will update protocol test generation in concert with updates to the code generation features.
* Fixes from integration tests
* Add test of recursive maps, fix implementation of empty maps
* Add protocol test generator, pre-commit hooks
* Fix test
* Fix formatting
* Productionize Integration Test Machinery
smithy-build.json is now dynamically generated along with a Cargo.toml to facilitate easy adding of new integration tests.
* We don't need REPO_ROOT anymore
* Add inital CI workflow
* Run unit tests
* Run integration tests & ktlint
* Split job, set REPO_ROOT
* Update to satisfy new cargo clippy
* Upload an artifact
* Run runtime tests in CI
* Add missing test.sh
* Make script path indepdendent
* Run clippy on Rust runtime
* move artifact upload to the correct job
* Don't upload target
* Fix Rust code formatting
* Fix kotlin codestyle
* Fix merge issue
A builder object is generated for Structure shapes. The builder will be fallible (return `Result<T, String>`) if the structure has required members without defaults.
If the structure has no required members, the `build()` method directly returns the constructed object. This required a number of refinements to our module handling as the builders are namespaced to 1-module-per-shape.
To support protocol tests, this commit adds `decode` to our base64 implementation. The implementation is validated against the base64 crate and stress-tested with proptest for correctness and crash-free-ness.
* Add support for unnamed enumerations
Unnamed enumerations are supported by creating a "newtype" that wraps the string. The newtype provides the valid values as a list for convenience.
* Take intellij's suggestion to simplify
* Rename function to values()
* Add new models to run integration tests against
* Add initial support for HTTP protocols
* Refactor protocol generation arguments
* Add more method comments
* Remove some dead code
* CR feedback