Comments (10)
I'm tempted to write these tests in bash, so they exercise the actual s3-credentials
command itself.
from s3-credentials.
Adapting this pattern: https://stackoverflow.com/a/61193490/6083
This in conftest.py
:
import pytest
def pytest_addoption(parser):
parser.addoption(
"--integration", action="store_true", default=False, help="run integration tests"
)
def pytest_collection_modifyitems(config, items):
if config.getoption("--integration"):
# Also run integration tests
return
skip_slow = pytest.mark.skip(reason="use --integration option to run")
for item in items:
if "integration" in item.keywords:
item.add_marker(skip_slow)
Then mark integration tests like so:
@pytest.mark.integration
def test_integration():
assert False, "Failing integration test"
Running pytest
skips them, running pytest --integration
executes them.
from s3-credentials.
In tests/test_integration.py
I can use this to skip having to add that decorator to every test function:
import pytest
# Mark all tests in this module with "integration":
pytestmark = pytest.mark.integration
def test_integration():
assert False, "Failing integration test"
from s3-credentials.
The one thing I won't be able to test automatically: that tokens with --duration 15m
expire (see #duration) - because 15m is the minimum duration allowed by STS and I don't want to have the tests hang for 15 minutes waiting for that to happen.
from s3-credentials.
.... unless i have a pytest --integration-long
option which executes those tests and means that the test suite will take 15 minutes to run!
from s3-credentials.
This is another reason to add s3-credentials list-bucket
in #28 - so I can use it as part of these tests.
from s3-credentials.
Actually no, I don't need list-bucket
- I can use boto3
directly to confirm that things have happened.
from s3-credentials.
This was really annoying: I kept getting errors that the access key I was trying to use for the put_object
didn't exist.
I tried sleeping for 10 seconds and it started working. I tried sleeping for 5 seconds and it failed again. So 10 seconds it is.
s3-credentials/tests/test_integration.py
Lines 34 to 40 in 98b2a40
from s3-credentials.
I only have a test for the happy path right now, but I'll add more tests to this module as part of the work on time limited credentials in #27.
from s3-credentials.
pytest --integration
documentation: https://github.com/simonw/s3-credentials/blob/f70e76c37b638492b128d3781016166c7da88806/README.md#integration-tests
from s3-credentials.
Related Issues (20)
- Way to make an existing bucket public or private HOT 1
- Convert README into documentation website HOT 3
- Make it easier to add extra policy statements HOT 10
- Provide a `--profile` option to allow AWS profile selection HOT 3
- Using --policy should imply --user-permissions-boundary=none HOT 2
- s3-credentials.AmazonS3FullAccess has MaxSessionDuration 3600, should be 12 hours HOT 5
- KeyError if listing bucket with no items returned
- s3-credentials list-buckets --details should show region and website URL, if configured HOT 2
- `s3-credentials get-objects` command HOT 7
- `get-objects/put-objects` `--skip` and `--skip-hash` options HOT 1
- Add the options to add tags to the created resources HOT 3
- `set-public-policy` command HOT 5
- Add s3:PutObjectAcl to write policies HOT 3
- `s3-credentials delete-objects` command HOT 11
- Mysterious test failure in `test_put_objects` HOT 4
- debug-bucket command HOT 3
- Command to make a bucket public HOT 4
- `s3-credentials create name-of-bucket --create-bucket --public` fails with error HOT 4
- `s3-credentials list-bucket --urls` option HOT 1
- CI failures, including ImportError: cannot import name 'mock_s3' from 'moto' HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from s3-credentials.