AngularJS & Patternfly Application: Thermostat UI
npm, which will pull down all other dependencies.
keycloak.json generated by a Keycloak server (if desired, ie, running with
NODE_ENV=production), placed in src/app/components/auth/. The file contents should
look like:
{
"url": "http://some.domain:PORT/auth",
"realm": "FooRealm",
"clientId": "BarClientId"
}
GATEWAY_URL should be set to the URL of a Thermostat Web-Gateway instance.
The default value of this variable is the default URL for the web-client
mockapi server.
Expected values for NODE_ENV:
-
productionfor production environments, which produces a smaller application bundle and expects Keycloak configuration -
testingfor test environments, ex. CI -
developmentfor individual developers' machines
In testing and development, one hard-coded user exists. The username is
test-user and the password is test-pass. This is intended only for
development and testing, never for deployments.
When building with npm run build, these values should be set via a standard
shell environment variable. When building with s2i build, the file .s2i/environment
should exist and contain ex. NODE_ENV=production.
Live-reload development:
npm run devserver, then point a web browser at localhost:8080.
One-time build:
npm run build for a build with unit tests but not integration tests, or
npm run verify for a build with unit tests and integration tests. This
requires the embedded webserver and mockapi-server to be able to run and bind
on their respective ports, as described below.
Non-live-reload web-server:
npm start, then point a web browser at localhost:8080.
In this case, you may run the server on a different port than the default 8080
by setting the environment variable PORT to a port number of your choosing.
The server also binds by default on 0.0.0.0, which can be overridden with the
environment variable HOST.
This will also bring up the mock API endpoint server, which by default will run
on port 8888 and bind to 0.0.0.0. These can be overridden with the
environment variables MOCKAPI_PORT and MOCKAPI_HOST.
The webserver and mockapi-server are both run as daemons. They can be stopped
using npm stop.
Testing
Unit tests are run with both npm run build and npm run verify, but
integration tests are only run on npm run verify.
To run unit tests separately from a build, use npm test for a one-shot test
suite execution, or npm run test-watch to monitor test files and rerun the
suite when any test file changes.
To run integration tests separately, use npm run integration-test. This will
require the embedded webserver to be running, using ex. npm start.
npm completionoutputs a script which will enable completion for things likenpm run <TAB><TAB>, which will offer completions for web-client build and run scripts. You can save this file in your home directory and source it in your.bashrcfor example, or put it somewhere system-wide. On Fedora, putting the output of this command in the file/etc/bash_completion.d/npmwill work for system-wide completion enabling.
s2i can also be used to produce an application image. The expected base image
is centos/nodejs-6-centos7, although others may also work. The build invocation
will look like s2i build . centos/nodejs-6-centos7 thermostat-web-client and
running the image will look like docker run -it --rm -p 9090:8080 thermostat-web-client,
which will bind the application to port 9090 on the host machine.
The PORT and HOST variables outlined above may also be set in .s2i/environment.
In order to deploy this web-client on OpenShift do:
$ oc new-app centos/nodejs-6-centos7~https://github.com/andrewazores/thermostat-web-client
Follow the Thermostat Web-Gateway configuration guide for Keycloak. See the
top of this file for where to place the generated keycloak.json.
Additionally, configure the Client on the Keycloak Server with the following parameters:
Valid Redirect URIs: http://localhost:8080/* (or similar)
Web Origins: +