diff --git a/opt-cc-api/README.md b/api/README.md similarity index 100% rename from opt-cc-api/README.md rename to api/README.md diff --git a/opt-cc-api/config.js b/api/config.js similarity index 100% rename from opt-cc-api/config.js rename to api/config.js diff --git a/opt-cc-api/cron-job/update-signatures.js b/api/cron-job/update-signatures.js similarity index 100% rename from opt-cc-api/cron-job/update-signatures.js rename to api/cron-job/update-signatures.js diff --git a/opt-cc-api/middleware/auth-middleware.js b/api/middleware/auth-middleware.js similarity index 100% rename from opt-cc-api/middleware/auth-middleware.js rename to api/middleware/auth-middleware.js diff --git a/opt-cc-api/middleware/error-response.js b/api/middleware/error-response.js similarity index 100% rename from opt-cc-api/middleware/error-response.js rename to api/middleware/error-response.js diff --git a/opt-cc-api/middleware/filter-handler-mongo.js b/api/middleware/filter-handler-mongo.js similarity index 100% rename from opt-cc-api/middleware/filter-handler-mongo.js rename to api/middleware/filter-handler-mongo.js diff --git a/opt-cc-api/middleware/limitoffset-middleware-mongo.js b/api/middleware/limitoffset-middleware-mongo.js similarity index 100% rename from opt-cc-api/middleware/limitoffset-middleware-mongo.js rename to api/middleware/limitoffset-middleware-mongo.js diff --git a/opt-cc-api/middleware/request-checks.js b/api/middleware/request-checks.js similarity index 100% rename from opt-cc-api/middleware/request-checks.js rename to api/middleware/request-checks.js diff --git a/opt-cc-api/middleware/router-handling.js b/api/middleware/router-handling.js similarity index 100% rename from opt-cc-api/middleware/router-handling.js rename to api/middleware/router-handling.js diff --git a/opt-cc-api/middleware/util.js b/api/middleware/util.js similarity index 100% rename from opt-cc-api/middleware/util.js rename to api/middleware/util.js diff --git a/opt-cc-api/models/app-user.js b/api/models/app-user.js similarity index 100% rename from opt-cc-api/models/app-user.js rename to api/models/app-user.js diff --git a/opt-cc-api/models/awarding.js b/api/models/awarding.js similarity index 100% rename from opt-cc-api/models/awarding.js rename to api/models/awarding.js diff --git a/opt-cc-api/models/decoration.js b/api/models/decoration.js similarity index 100% rename from opt-cc-api/models/decoration.js rename to api/models/decoration.js diff --git a/opt-cc-api/models/rank.js b/api/models/rank.js similarity index 100% rename from opt-cc-api/models/rank.js rename to api/models/rank.js diff --git a/opt-cc-api/models/squad.js b/api/models/squad.js similarity index 100% rename from opt-cc-api/models/squad.js rename to api/models/squad.js diff --git a/opt-cc-api/models/user.js b/api/models/user.js similarity index 100% rename from opt-cc-api/models/user.js rename to api/models/user.js diff --git a/opt-cc-api/package.json b/api/package.json similarity index 93% rename from opt-cc-api/package.json rename to api/package.json index 0d15d5b..9d9e576 100644 --- a/opt-cc-api/package.json +++ b/api/package.json @@ -9,7 +9,7 @@ "scripts": { "start": "node server.js", "dev": "nodemon server.js", - "test": "mocha --require ./test/spec_helper.js" + "test": "mocha --require ./test/config/spec_helper.js" }, "dependencies": { "async": "^2.4.0", diff --git a/opt-cc-api/public/assets/opt-logo-klein.png b/api/public/assets/opt-logo-klein.png similarity index 100% rename from opt-cc-api/public/assets/opt-logo-klein.png rename to api/public/assets/opt-logo-klein.png diff --git a/opt-cc-api/public/favicon.ico b/api/public/favicon.ico similarity index 100% rename from opt-cc-api/public/favicon.ico rename to api/public/favicon.ico diff --git a/opt-cc-api/public/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 b/api/public/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 similarity index 100% rename from opt-cc-api/public/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 rename to api/public/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 diff --git a/opt-cc-api/public/glyphicons-halflings-regular.89889688147bd7575d63.svg b/api/public/glyphicons-halflings-regular.89889688147bd7575d63.svg similarity index 100% rename from opt-cc-api/public/glyphicons-halflings-regular.89889688147bd7575d63.svg rename to api/public/glyphicons-halflings-regular.89889688147bd7575d63.svg diff --git a/opt-cc-api/public/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf b/api/public/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf similarity index 100% rename from opt-cc-api/public/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf rename to api/public/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf diff --git a/opt-cc-api/public/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot b/api/public/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot similarity index 100% rename from opt-cc-api/public/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot rename to api/public/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot diff --git a/opt-cc-api/public/glyphicons-halflings-regular.fa2772327f55d8198301.woff b/api/public/glyphicons-halflings-regular.fa2772327f55d8198301.woff similarity index 100% rename from opt-cc-api/public/glyphicons-halflings-regular.fa2772327f55d8198301.woff rename to api/public/glyphicons-halflings-regular.fa2772327f55d8198301.woff diff --git a/opt-cc-api/public/index.html b/api/public/index.html similarity index 100% rename from opt-cc-api/public/index.html rename to api/public/index.html diff --git a/opt-cc-api/public/inline.bundle.js b/api/public/inline.bundle.js similarity index 100% rename from opt-cc-api/public/inline.bundle.js rename to api/public/inline.bundle.js diff --git a/opt-cc-api/public/inline.bundle.js.map b/api/public/inline.bundle.js.map similarity index 100% rename from opt-cc-api/public/inline.bundle.js.map rename to api/public/inline.bundle.js.map diff --git a/opt-cc-api/public/main.bundle.js b/api/public/main.bundle.js similarity index 100% rename from opt-cc-api/public/main.bundle.js rename to api/public/main.bundle.js diff --git a/opt-cc-api/public/main.bundle.js.map b/api/public/main.bundle.js.map similarity index 100% rename from opt-cc-api/public/main.bundle.js.map rename to api/public/main.bundle.js.map diff --git a/opt-cc-api/public/polyfills.bundle.js b/api/public/polyfills.bundle.js similarity index 100% rename from opt-cc-api/public/polyfills.bundle.js rename to api/public/polyfills.bundle.js diff --git a/opt-cc-api/public/polyfills.bundle.js.map b/api/public/polyfills.bundle.js.map similarity index 100% rename from opt-cc-api/public/polyfills.bundle.js.map rename to api/public/polyfills.bundle.js.map diff --git a/opt-cc-api/public/resource b/api/public/resource similarity index 100% rename from opt-cc-api/public/resource rename to api/public/resource diff --git a/opt-cc-api/public/scripts.bundle.js b/api/public/scripts.bundle.js similarity index 100% rename from opt-cc-api/public/scripts.bundle.js rename to api/public/scripts.bundle.js diff --git a/opt-cc-api/public/scripts.bundle.js.map b/api/public/scripts.bundle.js.map similarity index 100% rename from opt-cc-api/public/scripts.bundle.js.map rename to api/public/scripts.bundle.js.map diff --git a/opt-cc-api/public/styles.bundle.js b/api/public/styles.bundle.js similarity index 100% rename from opt-cc-api/public/styles.bundle.js rename to api/public/styles.bundle.js diff --git a/opt-cc-api/public/styles.bundle.js.map b/api/public/styles.bundle.js.map similarity index 100% rename from opt-cc-api/public/styles.bundle.js.map rename to api/public/styles.bundle.js.map diff --git a/opt-cc-api/public/vendor.bundle.js b/api/public/vendor.bundle.js similarity index 100% rename from opt-cc-api/public/vendor.bundle.js rename to api/public/vendor.bundle.js diff --git a/opt-cc-api/public/vendor.bundle.js.map b/api/public/vendor.bundle.js.map similarity index 100% rename from opt-cc-api/public/vendor.bundle.js.map rename to api/public/vendor.bundle.js.map diff --git a/api/routes/api-url.js b/api/routes/api-url.js new file mode 100644 index 0000000..199f425 --- /dev/null +++ b/api/routes/api-url.js @@ -0,0 +1,13 @@ +module.exports = { + auth: '/authenticate', + signUp: '/authenticate/signup', + awards: '/awardings', + command: '/cmd', + cmdCreateSig: '/cmd/createSignature', + decorations: '/decorations', + overview: '/overview', + ranks: '/ranks', + signatures: '/signatures', + squads: '/squads', + users: '/users', +}; diff --git a/opt-cc-api/routes/authenticate.js b/api/routes/authenticate.js similarity index 100% rename from opt-cc-api/routes/authenticate.js rename to api/routes/authenticate.js diff --git a/opt-cc-api/routes/awardings.js b/api/routes/awardings.js similarity index 100% rename from opt-cc-api/routes/awardings.js rename to api/routes/awardings.js diff --git a/opt-cc-api/routes/command.js b/api/routes/command.js similarity index 100% rename from opt-cc-api/routes/command.js rename to api/routes/command.js diff --git a/opt-cc-api/routes/decorations.js b/api/routes/decorations.js similarity index 100% rename from opt-cc-api/routes/decorations.js rename to api/routes/decorations.js diff --git a/opt-cc-api/routes/http-codes.js b/api/routes/http-codes.js similarity index 100% rename from opt-cc-api/routes/http-codes.js rename to api/routes/http-codes.js diff --git a/opt-cc-api/routes/overview.js b/api/routes/overview.js similarity index 100% rename from opt-cc-api/routes/overview.js rename to api/routes/overview.js diff --git a/opt-cc-api/routes/ranks.js b/api/routes/ranks.js similarity index 100% rename from opt-cc-api/routes/ranks.js rename to api/routes/ranks.js diff --git a/opt-cc-api/routes/signatures.js b/api/routes/signatures.js similarity index 100% rename from opt-cc-api/routes/signatures.js rename to api/routes/signatures.js diff --git a/opt-cc-api/routes/squads.js b/api/routes/squads.js similarity index 100% rename from opt-cc-api/routes/squads.js rename to api/routes/squads.js diff --git a/opt-cc-api/routes/users.js b/api/routes/users.js similarity index 100% rename from opt-cc-api/routes/users.js rename to api/routes/users.js diff --git a/opt-cc-api/server.js b/api/server.js similarity index 100% rename from opt-cc-api/server.js rename to api/server.js diff --git a/opt-cc-api/signature-tool/backplate/blufor.png b/api/signature-tool/backplate/blufor.png similarity index 100% rename from opt-cc-api/signature-tool/backplate/blufor.png rename to api/signature-tool/backplate/blufor.png diff --git a/opt-cc-api/signature-tool/backplate/opfor.png b/api/signature-tool/backplate/opfor.png similarity index 100% rename from opt-cc-api/signature-tool/backplate/opfor.png rename to api/signature-tool/backplate/opfor.png diff --git a/opt-cc-api/signature-tool/font/DEJAVU_SANS_13.fnt b/api/signature-tool/font/DEJAVU_SANS_13.fnt similarity index 100% rename from opt-cc-api/signature-tool/font/DEJAVU_SANS_13.fnt rename to api/signature-tool/font/DEJAVU_SANS_13.fnt diff --git a/opt-cc-api/signature-tool/font/DEJAVU_SANS_13.png b/api/signature-tool/font/DEJAVU_SANS_13.png similarity index 100% rename from opt-cc-api/signature-tool/font/DEJAVU_SANS_13.png rename to api/signature-tool/font/DEJAVU_SANS_13.png diff --git a/opt-cc-api/signature-tool/font/DEVAJU_SANS_19.fnt b/api/signature-tool/font/DEVAJU_SANS_19.fnt similarity index 100% rename from opt-cc-api/signature-tool/font/DEVAJU_SANS_19.fnt rename to api/signature-tool/font/DEVAJU_SANS_19.fnt diff --git a/opt-cc-api/signature-tool/font/DEVAJU_SANS_19.png b/api/signature-tool/font/DEVAJU_SANS_19.png similarity index 100% rename from opt-cc-api/signature-tool/font/DEVAJU_SANS_19.png rename to api/signature-tool/font/DEVAJU_SANS_19.png diff --git a/opt-cc-api/signature-tool/signature-tool.js b/api/signature-tool/signature-tool.js similarity index 100% rename from opt-cc-api/signature-tool/signature-tool.js rename to api/signature-tool/signature-tool.js diff --git a/api/test/awardings.spec.js b/api/test/awardings.spec.js new file mode 100644 index 0000000..661cb92 --- /dev/null +++ b/api/test/awardings.spec.js @@ -0,0 +1,112 @@ +let mongoose = require("mongoose"); +let AwardingModel = require('../models/awarding'); +let urls = require('../routes/api-url'); +let codes = require('../routes/http-codes'); + + +//Require the dev-dependencies +let chai = require('chai'); +let chaiHttp = require('chai-http'); +let server = require('../server'); +let should = chai.should(); + +chai.use(chaiHttp); +//Our parent block +describe('Awardings', () => { + beforeEach((done) => { //Before each test we empty the database + AwardingModel.remove({}, (err) => { + done(); + }); + }); + /* + * Test the /GET awardings + */ + describe('/GET awardings', () => { + it('it should not GET awardings without auth-token provided', (done) => { + chai.request(server) + .get(urls.awards) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + }); + + /* + * Test the /POST awardings + */ + describe('/POST awardings', () => { + + it('it should not POST an awarding without auth-token provided', (done) => { + chai.request(server) + .post(urls.awards) + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + }); + + /* + * Test the /PATCH awardings + */ + describe('/PATCH awardings', () => { + + it('it should not PATCH an awarding without auth-token provided', (done) => { + chai.request(server) + .patch(urls.awards + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + + + /* + * Test the /DELETE awardings + */ + describe('/DELETE awardings', () => { + + it('it should not accept DELETE method without id in url - ' + + 'already fails on auth-token not provided', (done) => { + chai.request(server) + .delete(urls.awards) + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + it('it should not DELETE an awarding without auth-token provided', (done) => { + chai.request(server) + .delete(urls.awards + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + +}); diff --git a/api/test/command.spec.js b/api/test/command.spec.js new file mode 100644 index 0000000..ec0c7fd --- /dev/null +++ b/api/test/command.spec.js @@ -0,0 +1,39 @@ +let mongoose = require("mongoose"); +let AwardingModel = require('../models/awarding'); +let urls = require('../routes/api-url'); +let codes = require('../routes/http-codes'); + + +//Require the dev-dependencies +let chai = require('chai'); +let chaiHttp = require('chai-http'); +let server = require('../server'); +let should = chai.should(); + +chai.use(chaiHttp); +//Our parent block +describe('Command', () => { + beforeEach((done) => { //Before each test we empty the database + AwardingModel.remove({}, (err) => { + done(); + }); + }); + /* + * Test the /GET awardings + */ + describe('/POST command to create signature', () => { + it('it should not succeed without auth-token provided', (done) => { + chai.request(server) + .post(urls.cmdCreateSig + "/someId") + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + }); + +}); diff --git a/opt-cc-api/test/spec_helper.js b/api/test/config/spec_helper.js similarity index 50% rename from opt-cc-api/test/spec_helper.js rename to api/test/config/spec_helper.js index f20cc8c..e11f84f 100644 --- a/opt-cc-api/test/spec_helper.js +++ b/api/test/config/spec_helper.js @@ -1,3 +1,3 @@ -const config = require('../config'); +const config = require('../../config'); process.env.NODE_ENV = config.test.env; diff --git a/opt-cc-api/test/content-tool/user-db-item-creator.js b/api/test/content-tool/user-db-item-creator.js similarity index 97% rename from opt-cc-api/test/content-tool/user-db-item-creator.js rename to api/test/content-tool/user-db-item-creator.js index e649bac..8d8aaad 100644 --- a/opt-cc-api/test/content-tool/user-db-item-creator.js +++ b/api/test/content-tool/user-db-item-creator.js @@ -22,7 +22,7 @@ mongoose.connection.on('connected', () => { const createString = (possible, length) => { let text = ""; - for( let i=0; i < length; i++ ) + for (let i = 0; i < length; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; diff --git a/api/test/decorations.spec.js b/api/test/decorations.spec.js new file mode 100644 index 0000000..9ebc5c9 --- /dev/null +++ b/api/test/decorations.spec.js @@ -0,0 +1,109 @@ +let mongoose = require("mongoose"); +let DecorationModel = require('../models/decoration'); +let urls = require('../routes/api-url'); +let codes = require('../routes/http-codes'); + + +//Require the dev-dependencies +let chai = require('chai'); +let chaiHttp = require('chai-http'); +let server = require('../server'); +let should = chai.should(); + +chai.use(chaiHttp); +//Our parent block +describe('Decorations', () => { + beforeEach((done) => { //Before each test we empty the database + DecorationModel.remove({}, (err) => { + done(); + }); + }); + /* + * Test the /GET decorations + */ + describe('/GET decorations', () => { + it('it should GET all the decorations', (done) => { + chai.request(server) + .get(urls.decorations) + .end((err, res) => { + res.should.have.status(codes.success); + res.body.should.be.a('array'); + res.body.length.should.be.eql(0); + done(); + }); + }); + }); + + /* + * Test the /POST decorations + */ + describe('/POST decorations', () => { + + it('it should not POST a decoration without auth-token provided', (done) => { + chai.request(server) + .post(urls.decorations) + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + }); + + /* + * Test the /PATCH decoration + */ + describe('/PATCH decorations', () => { + + it('it should not PATCH a decoration without auth-token provided', (done) => { + chai.request(server) + .patch(urls.decorations + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + + + /* + * Test the /DELETE decorations + */ + describe('/DELETE decorations', () => { + it('it should not accept DELETE method without id in url', (done) => { + chai.request(server) + .delete(urls.decorations) + .send({}) + .end((err, res) => { + res.should.have.status(codes.wrongmethod); + res.body.should.be.a('object'); + res.body.should.have.property('error').property('message') + .eql('this method is not allowed at ' + urls.decorations); + done(); + }); + }); + + it('it should not DELETE a decoration without auth-token provided', (done) => { + chai.request(server) + .delete(urls.decorations + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + +}); diff --git a/api/test/ranks.spec.js b/api/test/ranks.spec.js new file mode 100644 index 0000000..1071369 --- /dev/null +++ b/api/test/ranks.spec.js @@ -0,0 +1,110 @@ +let mongoose = require("mongoose"); +let RankModel = require('../models/rank'); +let urls = require('../routes/api-url'); +let codes = require('../routes/http-codes'); + + +//Require the dev-dependencies +let chai = require('chai'); +let chaiHttp = require('chai-http'); +let server = require('../server'); +let should = chai.should(); + +chai.use(chaiHttp); +//Our parent block +describe('Ranks', () => { + beforeEach((done) => { //Before each test we empty the database + RankModel.remove({}, (err) => { + done(); + }); + }); + /* + * Test the /GET ranks + */ + describe('/GET ranks', () => { + it('it should GET all the ranks', (done) => { + chai.request(server) + .get(urls.ranks) + .end((err, res) => { + res.should.have.status(codes.success); + res.body.should.be.a('array'); + res.body.length.should.be.eql(0); + done(); + }); + }); + }); + + /* + * Test the /POST ranks + */ + describe('/POST ranks', () => { + + it('it should not POST a rank without auth-token provided', (done) => { + chai.request(server) + .post(urls.ranks) + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + }) + + /* + * Test the /PATCH rank + */ + describe('/PATCH ranks', () => { + + it('it should not PATCH a rank without auth-token provided', (done) => { + chai.request(server) + .patch(urls.ranks + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + + + /* + * Test the /DELETE rank + */ + describe('/DELETE ranks', () => { + it('it should not accept DELETE method without id in url', (done) => { + chai.request(server) + .delete(urls.ranks) + .send({}) + .end((err, res) => { + res.should.have.status(codes.wrongmethod); + res.body.should.be.a('object'); + res.body.should.have.property('error').property('message') + .eql('this method is not allowed at ' + urls.ranks); + done(); + }); + }); + + + it('it should not DELETE a rank without auth-token provided', (done) => { + chai.request(server) + .delete(urls.ranks + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + +}); diff --git a/api/test/squads.spec.js b/api/test/squads.spec.js new file mode 100644 index 0000000..d7507c9 --- /dev/null +++ b/api/test/squads.spec.js @@ -0,0 +1,109 @@ +let mongoose = require("mongoose"); +let SquadModel = require('../models/squad'); +let urls = require('../routes/api-url'); +let codes = require('../routes/http-codes'); + + +//Require the dev-dependencies +let chai = require('chai'); +let chaiHttp = require('chai-http'); +let server = require('../server'); +let should = chai.should(); + +chai.use(chaiHttp); +//Our parent block +describe('Squads', () => { + beforeEach((done) => { //Before each test we empty the database + SquadModel.remove({}, (err) => { + done(); + }); + }); + /* + * Test the /GET route + */ + describe('/GET squads', () => { + it('it should GET all the squads', (done) => { + chai.request(server) + .get(urls.squads) + .end((err, res) => { + res.should.have.status(codes.success); + res.body.should.be.a('array'); + res.body.length.should.be.eql(0); + done(); + }); + }); + }); + + /* + * Test the /POST squad + */ + describe('/POST squads', () => { + + it('it should not POST a squad without auth-token provided', (done) => { + chai.request(server) + .post(urls.squads) + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + }); + + /* + * Test the /PATCH squad + */ + describe('/PATCH squads', () => { + + it('it should not PATCH a squad without auth-token provided', (done) => { + chai.request(server) + .patch(urls.squads + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + + + /* + * Test the /DELETE squad + */ + describe('/DELETE squads', () => { + it('it should not accept DELETE method without id in url', (done) => { + chai.request(server) + .delete(urls.squads) + .send({}) + .end((err, res) => { + res.should.have.status(codes.wrongmethod); + res.body.should.be.a('object'); + res.body.should.have.property('error').property('message') + .eql('this method is not allowed at ' + urls.squads); + done(); + }); + }); + + it('it should not DELETE a squad without auth-token provided', (done) => { + chai.request(server) + .delete(urls.squads + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + +}); diff --git a/opt-cc-api/test/users.spec.js b/api/test/users.spec.js similarity index 54% rename from opt-cc-api/test/users.spec.js rename to api/test/users.spec.js index ac0e7d6..78d1f38 100644 --- a/opt-cc-api/test/users.spec.js +++ b/api/test/users.spec.js @@ -1,6 +1,9 @@ let mongoose = require("mongoose"); let UserModel = require('../models/user'); let AppUserModel = require('../models/app-user'); +let urls = require('../routes/api-url'); +let codes = require('../routes/http-codes'); + //Require the dev-dependencies let chai = require('chai'); @@ -22,9 +25,9 @@ describe('Users', () => { describe('/GET users', () => { it('it should GET all the users', (done) => { chai.request(server) - .get('/users') + .get(urls.users) .end((err, res) => { - res.should.have.status(200); + res.should.have.status(codes.success); res.body.should.be.a('array'); res.body.length.should.be.eql(0); done(); @@ -58,7 +61,7 @@ describe('Users', () => { appUserModel.save(); chai.request(server) - .post('/authenticate') + .post(urls.auth) .send(appUserEncoded) .end(function (err, res) { const result = JSON.parse(res.text); @@ -67,12 +70,12 @@ describe('Users', () => { }); }); - it('it should not POST a user without auth-token in header', (done) => { + it('it should not POST a user without auth-token provided', (done) => { chai.request(server) - .post('/users') + .post(urls.users) .send({}) .end((err, res) => { - res.should.have.status(403); + res.should.have.status(codes.forbidden); res.body.should.be.a('object'); res.body.should.have.property('success').eql(false); res.body.should.have.property('message').eql('No token provided.'); @@ -83,11 +86,11 @@ describe('Users', () => { it('it should POST a user with provided username', (done) => { const user = {username: 'john'}; chai.request(server) - .post('/users') + .post(urls.users) .set('x-access-token', token) .send(user) .end((err, res) => { - res.should.have.status(201); + res.should.have.status(codes.created); res.body.should.be.a('object'); res.body.should.have.property('username').eql(user.username); res.body.should.have.property('squadId').eql(null); @@ -97,4 +100,57 @@ describe('Users', () => { }); }); + /* + * Test the /PATCH route + */ + describe('/PATCH users', () => { + + it('it should not PATCH a user without auth-token provided', (done) => { + chai.request(server) + .patch(urls.users + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + + + /* + * Test the /DELETE route + */ + describe('/DELETE users', () => { + it('it should not accept DELETE method without id in url', (done) => { + chai.request(server) + .delete(urls.users) + .send({}) + .end((err, res) => { + res.should.have.status(codes.wrongmethod); + res.body.should.be.a('object'); + res.body.should.have.property('error').property('message') + .eql('this method is not allowed at ' + urls.users); + done(); + }); + }); + + it('it should not DELETE a user without auth-token provided', (done) => { + chai.request(server) + .delete(urls.users + '/someId') + .send({}) + .end((err, res) => { + res.should.have.status(codes.forbidden); + res.body.should.be.a('object'); + res.body.should.have.property('success').eql(false); + res.body.should.have.property('message').eql('No token provided.'); + done(); + }); + }); + + }); + }); diff --git a/opt-cc-docs/mongo-db-schema.odg b/docs/mongo-db-schema.odg similarity index 100% rename from opt-cc-docs/mongo-db-schema.odg rename to docs/mongo-db-schema.odg diff --git a/opt-cc-environment/nginx-https-cc-site.txt b/docs/opt-cc-environment/nginx-https-cc-site.txt similarity index 100% rename from opt-cc-environment/nginx-https-cc-site.txt rename to docs/opt-cc-environment/nginx-https-cc-site.txt diff --git a/package.json b/package.json index f267f77..beab813 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,11 @@ "private": true, "scripts": { "start": "npm run deploy-static-prod && node ./rest-server/server.js", - "dev": "npm run deploy-static && nodemon opt-cc-api/server.js", - "deploy-static": "cd opt-cc-static && ng build && ln -s ../opt-cc-api/resource/ ../public/resource", - "deploy-static-prod": "cd opt-cc-static && ng build --env=prod && ln -s ../opt-cc-api/resource/ ../public/resource", - "postinstall": "npm install --prefix ./opt-cc-static ./opt-cc-static && npm install --prefix ./opt-cc-api ./opt-cc-api", - "mongodb": "mongod --dbpath ./mongodb-data" + "dev": "npm run deploy-static && nodemon api/server.js", + "deploy-static": "cd static && ng build && ln -s ../api/resource/ ../public/resource", + "deploy-static-prod": "cd static && ng build --env=prod && ln -s ../api/resource/ ../public/resource", + "postinstall": "npm install --prefix ./static && npm install --prefix ./api", + "mongodb": "mongod --dbpath ./mongodb-data", + "test": "npm test --prefix ./api" } } diff --git a/opt-cc-static/.angular-cli.json b/static/.angular-cli.json similarity index 100% rename from opt-cc-static/.angular-cli.json rename to static/.angular-cli.json diff --git a/opt-cc-static/package.json b/static/package.json similarity index 100% rename from opt-cc-static/package.json rename to static/package.json diff --git a/opt-cc-static/src/app/app.component.css b/static/src/app/app.component.css similarity index 100% rename from opt-cc-static/src/app/app.component.css rename to static/src/app/app.component.css diff --git a/opt-cc-static/src/app/app.component.html b/static/src/app/app.component.html similarity index 100% rename from opt-cc-static/src/app/app.component.html rename to static/src/app/app.component.html diff --git a/opt-cc-static/src/app/app.component.ts b/static/src/app/app.component.ts similarity index 100% rename from opt-cc-static/src/app/app.component.ts rename to static/src/app/app.component.ts diff --git a/opt-cc-static/src/app/app.config.ts b/static/src/app/app.config.ts similarity index 100% rename from opt-cc-static/src/app/app.config.ts rename to static/src/app/app.config.ts diff --git a/opt-cc-static/src/app/app.module.ts b/static/src/app/app.module.ts similarity index 100% rename from opt-cc-static/src/app/app.module.ts rename to static/src/app/app.module.ts diff --git a/opt-cc-static/src/app/app.routing.ts b/static/src/app/app.routing.ts similarity index 100% rename from opt-cc-static/src/app/app.routing.ts rename to static/src/app/app.routing.ts diff --git a/opt-cc-static/src/app/app.tokens.ts b/static/src/app/app.tokens.ts similarity index 100% rename from opt-cc-static/src/app/app.tokens.ts rename to static/src/app/app.tokens.ts diff --git a/opt-cc-static/src/app/decorations/decoration-list/decoration-item.component.css b/static/src/app/decorations/decoration-list/decoration-item.component.css similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-list/decoration-item.component.css rename to static/src/app/decorations/decoration-list/decoration-item.component.css diff --git a/opt-cc-static/src/app/decorations/decoration-list/decoration-item.component.html b/static/src/app/decorations/decoration-list/decoration-item.component.html similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-list/decoration-item.component.html rename to static/src/app/decorations/decoration-list/decoration-item.component.html diff --git a/opt-cc-static/src/app/decorations/decoration-list/decoration-item.component.ts b/static/src/app/decorations/decoration-list/decoration-item.component.ts similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-list/decoration-item.component.ts rename to static/src/app/decorations/decoration-list/decoration-item.component.ts diff --git a/opt-cc-static/src/app/decorations/decoration-list/decoration-list.component.css b/static/src/app/decorations/decoration-list/decoration-list.component.css similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-list/decoration-list.component.css rename to static/src/app/decorations/decoration-list/decoration-list.component.css diff --git a/opt-cc-static/src/app/decorations/decoration-list/decoration-list.component.html b/static/src/app/decorations/decoration-list/decoration-list.component.html similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-list/decoration-list.component.html rename to static/src/app/decorations/decoration-list/decoration-list.component.html diff --git a/opt-cc-static/src/app/decorations/decoration-list/decoration-list.component.ts b/static/src/app/decorations/decoration-list/decoration-list.component.ts similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-list/decoration-list.component.ts rename to static/src/app/decorations/decoration-list/decoration-list.component.ts diff --git a/opt-cc-static/src/app/decorations/decoration-overview/decoration-overview.component.css b/static/src/app/decorations/decoration-overview/decoration-overview.component.css similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-overview/decoration-overview.component.css rename to static/src/app/decorations/decoration-overview/decoration-overview.component.css diff --git a/opt-cc-static/src/app/decorations/decoration-overview/decoration-overview.component.html b/static/src/app/decorations/decoration-overview/decoration-overview.component.html similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-overview/decoration-overview.component.html rename to static/src/app/decorations/decoration-overview/decoration-overview.component.html diff --git a/opt-cc-static/src/app/decorations/decoration-overview/decoration-overview.component.ts b/static/src/app/decorations/decoration-overview/decoration-overview.component.ts similarity index 100% rename from opt-cc-static/src/app/decorations/decoration-overview/decoration-overview.component.ts rename to static/src/app/decorations/decoration-overview/decoration-overview.component.ts diff --git a/opt-cc-static/src/app/decorations/decoration.component.css b/static/src/app/decorations/decoration.component.css similarity index 100% rename from opt-cc-static/src/app/decorations/decoration.component.css rename to static/src/app/decorations/decoration.component.css diff --git a/opt-cc-static/src/app/decorations/decoration.component.html b/static/src/app/decorations/decoration.component.html similarity index 100% rename from opt-cc-static/src/app/decorations/decoration.component.html rename to static/src/app/decorations/decoration.component.html diff --git a/opt-cc-static/src/app/decorations/decoration.component.ts b/static/src/app/decorations/decoration.component.ts similarity index 100% rename from opt-cc-static/src/app/decorations/decoration.component.ts rename to static/src/app/decorations/decoration.component.ts diff --git a/opt-cc-static/src/app/decorations/decoration.routing.ts b/static/src/app/decorations/decoration.routing.ts similarity index 100% rename from opt-cc-static/src/app/decorations/decoration.routing.ts rename to static/src/app/decorations/decoration.routing.ts diff --git a/opt-cc-static/src/app/decorations/new-decoration/new-decoration.component.css b/static/src/app/decorations/new-decoration/new-decoration.component.css similarity index 100% rename from opt-cc-static/src/app/decorations/new-decoration/new-decoration.component.css rename to static/src/app/decorations/new-decoration/new-decoration.component.css diff --git a/opt-cc-static/src/app/decorations/new-decoration/new-decoration.component.html b/static/src/app/decorations/new-decoration/new-decoration.component.html similarity index 100% rename from opt-cc-static/src/app/decorations/new-decoration/new-decoration.component.html rename to static/src/app/decorations/new-decoration/new-decoration.component.html diff --git a/opt-cc-static/src/app/decorations/new-decoration/new-decoration.component.ts b/static/src/app/decorations/new-decoration/new-decoration.component.ts similarity index 100% rename from opt-cc-static/src/app/decorations/new-decoration/new-decoration.component.ts rename to static/src/app/decorations/new-decoration/new-decoration.component.ts diff --git a/opt-cc-static/src/app/index.ts b/static/src/app/index.ts similarity index 100% rename from opt-cc-static/src/app/index.ts rename to static/src/app/index.ts diff --git a/opt-cc-static/src/app/login/index.ts b/static/src/app/login/index.ts similarity index 100% rename from opt-cc-static/src/app/login/index.ts rename to static/src/app/login/index.ts diff --git a/opt-cc-static/src/app/login/login.component.css b/static/src/app/login/login.component.css similarity index 100% rename from opt-cc-static/src/app/login/login.component.css rename to static/src/app/login/login.component.css diff --git a/opt-cc-static/src/app/login/login.component.html b/static/src/app/login/login.component.html similarity index 100% rename from opt-cc-static/src/app/login/login.component.html rename to static/src/app/login/login.component.html diff --git a/opt-cc-static/src/app/login/login.component.ts b/static/src/app/login/login.component.ts similarity index 100% rename from opt-cc-static/src/app/login/login.component.ts rename to static/src/app/login/login.component.ts diff --git a/opt-cc-static/src/app/login/login.guard.ts b/static/src/app/login/login.guard.ts similarity index 100% rename from opt-cc-static/src/app/login/login.guard.ts rename to static/src/app/login/login.guard.ts diff --git a/opt-cc-static/src/app/models/app-validators.ts b/static/src/app/models/app-validators.ts similarity index 100% rename from opt-cc-static/src/app/models/app-validators.ts rename to static/src/app/models/app-validators.ts diff --git a/opt-cc-static/src/app/models/model-interfaces.ts b/static/src/app/models/model-interfaces.ts similarity index 100% rename from opt-cc-static/src/app/models/model-interfaces.ts rename to static/src/app/models/model-interfaces.ts diff --git a/opt-cc-static/src/app/not-found/index.ts b/static/src/app/not-found/index.ts similarity index 100% rename from opt-cc-static/src/app/not-found/index.ts rename to static/src/app/not-found/index.ts diff --git a/opt-cc-static/src/app/not-found/not-found.component.css b/static/src/app/not-found/not-found.component.css similarity index 100% rename from opt-cc-static/src/app/not-found/not-found.component.css rename to static/src/app/not-found/not-found.component.css diff --git a/opt-cc-static/src/app/not-found/not-found.component.html b/static/src/app/not-found/not-found.component.html similarity index 100% rename from opt-cc-static/src/app/not-found/not-found.component.html rename to static/src/app/not-found/not-found.component.html diff --git a/opt-cc-static/src/app/not-found/not-found.component.ts b/static/src/app/not-found/not-found.component.ts similarity index 100% rename from opt-cc-static/src/app/not-found/not-found.component.ts rename to static/src/app/not-found/not-found.component.ts diff --git a/opt-cc-static/src/app/ranks/rank-list/rank-item.component.css b/static/src/app/ranks/rank-list/rank-item.component.css similarity index 100% rename from opt-cc-static/src/app/ranks/rank-list/rank-item.component.css rename to static/src/app/ranks/rank-list/rank-item.component.css diff --git a/opt-cc-static/src/app/ranks/rank-list/rank-item.component.html b/static/src/app/ranks/rank-list/rank-item.component.html similarity index 100% rename from opt-cc-static/src/app/ranks/rank-list/rank-item.component.html rename to static/src/app/ranks/rank-list/rank-item.component.html diff --git a/opt-cc-static/src/app/ranks/rank-list/rank-item.component.ts b/static/src/app/ranks/rank-list/rank-item.component.ts similarity index 100% rename from opt-cc-static/src/app/ranks/rank-list/rank-item.component.ts rename to static/src/app/ranks/rank-list/rank-item.component.ts diff --git a/opt-cc-static/src/app/ranks/rank-list/rank-list.component.css b/static/src/app/ranks/rank-list/rank-list.component.css similarity index 100% rename from opt-cc-static/src/app/ranks/rank-list/rank-list.component.css rename to static/src/app/ranks/rank-list/rank-list.component.css diff --git a/opt-cc-static/src/app/ranks/rank-list/rank-list.component.html b/static/src/app/ranks/rank-list/rank-list.component.html similarity index 100% rename from opt-cc-static/src/app/ranks/rank-list/rank-list.component.html rename to static/src/app/ranks/rank-list/rank-list.component.html diff --git a/opt-cc-static/src/app/ranks/rank-list/rank-list.component.ts b/static/src/app/ranks/rank-list/rank-list.component.ts similarity index 100% rename from opt-cc-static/src/app/ranks/rank-list/rank-list.component.ts rename to static/src/app/ranks/rank-list/rank-list.component.ts diff --git a/opt-cc-static/src/app/ranks/rank-overview/rank-overview.component.css b/static/src/app/ranks/rank-overview/rank-overview.component.css similarity index 100% rename from opt-cc-static/src/app/ranks/rank-overview/rank-overview.component.css rename to static/src/app/ranks/rank-overview/rank-overview.component.css diff --git a/opt-cc-static/src/app/ranks/rank-overview/rank-overview.component.html b/static/src/app/ranks/rank-overview/rank-overview.component.html similarity index 100% rename from opt-cc-static/src/app/ranks/rank-overview/rank-overview.component.html rename to static/src/app/ranks/rank-overview/rank-overview.component.html diff --git a/opt-cc-static/src/app/ranks/rank-overview/rank-overview.component.ts b/static/src/app/ranks/rank-overview/rank-overview.component.ts similarity index 100% rename from opt-cc-static/src/app/ranks/rank-overview/rank-overview.component.ts rename to static/src/app/ranks/rank-overview/rank-overview.component.ts diff --git a/opt-cc-static/src/app/ranks/ranks.component.css b/static/src/app/ranks/ranks.component.css similarity index 100% rename from opt-cc-static/src/app/ranks/ranks.component.css rename to static/src/app/ranks/ranks.component.css diff --git a/opt-cc-static/src/app/ranks/ranks.component.html b/static/src/app/ranks/ranks.component.html similarity index 100% rename from opt-cc-static/src/app/ranks/ranks.component.html rename to static/src/app/ranks/ranks.component.html diff --git a/opt-cc-static/src/app/ranks/ranks.component.ts b/static/src/app/ranks/ranks.component.ts similarity index 100% rename from opt-cc-static/src/app/ranks/ranks.component.ts rename to static/src/app/ranks/ranks.component.ts diff --git a/opt-cc-static/src/app/ranks/ranks.routing.ts b/static/src/app/ranks/ranks.routing.ts similarity index 100% rename from opt-cc-static/src/app/ranks/ranks.routing.ts rename to static/src/app/ranks/ranks.routing.ts diff --git a/opt-cc-static/src/app/services/awarding-service/awarding.service.ts b/static/src/app/services/awarding-service/awarding.service.ts similarity index 100% rename from opt-cc-static/src/app/services/awarding-service/awarding.service.ts rename to static/src/app/services/awarding-service/awarding.service.ts diff --git a/opt-cc-static/src/app/services/decoration-service/decoration.service.ts b/static/src/app/services/decoration-service/decoration.service.ts similarity index 100% rename from opt-cc-static/src/app/services/decoration-service/decoration.service.ts rename to static/src/app/services/decoration-service/decoration.service.ts diff --git a/opt-cc-static/src/app/services/http-client.ts b/static/src/app/services/http-client.ts similarity index 100% rename from opt-cc-static/src/app/services/http-client.ts rename to static/src/app/services/http-client.ts diff --git a/opt-cc-static/src/app/services/login-service/login-service.ts b/static/src/app/services/login-service/login-service.ts similarity index 100% rename from opt-cc-static/src/app/services/login-service/login-service.ts rename to static/src/app/services/login-service/login-service.ts diff --git a/opt-cc-static/src/app/services/rank-service/rank.service.ts b/static/src/app/services/rank-service/rank.service.ts similarity index 100% rename from opt-cc-static/src/app/services/rank-service/rank.service.ts rename to static/src/app/services/rank-service/rank.service.ts diff --git a/opt-cc-static/src/app/services/squad-service/squad.service.ts b/static/src/app/services/squad-service/squad.service.ts similarity index 100% rename from opt-cc-static/src/app/services/squad-service/squad.service.ts rename to static/src/app/services/squad-service/squad.service.ts diff --git a/opt-cc-static/src/app/services/stores/decoration.store.ts b/static/src/app/services/stores/decoration.store.ts similarity index 100% rename from opt-cc-static/src/app/services/stores/decoration.store.ts rename to static/src/app/services/stores/decoration.store.ts diff --git a/opt-cc-static/src/app/services/stores/generic-store.ts b/static/src/app/services/stores/generic-store.ts similarity index 100% rename from opt-cc-static/src/app/services/stores/generic-store.ts rename to static/src/app/services/stores/generic-store.ts diff --git a/opt-cc-static/src/app/services/stores/rank.store.ts b/static/src/app/services/stores/rank.store.ts similarity index 100% rename from opt-cc-static/src/app/services/stores/rank.store.ts rename to static/src/app/services/stores/rank.store.ts diff --git a/opt-cc-static/src/app/services/stores/squad.store.ts b/static/src/app/services/stores/squad.store.ts similarity index 100% rename from opt-cc-static/src/app/services/stores/squad.store.ts rename to static/src/app/services/stores/squad.store.ts diff --git a/opt-cc-static/src/app/services/stores/user.store.ts b/static/src/app/services/stores/user.store.ts similarity index 100% rename from opt-cc-static/src/app/services/stores/user.store.ts rename to static/src/app/services/stores/user.store.ts diff --git a/opt-cc-static/src/app/services/user-service/user.service.ts b/static/src/app/services/user-service/user.service.ts similarity index 100% rename from opt-cc-static/src/app/services/user-service/user.service.ts rename to static/src/app/services/user-service/user.service.ts diff --git a/opt-cc-static/src/app/show-error/show-error.component.ts b/static/src/app/show-error/show-error.component.ts similarity index 100% rename from opt-cc-static/src/app/show-error/show-error.component.ts rename to static/src/app/show-error/show-error.component.ts diff --git a/opt-cc-static/src/app/squads/new-squad/new-squad.component.css b/static/src/app/squads/new-squad/new-squad.component.css similarity index 100% rename from opt-cc-static/src/app/squads/new-squad/new-squad.component.css rename to static/src/app/squads/new-squad/new-squad.component.css diff --git a/opt-cc-static/src/app/squads/new-squad/new-squad.component.html b/static/src/app/squads/new-squad/new-squad.component.html similarity index 100% rename from opt-cc-static/src/app/squads/new-squad/new-squad.component.html rename to static/src/app/squads/new-squad/new-squad.component.html diff --git a/opt-cc-static/src/app/squads/new-squad/new-squad.component.ts b/static/src/app/squads/new-squad/new-squad.component.ts similarity index 100% rename from opt-cc-static/src/app/squads/new-squad/new-squad.component.ts rename to static/src/app/squads/new-squad/new-squad.component.ts diff --git a/opt-cc-static/src/app/squads/squad-list/squad-item.component.css b/static/src/app/squads/squad-list/squad-item.component.css similarity index 100% rename from opt-cc-static/src/app/squads/squad-list/squad-item.component.css rename to static/src/app/squads/squad-list/squad-item.component.css diff --git a/opt-cc-static/src/app/squads/squad-list/squad-item.component.html b/static/src/app/squads/squad-list/squad-item.component.html similarity index 100% rename from opt-cc-static/src/app/squads/squad-list/squad-item.component.html rename to static/src/app/squads/squad-list/squad-item.component.html diff --git a/opt-cc-static/src/app/squads/squad-list/squad-item.component.ts b/static/src/app/squads/squad-list/squad-item.component.ts similarity index 100% rename from opt-cc-static/src/app/squads/squad-list/squad-item.component.ts rename to static/src/app/squads/squad-list/squad-item.component.ts diff --git a/opt-cc-static/src/app/squads/squad-list/squad-list.component.css b/static/src/app/squads/squad-list/squad-list.component.css similarity index 100% rename from opt-cc-static/src/app/squads/squad-list/squad-list.component.css rename to static/src/app/squads/squad-list/squad-list.component.css diff --git a/opt-cc-static/src/app/squads/squad-list/squad-list.component.html b/static/src/app/squads/squad-list/squad-list.component.html similarity index 100% rename from opt-cc-static/src/app/squads/squad-list/squad-list.component.html rename to static/src/app/squads/squad-list/squad-list.component.html diff --git a/opt-cc-static/src/app/squads/squad-list/squad-list.component.ts b/static/src/app/squads/squad-list/squad-list.component.ts similarity index 100% rename from opt-cc-static/src/app/squads/squad-list/squad-list.component.ts rename to static/src/app/squads/squad-list/squad-list.component.ts diff --git a/opt-cc-static/src/app/squads/squad-overview/squad-overview.component.css b/static/src/app/squads/squad-overview/squad-overview.component.css similarity index 100% rename from opt-cc-static/src/app/squads/squad-overview/squad-overview.component.css rename to static/src/app/squads/squad-overview/squad-overview.component.css diff --git a/opt-cc-static/src/app/squads/squad-overview/squad-overview.component.html b/static/src/app/squads/squad-overview/squad-overview.component.html similarity index 100% rename from opt-cc-static/src/app/squads/squad-overview/squad-overview.component.html rename to static/src/app/squads/squad-overview/squad-overview.component.html diff --git a/opt-cc-static/src/app/squads/squad-overview/squad-overview.component.ts b/static/src/app/squads/squad-overview/squad-overview.component.ts similarity index 100% rename from opt-cc-static/src/app/squads/squad-overview/squad-overview.component.ts rename to static/src/app/squads/squad-overview/squad-overview.component.ts diff --git a/opt-cc-static/src/app/squads/squads.component.css b/static/src/app/squads/squads.component.css similarity index 100% rename from opt-cc-static/src/app/squads/squads.component.css rename to static/src/app/squads/squads.component.css diff --git a/opt-cc-static/src/app/squads/squads.component.html b/static/src/app/squads/squads.component.html similarity index 100% rename from opt-cc-static/src/app/squads/squads.component.html rename to static/src/app/squads/squads.component.html diff --git a/opt-cc-static/src/app/squads/squads.component.ts b/static/src/app/squads/squads.component.ts similarity index 100% rename from opt-cc-static/src/app/squads/squads.component.ts rename to static/src/app/squads/squads.component.ts diff --git a/opt-cc-static/src/app/squads/squads.routing.ts b/static/src/app/squads/squads.routing.ts similarity index 100% rename from opt-cc-static/src/app/squads/squads.routing.ts rename to static/src/app/squads/squads.routing.ts diff --git a/opt-cc-static/src/app/style/new-entry-form.css b/static/src/app/style/new-entry-form.css similarity index 100% rename from opt-cc-static/src/app/style/new-entry-form.css rename to static/src/app/style/new-entry-form.css diff --git a/opt-cc-static/src/app/style/overview.css b/static/src/app/style/overview.css similarity index 100% rename from opt-cc-static/src/app/style/overview.css rename to static/src/app/style/overview.css diff --git a/opt-cc-static/src/app/users/new-user/new-user.component.css b/static/src/app/users/new-user/new-user.component.css similarity index 100% rename from opt-cc-static/src/app/users/new-user/new-user.component.css rename to static/src/app/users/new-user/new-user.component.css diff --git a/opt-cc-static/src/app/users/new-user/new-user.component.html b/static/src/app/users/new-user/new-user.component.html similarity index 100% rename from opt-cc-static/src/app/users/new-user/new-user.component.html rename to static/src/app/users/new-user/new-user.component.html diff --git a/opt-cc-static/src/app/users/new-user/new-user.component.ts b/static/src/app/users/new-user/new-user.component.ts similarity index 100% rename from opt-cc-static/src/app/users/new-user/new-user.component.ts rename to static/src/app/users/new-user/new-user.component.ts diff --git a/opt-cc-static/src/app/users/user-list/user-item.component.css b/static/src/app/users/user-list/user-item.component.css similarity index 100% rename from opt-cc-static/src/app/users/user-list/user-item.component.css rename to static/src/app/users/user-list/user-item.component.css diff --git a/opt-cc-static/src/app/users/user-list/user-item.component.html b/static/src/app/users/user-list/user-item.component.html similarity index 100% rename from opt-cc-static/src/app/users/user-list/user-item.component.html rename to static/src/app/users/user-list/user-item.component.html diff --git a/opt-cc-static/src/app/users/user-list/user-item.component.ts b/static/src/app/users/user-list/user-item.component.ts similarity index 100% rename from opt-cc-static/src/app/users/user-list/user-item.component.ts rename to static/src/app/users/user-list/user-item.component.ts diff --git a/opt-cc-static/src/app/users/user-list/user-list.component.css b/static/src/app/users/user-list/user-list.component.css similarity index 100% rename from opt-cc-static/src/app/users/user-list/user-list.component.css rename to static/src/app/users/user-list/user-list.component.css diff --git a/opt-cc-static/src/app/users/user-list/user-list.component.html b/static/src/app/users/user-list/user-list.component.html similarity index 100% rename from opt-cc-static/src/app/users/user-list/user-list.component.html rename to static/src/app/users/user-list/user-list.component.html diff --git a/opt-cc-static/src/app/users/user-list/user-list.component.ts b/static/src/app/users/user-list/user-list.component.ts similarity index 100% rename from opt-cc-static/src/app/users/user-list/user-list.component.ts rename to static/src/app/users/user-list/user-list.component.ts diff --git a/opt-cc-static/src/app/users/user-overview/user-overview.component.css b/static/src/app/users/user-overview/user-overview.component.css similarity index 100% rename from opt-cc-static/src/app/users/user-overview/user-overview.component.css rename to static/src/app/users/user-overview/user-overview.component.css diff --git a/opt-cc-static/src/app/users/user-overview/user-overview.component.html b/static/src/app/users/user-overview/user-overview.component.html similarity index 100% rename from opt-cc-static/src/app/users/user-overview/user-overview.component.html rename to static/src/app/users/user-overview/user-overview.component.html diff --git a/opt-cc-static/src/app/users/user-overview/user-overview.component.ts b/static/src/app/users/user-overview/user-overview.component.ts similarity index 100% rename from opt-cc-static/src/app/users/user-overview/user-overview.component.ts rename to static/src/app/users/user-overview/user-overview.component.ts diff --git a/opt-cc-static/src/app/users/users.component.css b/static/src/app/users/users.component.css similarity index 100% rename from opt-cc-static/src/app/users/users.component.css rename to static/src/app/users/users.component.css diff --git a/opt-cc-static/src/app/users/users.component.html b/static/src/app/users/users.component.html similarity index 100% rename from opt-cc-static/src/app/users/users.component.html rename to static/src/app/users/users.component.html diff --git a/opt-cc-static/src/app/users/users.component.ts b/static/src/app/users/users.component.ts similarity index 100% rename from opt-cc-static/src/app/users/users.component.ts rename to static/src/app/users/users.component.ts diff --git a/opt-cc-static/src/app/users/users.routing.ts b/static/src/app/users/users.routing.ts similarity index 100% rename from opt-cc-static/src/app/users/users.routing.ts rename to static/src/app/users/users.routing.ts diff --git a/opt-cc-static/src/assets/.gitkeep b/static/src/assets/.gitkeep similarity index 100% rename from opt-cc-static/src/assets/.gitkeep rename to static/src/assets/.gitkeep diff --git a/opt-cc-static/src/assets/opt-logo-klein.png b/static/src/assets/opt-logo-klein.png similarity index 100% rename from opt-cc-static/src/assets/opt-logo-klein.png rename to static/src/assets/opt-logo-klein.png diff --git a/opt-cc-static/src/environments/environment.e2e.ts b/static/src/environments/environment.e2e.ts similarity index 100% rename from opt-cc-static/src/environments/environment.e2e.ts rename to static/src/environments/environment.e2e.ts diff --git a/opt-cc-static/src/environments/environment.prod.ts b/static/src/environments/environment.prod.ts similarity index 100% rename from opt-cc-static/src/environments/environment.prod.ts rename to static/src/environments/environment.prod.ts diff --git a/opt-cc-static/src/environments/environment.ts b/static/src/environments/environment.ts similarity index 100% rename from opt-cc-static/src/environments/environment.ts rename to static/src/environments/environment.ts diff --git a/opt-cc-static/src/favicon.ico b/static/src/favicon.ico similarity index 100% rename from opt-cc-static/src/favicon.ico rename to static/src/favicon.ico diff --git a/opt-cc-static/src/index.html b/static/src/index.html similarity index 100% rename from opt-cc-static/src/index.html rename to static/src/index.html diff --git a/opt-cc-static/src/main.ts b/static/src/main.ts similarity index 100% rename from opt-cc-static/src/main.ts rename to static/src/main.ts diff --git a/opt-cc-static/src/polyfills.ts b/static/src/polyfills.ts similarity index 100% rename from opt-cc-static/src/polyfills.ts rename to static/src/polyfills.ts diff --git a/opt-cc-static/src/styles.css b/static/src/styles.css similarity index 100% rename from opt-cc-static/src/styles.css rename to static/src/styles.css diff --git a/opt-cc-static/src/tsconfig.app.json b/static/src/tsconfig.app.json similarity index 100% rename from opt-cc-static/src/tsconfig.app.json rename to static/src/tsconfig.app.json diff --git a/opt-cc-static/src/tsconfig.spec.json b/static/src/tsconfig.spec.json similarity index 100% rename from opt-cc-static/src/tsconfig.spec.json rename to static/src/tsconfig.spec.json diff --git a/opt-cc-static/src/typings.d.ts b/static/src/typings.d.ts similarity index 100% rename from opt-cc-static/src/typings.d.ts rename to static/src/typings.d.ts diff --git a/opt-cc-static/tsconfig.json b/static/tsconfig.json similarity index 100% rename from opt-cc-static/tsconfig.json rename to static/tsconfig.json diff --git a/opt-cc-static/tslint.json b/static/tslint.json similarity index 100% rename from opt-cc-static/tslint.json rename to static/tslint.json diff --git a/opt-cc-static/yarn.lock b/static/yarn.lock similarity index 100% rename from opt-cc-static/yarn.lock rename to static/yarn.lock