a805ec601c | ||
---|---|---|
.circleci | ||
bin | ||
config | ||
db-server | ||
docs | ||
grunttasks | ||
lib | ||
scripts | ||
test | ||
.dockerignore | ||
.eslintrc | ||
.gitignore | ||
.migration-lint-ignore.json | ||
.nsprc | ||
.travis.yml | ||
AUTHORS | ||
CHANGELOG-server.md | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
Dockerfile-build | ||
Dockerfile-test | ||
Gruntfile.js | ||
LICENSE | ||
README.md | ||
index.js | ||
npm-shrinkwrap.json | ||
package.json |
README.md
Firefox Accounts database service
Node.js-based database service for Firefox Accounts. Includes:
- The API server.
- A memory-store backend. Useful as a stub for testing against.
- A MySQL backend. Used in production.
To run the tests for all components:
npm test
Prerequisites
- node.js 6
- npm
- MySQL (we use version 5.6.34 in production)
API Server
See the API documentation. Backend implementers should also read the database documentation.
For example usage, see the readme.
To run the server tests:
npm run test-server
Memory-store backend
Implements the backend API as a memory store.
This is the backend store
that is loaded by the default export
from the npm package,
so the following call to require
will return a server
that uses the memory-store backend:
var fxadb = require('fxa-auth-db-mysql')
To run the memory-store tests:
npm run test-mem
MySQL backend
Implements the backend API as a MySQL database.
To run the MySQL tests:
npm run test-mysql
Configuration
Both the server
and the database patcher
read values from a config file
config/$NODE_ENV.json
,
where NODE_ENV
is an environment variable
set in the shell.
For local development,
set NODE_ENV
to dev
then create a new JSON file
called config/dev.json
.
In there,
you can set any values
that you'd like to override
the master config file,
config/config.js
.
For instance:
{
"master": {
"user": "root",
"password": "foo"
},
"slave": {
"user": "root",
"password": "bar"
}
}
Starting the server
You can start the server like so:
npm start
This will set up the database for you
then start the server on whichever port
is configured in config/$NODE_ENV.json
(port 8000 by default).
If the server fails to start, check that MySQL is running and that your active config has the correct settings to connect to the database.
Setting-up the database separately
If you want to run the database patcher on its own, use the following command:
node bin/db_patcher.js
This command creates the database
if it doesn't exist,
then runs migrations
from lib/db/schema
in the appropriate order.
Both forward and reverse migrations
are contained in this directory,
but note that the reverse migrations
are commented out
as a precaution against
accidental execution.
If the command fails, check that MySQL is running and that your active config has the correct settings to connect to the database.
Clean-up
If you want to clean the database, just drop it in MySQL:
mysql -u root -p -e 'DROP DATABASE fxa'
It will be recreated automatically
next time you run npm start
.