From 902d250572337b94e8f9f984b291b6e58603394f Mon Sep 17 00:00:00 2001
From: Dan Lorenc <dlorenc@google.com>
Date: Fri, 18 Dec 2020 08:16:38 -0600
Subject: [PATCH] Add a basic e2e test script and test data.

This runs against a running setup, and does a single upload of some node
data.
---
 .github/workflows/main.yml |  18 ++++++++++++++-
 tests/e2e-test.sh          |   9 ++++++++
 tests/node/SHASUMS256.txt  |  32 ++++++++++++++++++++++++++
 tests/node/key             | Bin 0 -> 1628 bytes
 tests/node/sha             |   1 +
 tests/node/sig             | Bin 0 -> 310 bytes
 tests/node/sig.asc         |  46 +++++++++++++++++++++++++++++++++++++
 tests/node/url             |   1 +
 8 files changed, 106 insertions(+), 1 deletion(-)
 create mode 100755 tests/e2e-test.sh
 create mode 100644 tests/node/SHASUMS256.txt
 create mode 100644 tests/node/key
 create mode 100644 tests/node/sha
 create mode 100644 tests/node/sig
 create mode 100644 tests/node/sig.asc
 create mode 100644 tests/node/url

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 4c84c36..2a1c81d 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -12,7 +12,6 @@ on:
 
 # A workflow run is made up of one or more jobs that can run sequentially or in parallel
 jobs:
-  # This workflow contains a single job called "build"
   build:
     # The type of runner that the job will run on
     runs-on: ubuntu-latest
@@ -53,3 +52,20 @@ jobs:
         run: git update-index --refresh && git diff-index --quiet HEAD --
         # ignore errors here while we are using 'go get' above
         continue-on-error: true
