| #!/usr/bin/env bats |
| |
| # This tests pushing and pulling plugins |
| |
| load helpers |
| |
| user="testuser" |
| password="testpassword" |
| base="hello-world" |
| |
| #TODO: Create plugin image |
| function create_plugin() { |
| plugindir=$(mktemp -d) |
| |
| cat - > $plugindir/config.json <<CONFIGJSON |
| { |
| "manifestVersion": "v0", |
| "description": "A test plugin for integration tests", |
| "entrypoint": ["/usr/bin/ncat", "-l", "-U", "//run/docker/plugins/plugin.sock"], |
| "interface" : { |
| "types": ["docker.volumedriver/1.0"], |
| "socket": "plugin.sock" |
| } |
| } |
| CONFIGJSON |
| |
| cid=$(docker create dmcgowan/ncat:latest /bin/sh) |
| |
| mkdir $plugindir/rootfs |
| |
| docker export $cid | tar -x -C $plugindir/rootfs |
| |
| docker rm $cid |
| |
| daemontmp=$(docker exec dockerdaemon mktemp -d) |
| |
| tar -c -C $plugindir . | docker exec -i dockerdaemon tar -x -C $daemontmp |
| |
| docker exec dockerdaemon docker plugin create $1 $daemontmp |
| |
| docker exec dockerdaemon rm -rf $daemontmp |
| |
| rm -rf $plugindir |
| } |
| |
| @test "Test plugin push and pull" { |
| version_check docker "$GOLEM_DIND_VERSION" "1.13.0-rc3" |
| version_check docker "$GOLEM_DISTRIBUTION_VERSION" "2.6.0" |
| |
| login_oauth localregistry:5558 |
| image="localregistry:5558/testuser/plugin1" |
| |
| create_plugin $image |
| |
| run docker_t plugin push $image |
| echo $output |
| [ "$status" -eq 0 ] |
| |
| docker_t plugin rm $image |
| |
| docker_t plugin install --grant-all-permissions $image |
| } |
| |
| @test "Test plugin push and failed image pull" { |
| version_check docker "$GOLEM_DIND_VERSION" "1.13.0-rc3" |
| version_check docker "$GOLEM_DISTRIBUTION_VERSION" "2.6.0" |
| |
| |
| login_oauth localregistry:5558 |
| image="localregistry:5558/testuser/plugin-not-image" |
| |
| create_plugin $image |
| |
| run docker_t plugin push $image |
| echo $output |
| [ "$status" -eq 0 ] |
| |
| docker_t plugin rm $image |
| |
| run docker_t pull $image |
| |
| [ "$status" -ne 0 ] |
| } |
| |
| @test "Test image push and failed plugin pull" { |
| version_check docker "$GOLEM_DIND_VERSION" "1.13.0-rc3" |
| version_check docker "$GOLEM_DISTRIBUTION_VERSION" "2.6.0" |
| |
| login_oauth localregistry:5558 |
| image="localregistry:5558/testuser/image-not-plugin" |
| |
| build $image "$base:latest" |
| |
| run docker_t push $image |
| echo $output |
| [ "$status" -eq 0 ] |
| |
| docker_t rmi $image |
| |
| run docker_t plugin install --grant-all-permissions $image |
| |
| [ "$status" -ne 0 ] |
| } |