diff options
Diffstat (limited to 'ui/imports/api/connection-tests')
-rw-r--r-- | ui/imports/api/connection-tests/connection-tests.js | 41 | ||||
-rw-r--r-- | ui/imports/api/connection-tests/methods.js | 52 | ||||
-rw-r--r-- | ui/imports/api/connection-tests/server/publications.js | 21 |
3 files changed, 114 insertions, 0 deletions
diff --git a/ui/imports/api/connection-tests/connection-tests.js b/ui/imports/api/connection-tests/connection-tests.js new file mode 100644 index 0000000..7acb549 --- /dev/null +++ b/ui/imports/api/connection-tests/connection-tests.js @@ -0,0 +1,41 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others / +// / +// All rights reserved. This program and the accompanying materials / +// are made available under the terms of the Apache License, Version 2.0 / +// which accompanies this distribution, and is available at / +// http://www.apache.org/licenses/LICENSE-2.0 / +///////////////////////////////////////////////////////////////////////////////////////// +import { Mongo } from 'meteor/mongo'; +import { SimpleSchema } from 'meteor/aldeed:simple-schema'; +//import * as R from 'ramda'; + +export const ConnectionTests = new Mongo.Collection('connection_tests', { idGeneration: 'MONGO' }); + +let simpleSchema = new SimpleSchema({ + _id: { type: { _str: { type: String, regEx: SimpleSchema.RegEx.Id } } }, + environment: { + type: String, + }, + + test_targets: { + type: [String], + }, + + test_configurations: { + type: [Object], + blackbox: true + }, + + submit_timestamp: { + type: String, + }, + + status: { + type: String, + defaultValue: 'request' + } +}); + +ConnectionTests.schema = simpleSchema; +ConnectionTests.attachSchema(ConnectionTests.schema); diff --git a/ui/imports/api/connection-tests/methods.js b/ui/imports/api/connection-tests/methods.js new file mode 100644 index 0000000..7badfb1 --- /dev/null +++ b/ui/imports/api/connection-tests/methods.js @@ -0,0 +1,52 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others / +// / +// All rights reserved. This program and the accompanying materials / +// are made available under the terms of the Apache License, Version 2.0 / +// which accompanies this distribution, and is available at / +// http://www.apache.org/licenses/LICENSE-2.0 / +///////////////////////////////////////////////////////////////////////////////////////// + +import * as R from 'ramda'; +import { ValidatedMethod } from 'meteor/mdg:validated-method'; +import { ConnectionTests } from './connection-tests'; +import { getSchemaForGroupName } from '/imports/api/environments/environments'; + +export const insert = new ValidatedMethod({ + name: 'connection_tests.insert', + validate: ConnectionTests.simpleSchema() + .pick([ + 'environment', + 'test_configurations', + 'test_configurations.$', + ]).validator({ clean: true, filter: false }), + run({ + environment, + test_configurations, + }) { + let connection_test = ConnectionTests.schema.clean({}); + + test_configurations = R.filter((config) => { + let validationContext = getSchemaForGroupName(config.name).newContext(); + try { + let result = validationContext.validate(config); + return result; + } catch (_e) { + return false; + } + }, test_configurations); + + let test_targets = R.map((config) => config.name, test_configurations); + let submit_timestamp = moment().format(); + + connection_test = R.merge(connection_test, { + environment, + test_targets, + test_configurations, + submit_timestamp + }); + + let insertResult = ConnectionTests.insert(connection_test); + return insertResult; + }, +}); diff --git a/ui/imports/api/connection-tests/server/publications.js b/ui/imports/api/connection-tests/server/publications.js new file mode 100644 index 0000000..4a092b5 --- /dev/null +++ b/ui/imports/api/connection-tests/server/publications.js @@ -0,0 +1,21 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others / +// / +// All rights reserved. This program and the accompanying materials / +// are made available under the terms of the Apache License, Version 2.0 / +// which accompanies this distribution, and is available at / +// http://www.apache.org/licenses/LICENSE-2.0 / +///////////////////////////////////////////////////////////////////////////////////////// +import { Meteor } from 'meteor/meteor'; +import * as R from 'ramda'; +import { ConnectionTests } from '../connection-tests.js'; + +Meteor.publish('connection_tests?_id', function (_id) { + console.log('server subscribtion to: connection_tests?_id'); + console.log('-_id: ', R.toString(_id)); + + let query = { + _id: _id, + }; + return ConnectionTests.find(query); +}); |