#
# 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
#

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

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