# 18F Cloud Foundry Deck

[![Build Status](](

## Tech Stack
- `Go` (v1.5 required) for the backend server. [![Go Code Coverage Status](](

- `AngularJS` for the frontend. [![JS Code Coverage Status](](

## Setup
### Create a Client with UAAC
- Make sure [UAAC]( is installed.
- Target your UAA server. `uaac target <>`
- Login with your current UAA account. `uaac token client get <your admin account> -s <your uaa admin password>`
- Create client account:
uaac client add <your-client-id> \
 --authorities cloud_controller.admin,,cloud_controller.write,openid, \
 --authorized_grant_types authorization_code,client_credentials,refresh_token \
 --scope cloud_controller.admin,,cloud_controller.write,openid, \
-s <your-client-secret>
- Unable to create an account still? Troubleshoot [here](

### Set the environment variables
If you are testing locally, export these variables. If you are deploying to cloud foundry, modify the manifest.yml
- `CONSOLE_CLIENT_ID`: Registered client id with UAA.
- `CONSOLE_CLIENT_SECRET`: The client secret.
- `CONSOLE_HOSTNAME`: The URL of the service itself.
- `CONSOLE_LOGIN_URL`: The base URL of the auth service. i.e. ``
- `CONSOLE_UAA_URL`: The URL of the UAA service. i.e. ``
- `CONSOLE_API`: The URL of the API service. i.e. ``
- `PPROF_ENABLED`: An optional variable. If set to `true` or `1`, will turn on `/debug/pprof` endpoints as seen [here](

## Front end
Install front end dependencies
npm install
## Running locally
- Make sure all of your environment variables are set as mentioned above.
- Install [godep](
- Run `godep restore` to get all third party code
- `go run server.go`
- Navigate browser to `http://localhost:9999`

## Unit Testing
### Running Go unit tests
- `go test ./...`

### Running Angular unit tests
Test can then be run with the command:
npm run tests
To get a viewable coverage report change the `coverageReport` object in `karma.conf.js` from `json` to `html`
coverageReporter: {
    type: 'html',
    dir: 'coverage',
    subdir: '.'

### Acceptance Tests
This project currently uses a combination of [Agouti]( + [Ginkgo]( + [Gomega]( to provide BDD acceptance testing.
All the acceptance tests are in the 'acceptance' folder.

#### Setup
- Make sure you have PhantomJS installed: `brew install phantomjs`
- Install aogut: `go get`
- Install ginkgo `go get`
- Install gomega `go get`
- To run locally, in addition to the variables in the "Set the environmnent variables" section, you will need to set two more variables in your environment
- `CONSOLE_TEST_USERNAME`: The username of the account you want the tests to use to login into your `CONSOLE_LOGIN_URL`
- `CONSOLE_TEST_PASSWORD`: The password of the account you want the tests to use to login into your `CONSOLE_LOGIN_URL`

#### Running acceptance tests
- `cd acceptance && go test -tags acceptance`

## Deploying
- `cf push <optional-app-name>`

## CI
This project uses Travis-CI
In case you fork this project for your own use (no need to do this if forking to make a pull request), you will need to use the Travis-CI CLI tool to re-encrypt all the environment variables.
- `travis encrypt CONSOLE_CLIENT_ID='<your client id>' --add`
- `travis encrypt CONSOLE_CLIENT_SECRET='<your client secret>' --add`
- `travis encrypt CONSOLE_API_URL='<your public api url>' --add`
- `travis encrypt CONSOLE_UAA_URL='<your public uaa url>' --add`
- `travis encrypt CONSOLE_LOGIN_URL='<your public login url>' --add`
- `travis encrypt CONSOLE_TEST_PASSWORD='<your user account password>' --add`
- `travis encrypt CONSOLE_TEST_USERNAME='<your user account username>' --add`
- `travis encrypt CONSOLE_HOSTNAME="http://localhost:9999" --add`

Imports 6 package(s) ΒΆ