#
# See WalkEncryptionTest.java
#
# This file is a template for test configuration file used by WalkEncryptionTest.
# To be active, this file must have the following hard coded name: jgit-s3-config.properties
# To be active, this file must be discovered by WalkEncryptionTest from one of these locations:
# * ${user.home}/jgit-s3-config.properties
# * ${user.dir}/jgit-s3-config.properties
# * ${user.dir}/tst-rsrc/jgit-s3-config.properties
# When this file is missing, tests in WalkEncryptionTest will not run, only report a warning.
#

#
# WalkEncryptionTest requires amazon s3 test bucket setup.
#
# Test bucket setup instructions:
#
# Create IAM user:
# http://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html
# * user name: jgit.eclipse.org
#
# Configure IAM user S3 bucket access
# http://docs.aws.amazon.com/AmazonS3/latest/dev/example-policies-s3.html
# * attach S3 user policy to user account: jgit-s3-config.policy.user.json
#
# Create S3 bucket:
# http://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html
# * bucket name: jgit.eclipse.org
#
# Configure S3 bucket source address/mask access:
# http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
# * attach bucket policy to the test bucket: jgit-s3-config.policy.bucket.json
# * verify that any required source address/mask is included in the bucket policy:
# * see https://wiki.eclipse.org/Hudson
# * see http://www.tcpiputils.com/browse/ip-address/198.41.30.200
# * proxy.eclipse.org	198.41.30.0/24
# * Andrei Pozolotin	67.175.188.187/32
#
# Configure bucket 1 day expiration in object life cycle management:
# * https://docs.aws.amazon.com/AmazonS3/latest/dev/manage-lifecycle-using-console.html
#

# AWS API signature version (defaults to 2)
# aws.api.signature.version=4

# AWS S3 Region Domain (defaults to s3.amazonaws.com)
# domain: s3-us-east-2.amazonaws.com

# AWS S3 Region (required if aws.api.signature.version=4, must match domain)
# region: us-east-2

# Test bucket name
test.bucket=jgit.eclipse.org

# IAM credentials for user jgit.eclipse.org
accesskey=AKIAIYWXB4ETREBRMZDQ
secretkey=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
