dotcloud/docker

View on GitHub
integration-cli/fixtures/auth/docker-credential-shell-test

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash

set -e

listFile=shell_test_list.json

case $1 in
    "store")
        in=$(< /dev/stdin)
        server=$(echo "$in" | jq --raw-output ".ServerURL")
        serverHash=$(echo "$server" | sha1sum - | awk '{print $1}')

        username=$(echo "$in" | jq --raw-output ".Username")
        password=$(echo "$in" | jq --raw-output ".Secret")
        echo "{ \"Username\": \"${username}\", \"Secret\": \"${password}\" }" > $TEMP/$serverHash
        # add the server to the list file
        if [[ ! -f $TEMP/$listFile ]]; then
            echo "{ \"${server}\": \"${username}\" }" > $TEMP/$listFile
        else
            list=$(< $TEMP/$listFile)
            echo "$list" | jq ". + {\"${server}\": \"${username}\"}" > $TEMP/$listFile
        fi
        ;;
    "get")
        in=$(< /dev/stdin)
        serverHash=$(echo "$in" | sha1sum - | awk '{print $1}')
        if [[ ! -f $TEMP/$serverHash ]]; then
            echo "credentials not found in native keychain"
            exit 1
        fi
        payload=$(< $TEMP/$serverHash)
        echo "$payload"
        ;;
    "erase")
        in=$(< /dev/stdin)
        serverHash=$(echo "$in" | sha1sum - | awk '{print $1}')
        rm -f $TEMP/$serverHash

        # Remove the server from the list
        list=$(< $TEMP/$listFile)
        echo "$list" | jq "del(.[\"${in}\"])" > $TEMP/$listFile
        ;;
    "list")
        if [[ ! -f $TEMP/$listFile ]]; then
            echo "{}"
        else
            payload=$(< $TEMP/$listFile)
            echo "$payload"
        fi
        ;;
    *)
        echo "unknown credential option"
        exit 1
        ;;
esac