From 87eb6215852fc4026da148ca9282166d577df12a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20S=C5=82odkowicz?= Date: Mon, 7 Nov 2016 12:48:10 +0100 Subject: [PATCH 1/2] Add Travis CI for Cloudflare using prepared account --- .travis.yml | 18 ++++++++++++++++-- test/test.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 test/test.sh diff --git a/.travis.yml b/.travis.yml index 867a6d2..72b9903 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,8 +10,22 @@ addons: packages: - shellcheck -script: - - bash -c 'shopt -s globstar; shellcheck getssl' +env: + global: + - CF_DOMAIN=test.org + - CF_EMAIL=getssl_test_account@mailinator.com + - CF_KEY=845830354648e4317e1541002f4b778d07b41 + +before_script: + - wget -O test/assert.sh https://raw.github.com/lehmannro/assert.sh/v1.1/assert.sh + - chmod +x test/assert.sh + - curl -X POST 'https://api.cloudflare.com/client/v4/zones' -H "X-Auth-Email:\ $CF_EMAIL" -H "X-Auth-Key:\ $CF_KEY" -H "Content-Type:\ application/json" --data "{\"name\":\"$CF_DOMAIN\",\"jump_start\":false}" +script: + - shellcheck getssl + - shellcheck dns_scripts/dns_add_cloudflare + - shellcheck dns_scripts/dns_del_cloudflare + - cd test && ./test.sh + matrix: fast_finish: true diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..9573b45 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,37 @@ +#! /usr/bin/env bash +. assert.sh + +P=../dns_scripts + +assert_raises $P/dns_add_cloudflare 1 +assert_raises "$P/dns_add_cloudflare ''" 1 +assert_raises "$P/dns_add_cloudflare '' ''" 1 +assert_raises "$P/dns_add_cloudflare only_one" 1 + +assert "CF_EMAIL=w@e.org $P/dns_add_cloudflare a.$CF_DOMAIN a" 'domain name not found on your cloudflare account' +assert_raises "CF_EMAIL=w@e.org $P/dns_add_cloudflare a.$CF_DOMAIN a" 1 + +assert "CF_KEY= $P/dns_add_cloudflare a.$CF_DOMAIN a" 'domain name not found on your cloudflare account' +assert_raises "CF_KEY= $P/dns_add_cloudflare a.$CF_DOMAIN a" 1 + +assert_end dns_add_cloudflare params + +assert "$P/dns_add_cloudflare a a" 'domain name not found on your cloudflare account' +assert_raises "$P/dns_add_cloudflare a a" 1 + +assert "$P/dns_add_cloudflare t1.$CF_DOMAIN t1" '' +assert_raises "$P/dns_add_cloudflare t1.$CF_DOMAIN t1" 0 + +assert "$P/dns_add_cloudflare t2.subdomain.$CF_DOMAIN t2" '' +assert_raises "$P/dns_add_cloudflare t2.subdomain.$CF_DOMAIN t2" 0 + +assert "$P/dns_add_cloudflare t3.sub\(domain.$CF_DOMAIN t3" 'Error: DNS challenge not added: DNS Validation Error' +assert_raises "$P/dns_add_cloudflare t3.sub\(domain.$CF_DOMAIN t3" 2 + +assert_end dns_add_cloudflare API + +assert_raises $P/dns_del_cloudflare 1 +assert_raises "$P/dns_del_cloudflare ''" 1 +assert_raises "$P/dns_del_cloudflare '' ''" 1 + +assert_end dns_del_cloudflare params From 845be28526b599d3ea0e3f726ff7d01df7bfa6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20S=C5=82odkowicz?= Date: Mon, 7 Nov 2016 17:09:12 +0100 Subject: [PATCH 2/2] Fix detecting response for record already added --- dns_scripts/dns_add_cloudflare | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dns_scripts/dns_add_cloudflare b/dns_scripts/dns_add_cloudflare index ef3d6fc..ba41ac5 100755 --- a/dns_scripts/dns_add_cloudflare +++ b/dns_scripts/dns_add_cloudflare @@ -36,7 +36,7 @@ domain_id=${ids[i]} resp=$(curl --silent "${PARAMS[@]}" -X POST "$API/$domain_id/dns_records" \ --data "{\"type\":\"TXT\",\"name\":\"_acme-challenge.${fulldomain%.$domain}\",\"content\":\"$token\",\"ttl\":300}") # code 81057 = The record already exists. -if [[ "${resp// }" == *'"success":false'* && ! "${resp// }" == *'"code":81057[^0-9]'* ]]; then +if [[ "${resp// }" == *'"success":false'* && ! "${resp// }" == *'"code":81057'[^0-9]* ]]; then re='"message":"([^"]+)"'; [[ "$resp" =~ $re ]] echo "Error: DNS challenge not added: ${BASH_REMATCH[1]:-unknown error}"; exit 2 fi