+  e2e:
+    # The type of runner that the job will run on
+    runs-on: ubuntu-latest
+
+    # Steps represent a sequence of tasks that will be executed as part of the job
+    steps:
+      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+      - uses: actions/checkout@v2
+      - name: Docker Build
+        run: docker-compose build
+      - name: Docker Compose Start
+        run: docker-compose up -d
+      - uses: actions/setup-go@v2
+        with:
+          go-version: '1.15.6'
+      - name: CLI
+        run: .tests/e2e-test.sh
diff --git a/tests/e2e-test.sh b/tests/e2e-test.sh
new file mode 100755
index 0000000..443b63a
--- /dev/null
+++ b/tests/e2e-test.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -ex
+testdir=$(dirname "$0")
+
+# Node
+nodedir=${testdir}/node
+go run ./cmd/cli/ upload \
+    --artifact $(< ${nodedir}/url) --sha $(< ${nodedir}/sha) \
+    --signature=${nodedir}/sig  --public-key=${nodedir}/key
diff --git a/tests/node/SHASUMS256.txt b/tests/node/SHASUMS256.txt
new file mode 100644
index 0000000..2f9e03b
--- /dev/null
+++ b/tests/node/SHASUMS256.txt
@@ -0,0 +1,32 @@
+e9630d01ee1ff74445e12ab2f14581b2aea9201eca05b39f8174697afdba74b2  node-v15.4.0-aix-ppc64.tar.gz
+503d160016f6a61ec25a9462499721ef96b9ed08e232a420d17541774e079dda  node-v15.4.0-darwin-x64.tar.gz
+db5bfc430f865061bde1f6afe6d75fae98fc04b647050e9e7ad7444a44d790e0  node-v15.4.0-darwin-x64.tar.xz
+2e0efc6931f30e6d8ba1cdde018ae234bd6186b3f38ce8a94a8304f4340fbd2f  node-v15.4.0-headers.tar.gz
+cf1f16dbda084ac8102b2faeb2608bd3d3541311281ba8869da06649f8099dba  node-v15.4.0-headers.tar.xz
+0dad2932f7f7e0fc21bca0690d31f065080dbbf448527e982447355ff4bb91bd  node-v15.4.0-linux-arm64.tar.gz
+1b2b601167f6e07bb9b2bb86774bc386c5c60fac6ab28e49ad6d62f491be2b7f  node-v15.4.0-linux-arm64.tar.xz
+a36ecfa85ca2b6cfbb864190147a26c1fd2e04e15ab4b31b3a398663dc91223a  node-v15.4.0-linux-armv7l.tar.gz
+8912e375b96ef964db5c1ba100e3afedc13730d53570cbe7c0dd71e055afb1b4  node-v15.4.0-linux-armv7l.tar.xz
+ebcc8c6819032fc02dee3214d61032c11cd9ecfc764613e8f7ed2cbe5afaabff  node-v15.4.0-linux-ppc64le.tar.gz
+6948bad4bcdac9b8f4f8b0a29b8eb89c0b09c39ded0bdd67e4a55a4c89c0af80  node-v15.4.0-linux-ppc64le.tar.xz
+93ca0bf22bd0ee7a5f261a8235b0e8305873228e63c174bd15a77ce2d222c69f  node-v15.4.0-linux-s390x.tar.gz
+417ade49c5d9b15391fb47e5d95bc91b0da90977472f062905b22f1a4a027f4c  node-v15.4.0-linux-s390x.tar.xz
+96b801f51bf73330c65e6ee4d17c5b223fded16d8020af3b3550a548d271b1e2  node-v15.4.0-linux-x64.tar.gz
+a1fc57a8aeeb2a175ca62718fdc0f896efc0f78695a7d4f56d5e8653a24b1a11  node-v15.4.0-linux-x64.tar.xz
+4ee293f815395b1774895da79f02ae6bc5c158b93985a315db36b54f25f62c8c  node-v15.4.0.pkg
+b199796544d988b4bb61e38584cd097744e073fa0559cbec772858d91ce4649f  node-v15.4.0.tar.gz
+ba726955316c8190adc8e8c892d8782e7167643e41b22bb7c7aa4e092783e04e  node-v15.4.0.tar.xz
+343f603329de39f4019df9ef8ff7610d3e079bc397afd15560abf7bd9f60fafe  node-v15.4.0-win-x64.7z
+9bfd174d15cf38885740e3b2308e701f33d064bb1100afd59f8114298a89e4a7  node-v15.4.0-win-x64.zip
+ac97daba712c7e5ae58d8cdd9e7e7a3103092efdaef0328b14e80bc046b21d86  node-v15.4.0-win-x86.7z
+37d852eade26bfd262f62190f848265409e0de5d510753c158c619ed4897dd63  node-v15.4.0-win-x86.zip
+0be3e8050feecc0546d81fc5884626e7ea1ed99a2c1fdcc96e246e59774d4809  node-v15.4.0-x64.msi
+cee5d80302f0a4d29816cae05f80058e578c72d08caa36e19bd766a8bcd4a9cb  node-v15.4.0-x86.msi
+1a76edb3b10a006ea6108f318c9fa959fe1e692586bad90b3edfda4918f5fb69  win-x64/node.exe
+8730c9880ba0237ec978c6bfb224e84390112980dc39daabb89f1148e9f9f81d  win-x64/node.lib
+b7e88f414378a776282586a0de4a6aa61869c647426e57466ee6fac3059cc760  win-x64/node_pdb.7z
+c2618d56cd3a1cbf6b267c44b42f260082b3eb33b83944084a8e50425ba02fb2  win-x64/node_pdb.zip
+f170feef25cf2f77be3f9c67c123f03999f913cfb6a04267df827ed0320fa1d1  win-x86/node.exe
+5d6b151f6deaa4ca42b52e5333f467f2ae8f12dfa52715bf9f16562723fc996e  win-x86/node.lib
+60de0dc131697829439de285beef8dd31ad366cf6b183e5aac7467b098c38c21  win-x86/node_pdb.7z
+fc102b969efdd8a335d039d13d39c4a174947395fa0a89569e7b7381b278238f  win-x86/node_pdb.zip
diff --git a/tests/node/key b/tests/node/key
new file mode 100644
index 0000000000000000000000000000000000000000..7dedf2e7c569bcf39a441c290f4ac86f7c3ff98d
GIT binary patch
literal 1628
zcmb`Hdo<Gv0LQoAHq2O2-lh>{XkOP_nAJ5)R1A?c&v}d}$s^{GkdS%Bq{ozAiZE0o
zL|%pRSPyrl(ZW(pO4+T>?c96LJ@>!+*Y|wCe}2B_`#l4ehI)H4%E1z#3MpQepD!mi
zS&DT9Jz-mYZeq5?edsgVMRwI_2cJ09K5_Qj1LJAM0H=m&^4IB8xy&*<;^NxniFJfn
z?P}8+M-&B@%2a*(iO#cXholt~;;=eMVP)~dzOuG%W!=kOX2)0-<LRt&n%?at(G4)-
zoSqO9uPwO0W9wxvL!AaTiV_;$ZGEvx(YS<WCi#a8QwEzff#92vu_6__H$57J{)rk5
z>0?3;-@AbkzLEpfdU@5JLQ;^0ZuPZx+94saA@=H>mH6^jZsS<o)UqtUZDeDmg<=1W
zS>q&J<frjBjGHD4(HJ3rr8O=xaW%?PQ;XoueSEE+8rjhV2FZXy;Ck(C<cN^K@bEx1
zE`UrugtjJsm-v9cLc3rpIV2qGA4#>z0=q%ieaB`4s6b!{xP&+$CMOA(KmbsA00IWo
zz<>fxULC3mlQ?5+zpeUa49~3KeGn=mq2db+@C`-#!r;)NAR$N+zV=r>MG#-z+_mMQ
zO1@h7ml%rDy;B3GPe~8-6km&B+XpWYFWB<3Z9Qb8YIil!;<J{VqrQ~_Iyd{Etr~X+
z2bxkqfFipa_iD|>BzBo?v`^Fv(RFPBRA(uRDSK5+Yf|$1;PIUaUmwaT81!HT8Aa`3
zv;8MQ7@hhO8JQwu6O?J)6vuMIUJF@bO9AcUC9HtLfS5zOgFJ#9FVjB0IO|h-M2Orh
zF_^_;`aN;?f`o;Nd_(t(79`F5U3fEx>uf&MMWEdwLEzYR&dZpQrGtE!)GITeB3Eg<
zVFMdguotPZiuoKKs6Npc2BOLBduPm=DVEMq(1f|0JBm>2-w6_);1=sKzgYhO|DFFY
zi~Z^CD1p(DVKM(p0|)-yfM%cgs%3qE$T}^w8{yi^q$`_V(k0$cKP|b*Fxqb~Vr8c%
zmzGa4;-v<qq%PsME-rYCjv8qdzs=WUhau?|I|j;!@w8=>vr}LZp3G;>E9(Q4Y6tt*
zwtenKWpAu_eVH{7Lyw$#(gq~YRJ^>=q4_96wjd3swHWp37Ns3@{{5You-h})r*TJa
z3-m*lTdPL!dU<jt4sd^N-tG+n7Oc}s1oKs_6?)V)<ZQ2NOYV51)d{WYLkrTaYhS__
zUm6P0U!NK76?ZKh2$t=fZwu_n>rzVW<#FPkUX1l&|Ndf>Ozao=nG5|kInQ6K8tE{c
z*>lUHcT5mjhY_@Zp!Oe{|GtFg*fr_u?|gDr?snylEv}#YIN4Y6O<caJzy8|!%<cIv
zhrOmJN$~VqBfU0~kaWAY8p(vx9eSZoT^%*Xu<PuuOVz;kj2RbTU)7;-c+4?<2znWh
z6!7gaXLik%Fi69mTHPr_Gb{t8J9ZBtPs`S2Zify*boG_q9{z+rzDvn>BkEpgc58X(
zfg4{d(ldINE~F!y843LK+_S=BkZTXqJ^3oOGbPj8?3n>KY5!w}!qN!_J?Z^BCy3@?
zDPfvewNqz^#6}!wC22ay6;;@{#aOA=a#R&KZa7e7;R}B=^Hjp_!Z?n<n5VB?-SJVO
zV`xHw&&gE-QvSF%lm7D(vcRTL#qUE$|L2;294Me7_0K6kh!7XWfVmb!Q<e9lVso0m
zSob?%60PK>_ndBMTXU^=>J;FP?<<YZ9;_p+k)NKQoTIj$I9PgdF<5PGFaoccha2c|
z^2pxesnhn`sxY|Pg5!~W#!hkSaLOYjBR4nl5iwGfrXJBx?{NyaQCNG+5;zZ&*{rVi
zS%c6ZzjbBk0cNB*o~4|&msk0GHz_zZk)VN4;7%$Q-r;i#U|VelJSDWDB`$eLdTIx?
za3__K%usS>(@`=LEnKBtQjR_cvV=hlXZr|&PJ7~*32f>)dMwE*K}`*PWmADzAanzx
nzjIkviZ~~DCbhnTeBUkcZSq}})W=8f%x<F%`s10J)W$ynL1)~I

literal 0
HcmV?d00001

diff --git a/tests/node/sha b/tests/node/sha
new file mode 100644
index 0000000..c545c94
--- /dev/null
+++ b/tests/node/sha
@@ -0,0 +1 @@
+bc51ec78f8f290860c35cdd93ef3886b464ba5a535b2e6f2a80623439026bcd5
diff --git a/tests/node/sig b/tests/node/sig
new file mode 100644
index 0000000000000000000000000000000000000000..e5c05c33f678dd8246b112bfc150b2d02d9dd02f
GIT binary patch
literal 310
zcmV-60m=S}0W$;u0SEvc79j*21qhilLPV&qb>%mb?`9o_d!70P0$<SE@&F165R&g^
z9fo_I`mpT>{yU!|{xufNy&(kLR4%9xvv(dE??h=RfLCR(S2>h%kvmf&LH?fPpW%9#
zbg48%2JKY$@k@$_iqa7kbGdcBsI(ldTdFYZw)64P_{KT}2}g)+FgSgXx~`EiGYp=Q
zM=s98{T|nMv}(x)BGd5T#OZl`^>1o>2cyP`@FB4`u^Y&6bcK8FutOR*<x|reJiYt#
z!1lRQo`Zc{z$8(Hi;Oh&`_Kefp!#jnu7a^(qRoBc6POb!L8c<RT~0ZJi*P22&1g(x
z>lF3JAHlLUM}9p8@bRJn8CQektOSro$lME#M51=(iUW}KyR4<m^v;%IF{c3%?Y<4c
Is)<QnCP9^z*8l(j

literal 0
HcmV?d00001

diff --git a/tests/node/sig.asc b/tests/node/sig.asc
new file mode 100644
index 0000000..6f059a8
--- /dev/null
+++ b/tests/node/sig.asc
@@ -0,0 +1,46 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+e9630d01ee1ff74445e12ab2f14581b2aea9201eca05b39f8174697afdba74b2  node-v15.4.0-aix-ppc64.tar.gz
+503d160016f6a61ec25a9462499721ef96b9ed08e232a420d17541774e079dda  node-v15.4.0-darwin-x64.tar.gz
+db5bfc430f865061bde1f6afe6d75fae98fc04b647050e9e7ad7444a44d790e0  node-v15.4.0-darwin-x64.tar.xz
+2e0efc6931f30e6d8ba1cdde018ae234bd6186b3f38ce8a94a8304f4340fbd2f  node-v15.4.0-headers.tar.gz
+cf1f16dbda084ac8102b2faeb2608bd3d3541311281ba8869da06649f8099dba  node-v15.4.0-headers.tar.xz
+0dad2932f7f7e0fc21bca0690d31f065080dbbf448527e982447355ff4bb91bd  node-v15.4.0-linux-arm64.tar.gz
+1b2b601167f6e07bb9b2bb86774bc386c5c60fac6ab28e49ad6d62f491be2b7f  node-v15.4.0-linux-arm64.tar.xz
+a36ecfa85ca2b6cfbb864190147a26c1fd2e04e15ab4b31b3a398663dc91223a  node-v15.4.0-linux-armv7l.tar.gz
+8912e375b96ef964db5c1ba100e3afedc13730d53570cbe7c0dd71e055afb1b4  node-v15.4.0-linux-armv7l.tar.xz
+ebcc8c6819032fc02dee3214d61032c11cd9ecfc764613e8f7ed2cbe5afaabff  node-v15.4.0-linux-ppc64le.tar.gz
+6948bad4bcdac9b8f4f8b0a29b8eb89c0b09c39ded0bdd67e4a55a4c89c0af80  node-v15.4.0-linux-ppc64le.tar.xz
+93ca0bf22bd0ee7a5f261a8235b0e8305873228e63c174bd15a77ce2d222c69f  node-v15.4.0-linux-s390x.tar.gz
+417ade49c5d9b15391fb47e5d95bc91b0da90977472f062905b22f1a4a027f4c  node-v15.4.0-linux-s390x.tar.xz
+96b801f51bf73330c65e6ee4d17c5b223fded16d8020af3b3550a548d271b1e2  node-v15.4.0-linux-x64.tar.gz
+a1fc57a8aeeb2a175ca62718fdc0f896efc0f78695a7d4f56d5e8653a24b1a11  node-v15.4.0-linux-x64.tar.xz
+4ee293f815395b1774895da79f02ae6bc5c158b93985a315db36b54f25f62c8c  node-v15.4.0.pkg
+b199796544d988b4bb61e38584cd097744e073fa0559cbec772858d91ce4649f  node-v15.4.0.tar.gz
+ba726955316c8190adc8e8c892d8782e7167643e41b22bb7c7aa4e092783e04e  node-v15.4.0.tar.xz
+343f603329de39f4019df9ef8ff7610d3e079bc397afd15560abf7bd9f60fafe  node-v15.4.0-win-x64.7z
+9bfd174d15cf38885740e3b2308e701f33d064bb1100afd59f8114298a89e4a7  node-v15.4.0-win-x64.zip
+ac97daba712c7e5ae58d8cdd9e7e7a3103092efdaef0328b14e80bc046b21d86  node-v15.4.0-win-x86.7z
+37d852eade26bfd262f62190f848265409e0de5d510753c158c619ed4897dd63  node-v15.4.0-win-x86.zip
+0be3e8050feecc0546d81fc5884626e7ea1ed99a2c1fdcc96e246e59774d4809  node-v15.4.0-x64.msi
+cee5d80302f0a4d29816cae05f80058e578c72d08caa36e19bd766a8bcd4a9cb  node-v15.4.0-x86.msi
+1a76edb3b10a006ea6108f318c9fa959fe1e692586bad90b3edfda4918f5fb69  win-x64/node.exe
+8730c9880ba0237ec978c6bfb224e84390112980dc39daabb89f1148e9f9f81d  win-x64/node.lib
+b7e88f414378a776282586a0de4a6aa61869c647426e57466ee6fac3059cc760  win-x64/node_pdb.7z
+c2618d56cd3a1cbf6b267c44b42f260082b3eb33b83944084a8e50425ba02fb2  win-x64/node_pdb.zip
+f170feef25cf2f77be3f9c67c123f03999f913cfb6a04267df827ed0320fa1d1  win-x86/node.exe
+5d6b151f6deaa4ca42b52e5333f467f2ae8f12dfa52715bf9f16562723fc996e  win-x86/node.lib
+60de0dc131697829439de285beef8dd31ad366cf6b183e5aac7467b098c38c21  win-x86/node_pdb.7z
+fc102b969efdd8a335d039d13d39c4a174947395fa0a89569e7b7381b278238f  win-x86/node_pdb.zip
+-----BEGIN PGP SIGNATURE-----
+
+iQEzBAEBCAAdFiEEHAUImTNCRKivdeU3ku9mHYZ7nfoFAl/Q2/IACgkQku9mHYZ7
+nfpQ8wgAig10JH3M183WHbDQU1b+snCg+q1yoUUVHF8qIfxG+fbsvz4/zTFIWe3J
+cYlVoD4enJ5JE5/xOSJ1qeQnXTVD6CulGlzVFRCvs8909X6drLfx2NSAdKLZaoyw
+n4hjYu6/71e/fBkJJU0bPXRD1INqPfofhVJ8G+E9ubIYPv1/E8Wn9VJK+3DOdRTN
+W+VfBgTU6qDRVTsTDJTiQE6Rf5lIABKlgwBNuUF22GJm9Khcb0a/ewb8XZZo/Apf
+RWv0+f/CecGJs8wU0E9TYqS0ne+CkBSsvzxbWY0KeKBTIcM/AQf+wPn3Ad5Fu6O1
+R7Up/RjbCQifD7LpLZJGO1VTYqciag==
+=axYa
+-----END PGP SIGNATURE-----
diff --git a/tests/node/url b/tests/node/url
new file mode 100644
index 0000000..a3f3c28
--- /dev/null
+++ b/tests/node/url
@@ -0,0 +1 @@
+https://nodejs.org/dist/v15.4.0/SHASUMS256.txt
-- 
GitLab