Moving javascript driver back to platform (#3613)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2b0fcd378c
Коммит
1641370fbe
1
.gitignore
поставляемый
1
.gitignore
поставляемый
@@ -67,6 +67,7 @@ web/sass-files/sass/.sass-cache/
|
||||
|
||||
# Default local file storage
|
||||
data/*
|
||||
webapp/data/*
|
||||
api/data/*
|
||||
|
||||
enterprise
|
||||
|
||||
@@ -363,6 +363,11 @@ type TeamForUpgrade struct {
|
||||
|
||||
func setupClientTests() {
|
||||
*utils.Cfg.TeamSettings.EnableOpenServer = true
|
||||
*utils.Cfg.ServiceSettings.EnableCommands = false
|
||||
*utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false
|
||||
*utils.Cfg.ServiceSettings.EnableCustomEmoji = true
|
||||
utils.Cfg.ServiceSettings.EnableIncomingWebhooks = false
|
||||
utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = false
|
||||
}
|
||||
|
||||
func executeTestCommand(cmd *exec.Cmd) {
|
||||
@@ -391,26 +396,13 @@ func runWebClientTests() {
|
||||
executeTestCommand(cmd)
|
||||
}
|
||||
|
||||
func runJavascriptClientTests() {
|
||||
os.Chdir("../mattermost-driver-javascript")
|
||||
cmd := exec.Command("npm", "test")
|
||||
executeTestCommand(cmd)
|
||||
}
|
||||
|
||||
func cmdRunClientTests() {
|
||||
if flagCmdRunWebClientTests {
|
||||
api.StartServer()
|
||||
setupClientTests()
|
||||
api.StartServer()
|
||||
runWebClientTests()
|
||||
api.StopServer()
|
||||
}
|
||||
|
||||
if flagCmdRunJavascriptClientTests {
|
||||
api.StartServer()
|
||||
setupClientTests()
|
||||
runJavascriptClientTests()
|
||||
api.StopServer()
|
||||
}
|
||||
}
|
||||
|
||||
// ADDED for 3.0 REMOVE for 3.4
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
export function track(category, action, label, property, value) {
|
||||
Client.track(category, action, label, property, value);
|
||||
|
||||
@@ -7,7 +7,7 @@ import TeamStore from 'stores/team_store.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
export function goToChannel(channel) {
|
||||
if (channel.fake) {
|
||||
|
||||
@@ -17,9 +17,9 @@ import {handleNewPost} from 'actions/post_actions.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
const ActionTypes = Constants.ActionTypes;
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import WebSocketClient from 'utils/websocket_client.jsx';
|
||||
import WebSocketClient from 'client/web_websocket_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import en from 'i18n/en.json';
|
||||
|
||||
@@ -12,7 +12,7 @@ import * as PostUtils from 'utils/post_utils.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
const ActionTypes = Constants.ActionTypes;
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
|
||||
export function handleNewPost(post, msg) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import Constants from 'utils/constants.jsx';
|
||||
const ActionTypes = Constants.ActionTypes;
|
||||
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
|
||||
|
||||
import {browserHistory} from 'react-router/es6';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
import TeamStore from 'stores/team_store.jsx';
|
||||
|
||||
@@ -13,8 +13,8 @@ import BrowserStore from 'stores/browser_store.jsx';
|
||||
import ErrorStore from 'stores/error_store.jsx';
|
||||
import NotificationStore from 'stores/notification_store.jsx'; //eslint-disable-line no-unused-vars
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import WebSocketClient from 'utils/websocket_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import WebSocketClient from 'client/web_websocket_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
|
||||
|
||||
1670
webapp/client/client.jsx
Обычный файл
1670
webapp/client/client.jsx
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'mattermost/client.jsx';
|
||||
import Client from './client.jsx';
|
||||
import TeamStore from '../stores/team_store.jsx';
|
||||
import BrowserStore from '../stores/browser_store.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import WebSocketClient from 'mattermost/websocket_client.jsx';
|
||||
import WebSocketClient from './websocket_client.jsx';
|
||||
|
||||
var WebClient = new WebSocketClient();
|
||||
export default WebClient;
|
||||
165
webapp/client/websocket_client.jsx
Обычный файл
165
webapp/client/websocket_client.jsx
Обычный файл
@@ -0,0 +1,165 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
const MAX_WEBSOCKET_FAILS = 7;
|
||||
const MIN_WEBSOCKET_RETRY_TIME = 3000; // 3 sec
|
||||
const MAX_WEBSOCKET_RETRY_TIME = 300000; // 5 mins
|
||||
|
||||
export default class WebSocketClient {
|
||||
constructor() {
|
||||
this.conn = null;
|
||||
this.sequence = 1;
|
||||
this.connectFailCount = 0;
|
||||
this.manuallyClosed = false;
|
||||
this.eventCallback = null;
|
||||
this.responseCallbacks = {};
|
||||
this.reconnectCallback = null;
|
||||
this.errorCallback = null;
|
||||
this.closeCallback = null;
|
||||
}
|
||||
|
||||
initialize(connectionUrl) {
|
||||
if (this.conn) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.connectFailCount === 0) {
|
||||
console.log('websocket connecting to ' + connectionUrl); //eslint-disable-line no-console
|
||||
}
|
||||
|
||||
this.manuallyClosed = false;
|
||||
|
||||
this.conn = new WebSocket(connectionUrl);
|
||||
|
||||
this.conn.onopen = () => {
|
||||
if (this.reconnectCallback) {
|
||||
this.reconnectCallback();
|
||||
}
|
||||
|
||||
if (this.connectFailCount > 0) {
|
||||
console.log('websocket re-established connection'); //eslint-disable-line no-console
|
||||
}
|
||||
|
||||
this.connectFailCount = 0;
|
||||
};
|
||||
|
||||
this.conn.onclose = () => {
|
||||
this.conn = null;
|
||||
this.sequence = 1;
|
||||
|
||||
if (this.connectFailCount === 0) {
|
||||
console.log('websocket closed'); //eslint-disable-line no-console
|
||||
}
|
||||
|
||||
if (this.manuallyClosed) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.connectFailCount++;
|
||||
|
||||
if (this.closeCallback) {
|
||||
this.closeCallback(this.connectFailCount);
|
||||
}
|
||||
|
||||
let retryTime = MIN_WEBSOCKET_RETRY_TIME;
|
||||
|
||||
// If we've failed a bunch of connections then start backing off
|
||||
if (this.connectFailCount > MAX_WEBSOCKET_FAILS) {
|
||||
retryTime = MIN_WEBSOCKET_RETRY_TIME * this.connectFailCount * this.connectFailCount;
|
||||
if (retryTime > MAX_WEBSOCKET_RETRY_TIME) {
|
||||
retryTime = MAX_WEBSOCKET_RETRY_TIME;
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(
|
||||
() => {
|
||||
this.initialize(connectionUrl);
|
||||
},
|
||||
retryTime
|
||||
);
|
||||
};
|
||||
|
||||
this.conn.onerror = (evt) => {
|
||||
if (this.connectFailCount <= 1) {
|
||||
console.log('websocket error'); //eslint-disable-line no-console
|
||||
console.log(evt); //eslint-disable-line no-console
|
||||
}
|
||||
|
||||
if (this.errorCallback) {
|
||||
this.errorCallback(evt);
|
||||
}
|
||||
};
|
||||
|
||||
this.conn.onmessage = (evt) => {
|
||||
const msg = JSON.parse(evt.data);
|
||||
if (msg.seq_reply) {
|
||||
if (msg.error) {
|
||||
console.log(msg); //eslint-disable-line no-console
|
||||
}
|
||||
|
||||
if (this.responseCallbacks[msg.seq_reply]) {
|
||||
this.responseCallbacks[msg.seq_reply](msg);
|
||||
Reflect.deleteProperty(this.responseCallbacks, msg.seq_reply);
|
||||
}
|
||||
} else if (this.eventCallback) {
|
||||
this.eventCallback(msg);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
setEventCallback(callback) {
|
||||
this.eventCallback = callback;
|
||||
}
|
||||
|
||||
setReconnectCallback(callback) {
|
||||
this.reconnectCallback = callback;
|
||||
}
|
||||
|
||||
setErrorCallback(callback) {
|
||||
this.errorCallback = callback;
|
||||
}
|
||||
|
||||
setCloseCallback(callback) {
|
||||
this.closeCallback = callback;
|
||||
}
|
||||
|
||||
close() {
|
||||
this.manuallyClosed = true;
|
||||
this.connectFailCount = 0;
|
||||
this.sequence = 1;
|
||||
if (this.conn && this.conn.readyState === WebSocket.OPEN) {
|
||||
this.conn.close();
|
||||
}
|
||||
}
|
||||
|
||||
sendMessage(action, data, responseCallback) {
|
||||
const msg = {
|
||||
action,
|
||||
seq: this.sequence++,
|
||||
data
|
||||
};
|
||||
|
||||
if (responseCallback) {
|
||||
this.responseCallbacks[msg.seq] = responseCallback;
|
||||
}
|
||||
|
||||
if (this.conn && this.conn.readyState === WebSocket.OPEN) {
|
||||
this.conn.send(JSON.stringify(msg));
|
||||
} else if (!this.conn || this.conn.readyState === WebSocket.Closed) {
|
||||
this.conn = null;
|
||||
this.initialize();
|
||||
}
|
||||
}
|
||||
|
||||
userTyping(channelId, parentId) {
|
||||
const data = {};
|
||||
data.channel_id = channelId;
|
||||
data.parent_id = parentId;
|
||||
|
||||
this.sendMessage('user_typing', data);
|
||||
}
|
||||
|
||||
getStatuses(callback) {
|
||||
this.sendMessage('get_statuses', null, callback);
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import $ from 'jquery';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import {Modal} from 'react-bootstrap';
|
||||
import LoadingScreen from './loading_screen.jsx';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import React from 'react';
|
||||
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import FormError from 'components/form_error.jsx';
|
||||
import SaveButton from 'components/admin_console/save_button.jsx';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import AdminNavbarDropdown from './admin_navbar_dropdown.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import $ from 'jquery';
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import FormError from 'components/form_error.jsx';
|
||||
|
||||
@@ -7,7 +7,7 @@ import * as Utils from '../../utils/utils.jsx';
|
||||
import AdminStore from '../../stores/admin_store.jsx';
|
||||
import UserStore from '../../stores/user_store.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from '../../utils/async_client.jsx';
|
||||
|
||||
import {FormattedMessage, FormattedDate, FormattedTime} from 'react-intl';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {injectIntl, intlShape, defineMessages, FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import {getConfig} from 'utils/async_client.jsx';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import ReactDOM from 'react-dom';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import {Modal} from 'react-bootstrap';
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import RemoveFileSetting from './remove_file_setting.jsx';
|
||||
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||
import SettingsGroup from './settings_group.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
export default class SamlSettings extends AdminSettings {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import AdminStore from 'stores/admin_store.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import FormError from 'components/form_error.jsx';
|
||||
import LoadingScreen from '../loading_screen.jsx';
|
||||
import UserItem from './user_item.jsx';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import * as TextFormatting from 'utils/text_formatting.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
const UserStatuses = Constants.UserStatuses;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import React from 'react';
|
||||
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import SpinnerButton from 'components/spinner_button.jsx';
|
||||
|
||||
@@ -9,7 +9,7 @@ import UserStore from 'stores/user_store.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
@@ -6,7 +6,7 @@ import {Modal} from 'react-bootstrap';
|
||||
import SettingItemMin from './setting_item_min.jsx';
|
||||
import SettingItemMax from './setting_item_max.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import PostDeletedModal from './post_deleted_modal.jsx';
|
||||
import PostStore from 'stores/post_store.jsx';
|
||||
|
||||
@@ -11,7 +11,7 @@ import TutorialTip from './tutorial/tutorial_tip.jsx';
|
||||
|
||||
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import * as ChannelActions from 'actions/channel_actions.jsx';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import {Modal} from 'react-bootstrap';
|
||||
import TeamStore from 'stores/team_store.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import PostStore from 'stores/post_store.jsx';
|
||||
import ModalStore from 'stores/modal_store.jsx';
|
||||
import {Modal} from 'react-bootstrap';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import LoadingScreen from './loading_screen.jsx';
|
||||
|
||||
import {browserHistory, Link} from 'react-router/es6';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import ReactDOM from 'react-dom';
|
||||
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import Textbox from './textbox.jsx';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import * as utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
import {intlShape, injectIntl, defineMessages} from 'react-intl';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import 'jquery-dragster/jquery.dragster.js';
|
||||
import ReactDOM from 'react-dom';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
@@ -5,7 +5,7 @@ import ReactDOM from 'react-dom';
|
||||
import * as utils from 'utils/utils.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
const ActionTypes = Constants.ActionTypes;
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import ModalStore from 'stores/modal_store.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
@@ -8,7 +8,7 @@ import FormError from 'components/form_error.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as TextFormatting from 'utils/text_formatting.jsx';
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import TeamStore from 'stores/team_store.jsx';
|
||||
|
||||
import ChannelSwitchModal from './channel_switch_modal.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
import NewChannelModal from './new_channel_modal.jsx';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import ReactDOM from 'react-dom';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import client from 'utils/web_client.jsx';
|
||||
import client from 'client/web_client.jsx';
|
||||
|
||||
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import UserStore from 'stores/user_store.jsx';
|
||||
import {Popover, Overlay} from 'react-bootstrap';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {browserHistory} from 'react-router/es6';
|
||||
|
||||
@@ -6,7 +6,7 @@ import ChannelStore from 'stores/channel_store.jsx';
|
||||
|
||||
import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import ModalStore from 'stores/modal_store.jsx';
|
||||
|
||||
import {Modal} from 'react-bootstrap';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import ReactDOM from 'react-dom';
|
||||
import TeamStore from 'stores/team_store.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
|
||||
import * as TextFormatting from 'utils/text_formatting.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import LocalizationStore from 'stores/localization_store.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {IntlProvider} from 'react-intl';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import $ from 'jquery';
|
||||
import ReactDOM from 'react-dom';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import SearchStore from 'stores/search_store.jsx';
|
||||
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
@@ -206,4 +206,4 @@ export default class SearchBar extends React.Component {
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import React from 'react';
|
||||
import {Link} from 'react-router/es6';
|
||||
|
||||
@@ -7,7 +7,7 @@ import NavbarDropdown from './navbar_dropdown.jsx';
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
const Preferences = Constants.Preferences;
|
||||
|
||||
@@ -11,7 +11,7 @@ import BrowserStore from 'stores/browser_store.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
@@ -7,7 +7,7 @@ import SuggestionStore from 'stores/suggestion_store.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import Suggestion from './suggestion.jsx';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import SuggestionStore from 'stores/suggestion_store.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import $ from 'jquery';
|
||||
import SettingItemMin from './setting_item_min.jsx';
|
||||
import SettingItemMax from './setting_item_max.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import TeamStore from 'stores/team_store.jsx';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import ConfirmModal from './confirm_modal.jsx';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import React from 'react';
|
||||
|
||||
export default function UserListRow({user, teamMember, actions, actionProps}) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
import {Popover, OverlayTrigger} from 'react-bootstrap';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import SettingItemMax from '../setting_item_max.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as I18n from 'i18n/i18n.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
@@ -9,7 +9,7 @@ import SettingPicture from '../setting_picture.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import ErrorStore from 'stores/error_store.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
@@ -7,7 +7,7 @@ import SettingItemMax from '../setting_item_max.jsx';
|
||||
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import ToggleModalButton from '../toggle_modal_button.jsx';
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
import TeamStore from 'stores/team_store.jsx';
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
import WebClient from 'utils/web_client.jsx';
|
||||
import WebClient from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
|
||||
const ytRegex = /(?:http|https):\/\/(?:www\.)?(?:(?:youtube\.com\/(?:(?:v\/)|(\/u\/\w\/)|(?:(?:watch|embed\/watch)(?:\/|.*v=))|(?:embed\/)|(?:user\/[^\/]+\/u\/[0-9]\/)))|(?:youtu\.be\/))([^#&\?]*)/;
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
"keymirror": "0.1.1",
|
||||
"marked": "mattermost/marked#12d2be4cdf54d4ec95fead934e18840b6a2c1a7b",
|
||||
"match-at": "0.1.0",
|
||||
"mattermost": "mattermost/mattermost-javascript#84b6f1ebf33aa4b5d8e7ddd7be97d3f5bff5ed17",
|
||||
"object-assign": "4.1.0",
|
||||
"perfect-scrollbar": "0.6.12",
|
||||
"react": "15.2.1",
|
||||
|
||||
@@ -11,7 +11,7 @@ import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
const ActionTypes = Constants.ActionTypes;
|
||||
import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
|
||||
|
||||
311
webapp/tests/client_admin.test.jsx
Обычный файл
311
webapp/tests/client_admin.test.jsx
Обычный файл
@@ -0,0 +1,311 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
var assert = require('assert');
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Admin', function() {
|
||||
this.timeout(10000);
|
||||
|
||||
it('Admin.reloadConfig', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().reloadConfig(
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.recycleDatabaseConnection', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().recycleDatabaseConnection(
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.getComplianceReports', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().getComplianceReports(
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.saveComplianceReports', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
var job = {};
|
||||
job.desc = 'desc';
|
||||
job.emails = '';
|
||||
job.keywords = 'test';
|
||||
job.start_at = new Date();
|
||||
job.end_at = new Date();
|
||||
|
||||
TestHelper.basicClient().saveComplianceReports(
|
||||
job,
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.getLogs', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().getLogs(
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.getServerAudits', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().getServerAudits(
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.getConfig', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().getConfig(
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.getAnalytics', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().getAnalytics(
|
||||
'standard',
|
||||
null,
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.getTeamAnalytics', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().getTeamAnalytics(
|
||||
TestHelper.basicTeam().id,
|
||||
'standard',
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.saveConfig', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var config = {};
|
||||
config.site_name = 'test';
|
||||
|
||||
TestHelper.basicClient().saveConfig(
|
||||
config,
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.testEmail', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var config = {};
|
||||
config.site_name = 'test';
|
||||
|
||||
TestHelper.basicClient().testEmail(
|
||||
config,
|
||||
function() {
|
||||
done(new Error('should need system admin permissions'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.system_permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.adminResetMfa', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
TestHelper.basicClient().adminResetMfa(
|
||||
TestHelper.basicUser().id,
|
||||
function() {
|
||||
done(new Error('should need a license'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.adminResetPassword', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().resetPassword(
|
||||
user.id,
|
||||
'new_password',
|
||||
function() {
|
||||
throw Error('shouldnt work');
|
||||
},
|
||||
function(err) {
|
||||
// this should fail since you're not a system admin
|
||||
assert.equal(err.id, 'api.context.invalid_param.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('License.getClientLicenceConfig', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getClientLicenceConfig(
|
||||
function(data) {
|
||||
assert.equal(data.IsLicensed, 'false');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('License.removeLicenseFile', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().removeLicenseFile(
|
||||
function() {
|
||||
done(new Error('not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('Admin.ldapSyncNow', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
TestHelper.basicClient().ldapSyncNow(
|
||||
function() {
|
||||
throw Error('shouldnt work');
|
||||
},
|
||||
function() {
|
||||
// this should fail since you're not a system admin
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
/*it('License.uploadLicenseFile', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().uploadLicenseFile(
|
||||
'form data',
|
||||
function() {
|
||||
done(new Error('not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.permissions.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});*/
|
||||
|
||||
// TODO XXX FIX ME - this test depends on make dist
|
||||
|
||||
// it('General.getTranslations', function(done) {
|
||||
// TestHelper.initBasic(() => {
|
||||
// TestHelper.basicClient().getTranslations(
|
||||
// 'http://localhost:8065/static/i18n/es.json',
|
||||
// function(data) {
|
||||
// assert.equal(data['login.or'], 'o');
|
||||
// done();
|
||||
// },
|
||||
// function(err) {
|
||||
// done(new Error(err.message));
|
||||
// }
|
||||
// );
|
||||
// });
|
||||
// });
|
||||
});
|
||||
|
||||
353
webapp/tests/client_channel.test.jsx
Обычный файл
353
webapp/tests/client_channel.test.jsx
Обычный файл
@@ -0,0 +1,353 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Channels', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('createChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.fakeChannel();
|
||||
channel.team_id = TestHelper.basicTeam().id;
|
||||
TestHelper.basicClient().createChannel(
|
||||
channel,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.name, channel.name);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
/* TODO: FIX THIS TEST
|
||||
it('createDirectChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().createUser(
|
||||
TestHelper.fakeUser(),
|
||||
function(user2) {
|
||||
TestHelper.basicClient().addUserToTeam(
|
||||
user2.id,
|
||||
function() {
|
||||
TestHelper.basicClient().createDirectChannel(
|
||||
user2.id,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
it('updateChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
channel.display_name = 'changed';
|
||||
TestHelper.basicClient().updateChannel(
|
||||
channel,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.display_name, 'changed');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateChannelHeader', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
channel.display_name = 'changed';
|
||||
TestHelper.basicClient().updateChannelHeader(
|
||||
channel.id,
|
||||
'new header',
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.header, 'new header');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateChannelPurpose', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
channel.display_name = 'changed';
|
||||
TestHelper.basicClient().updateChannelPurpose(
|
||||
channel.id,
|
||||
'new purpose',
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.purpose, 'new purpose');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateChannelNotifyProps', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var props = {};
|
||||
props.channel_id = TestHelper.basicChannel().id;
|
||||
props.user_id = TestHelper.basicUser().id;
|
||||
props.desktop = 'all';
|
||||
TestHelper.basicClient().updateChannelNotifyProps(
|
||||
props,
|
||||
function(data) {
|
||||
assert.equal(data.desktop, 'all');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('leaveChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
TestHelper.basicClient().leaveChannel(
|
||||
channel.id,
|
||||
function(data) {
|
||||
assert.equal(data.id, channel.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('joinChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
TestHelper.basicClient().leaveChannel(
|
||||
channel.id,
|
||||
function() {
|
||||
TestHelper.basicClient().joinChannel(
|
||||
channel.id,
|
||||
function() {
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('joinChannelByName', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
TestHelper.basicClient().leaveChannel(
|
||||
channel.id,
|
||||
function() {
|
||||
TestHelper.basicClient().joinChannelByName(
|
||||
channel.name,
|
||||
function() {
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('deleteChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
TestHelper.basicClient().deleteChannel(
|
||||
channel.id,
|
||||
function(data) {
|
||||
assert.equal(data.id, channel.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateLastViewedAt', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var channel = TestHelper.basicChannel();
|
||||
TestHelper.basicClient().updateLastViewedAt(
|
||||
channel.id,
|
||||
function(data) {
|
||||
assert.equal(data.id, channel.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getChannels', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getChannels(
|
||||
function(data) {
|
||||
assert.equal(data.channels.length, 3);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getChannel', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getChannel(
|
||||
TestHelper.basicChannel().id,
|
||||
function(data) {
|
||||
assert.equal(TestHelper.basicChannel().id, data.channel.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getMoreChannels', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getMoreChannels(
|
||||
function(data) {
|
||||
assert.equal(data.channels.length, 0);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getChannelCounts', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getChannelCounts(
|
||||
function(data) {
|
||||
assert.equal(data.counts[TestHelper.basicChannel().id], 1);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getChannelExtraInfo', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getChannelExtraInfo(
|
||||
TestHelper.basicChannel().id,
|
||||
5,
|
||||
function(data) {
|
||||
assert.equal(data.member_count, 1);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
/* TODO FIX THIS TEST
|
||||
it('addChannelMember', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().createUser(
|
||||
TestHelper.fakeUser(),
|
||||
function(user2) {
|
||||
TestHelper.basicClient().addUserToTeam(
|
||||
user2.id,
|
||||
function() {
|
||||
TestHelper.basicClient().addChannelMember(
|
||||
TestHelper.basicChannel().id,
|
||||
user2.id,
|
||||
function(data) {
|
||||
assert.equal(data.channel_id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
it('removeChannelMember', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().removeChannelMember(
|
||||
TestHelper.basicChannel().id,
|
||||
TestHelper.basicUser().id,
|
||||
function(data) {
|
||||
assert.equal(data.channel_id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
116
webapp/tests/client_command.test.jsx
Обычный файл
116
webapp/tests/client_command.test.jsx
Обычный файл
@@ -0,0 +1,116 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Commands', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('listCommands', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().listCommands(
|
||||
function(data) {
|
||||
assert.equal(data.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('listTeamCommands', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().listTeamCommands(
|
||||
function() {
|
||||
done(new Error('cmds not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.command.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('executeCommand', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().executeCommand(
|
||||
TestHelper.basicChannel().id,
|
||||
'/shrug',
|
||||
null,
|
||||
function(data) {
|
||||
assert.equal(data.response_type, 'in_channel');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('addCommand', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
var cmd = {};
|
||||
cmd.url = 'http://www.gonowhere.com';
|
||||
cmd.trigger = '/hello';
|
||||
cmd.method = 'P';
|
||||
cmd.username = '';
|
||||
cmd.icon_url = '';
|
||||
cmd.auto_complete = false;
|
||||
cmd.auto_complete_desc = '';
|
||||
cmd.auto_complete_hint = '';
|
||||
cmd.display_name = 'Unit Test';
|
||||
|
||||
TestHelper.basicClient().addCommand(
|
||||
cmd,
|
||||
function() {
|
||||
done(new Error('cmds not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.command.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('deleteCommand', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().deleteCommand(
|
||||
TestHelper.generateId(),
|
||||
function() {
|
||||
done(new Error('cmds not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.command.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('regenCommandToken', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().regenCommandToken(
|
||||
TestHelper.generateId(),
|
||||
function() {
|
||||
done(new Error('cmds not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.command.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
100
webapp/tests/client_emoji.test.jsx
Обычный файл
100
webapp/tests/client_emoji.test.jsx
Обычный файл
@@ -0,0 +1,100 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
describe('Client.Emoji', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
before(function() {
|
||||
// write a temporary file so that we have something to upload for testing
|
||||
const buffer = new Buffer('R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=', 'base64');
|
||||
|
||||
const testGif = fs.openSync('test.gif', 'w+');
|
||||
fs.writeFileSync(testGif, buffer);
|
||||
});
|
||||
|
||||
it('addEmoji', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
const name = TestHelper.generateId();
|
||||
|
||||
TestHelper.basicClient().addEmoji(
|
||||
{creator_id: TestHelper.basicUser().id, name},
|
||||
fs.createReadStream('test.gif'),
|
||||
function(data) {
|
||||
assert.equal(data.name, name);
|
||||
assert.notEqual(data.id, null);
|
||||
|
||||
TestHelper.basicClient().deleteEmoji(data.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('deleteEmoji', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().addEmoji(
|
||||
{creator_id: TestHelper.basicUser().id, name: TestHelper.generateId()},
|
||||
fs.createReadStream('test.gif'),
|
||||
function(data) {
|
||||
TestHelper.basicClient().deleteEmoji(
|
||||
data.id,
|
||||
function() {
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('listEmoji', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
const name = TestHelper.generateId();
|
||||
TestHelper.basicClient().addEmoji(
|
||||
{creator_id: TestHelper.basicUser().id, name},
|
||||
fs.createReadStream('test.gif'),
|
||||
function() {
|
||||
TestHelper.basicClient().listEmoji(
|
||||
function(data) {
|
||||
assert(data.length > 0, true);
|
||||
|
||||
let found = false;
|
||||
for (const emoji of data) {
|
||||
if (emoji.name === name) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (found) {
|
||||
done();
|
||||
} else {
|
||||
done(new Error('test emoji wasn\'t returned'));
|
||||
}
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
85
webapp/tests/client_general.test.jsx
Обычный файл
85
webapp/tests/client_general.test.jsx
Обычный файл
@@ -0,0 +1,85 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
var assert = require('assert');
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.General', function() {
|
||||
this.timeout(10000);
|
||||
|
||||
it('General.getClientConfig', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getClientConfig(
|
||||
function(data) {
|
||||
assert.equal(data.SiteName, 'Mattermost');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('General.getPing', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getPing(
|
||||
function(data) {
|
||||
assert.equal(data.version.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('General.logClientError', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var config = {};
|
||||
config.site_name = 'test';
|
||||
TestHelper.basicClient().logClientError('this is a test');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('File.getFileInfo', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
TestHelper.basicClient().getFileInfo(
|
||||
`/${TestHelper.basicChannel().id}/${TestHelper.basicUser().id}/filename.txt`,
|
||||
function(data) {
|
||||
assert.equal(data.filename, 'filename.txt');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('File.getPublicLink', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var data = {};
|
||||
data.channel_id = TestHelper.basicChannel().id;
|
||||
data.user_id = TestHelper.basicUser().id;
|
||||
data.filename = `/${TestHelper.basicChannel().id}/${TestHelper.basicUser().id}/filename.txt`;
|
||||
|
||||
TestHelper.basicClient().getPublicLink(
|
||||
data,
|
||||
function() {
|
||||
done(new Error('not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.file.get_public_link.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
132
webapp/tests/client_hooks.test.jsx
Обычный файл
132
webapp/tests/client_hooks.test.jsx
Обычный файл
@@ -0,0 +1,132 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Hooks', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('addIncomingHook', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
var hook = {};
|
||||
hook.channel_id = TestHelper.basicChannel().id;
|
||||
hook.description = 'desc';
|
||||
hook.display_name = 'Unit Test';
|
||||
|
||||
TestHelper.basicClient().addIncomingHook(
|
||||
hook,
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.create_incoming.disabled.app_errror');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('deleteIncomingHook', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().deleteIncomingHook(
|
||||
TestHelper.generateId(),
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.delete_incoming.disabled.app_errror');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('listIncomingHooks', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().listIncomingHooks(
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.get_incoming.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('addOutgoingHook', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
var hook = {};
|
||||
hook.channel_id = TestHelper.basicChannel().id;
|
||||
hook.description = 'desc';
|
||||
hook.display_name = 'Unit Test';
|
||||
|
||||
TestHelper.basicClient().addOutgoingHook(
|
||||
hook,
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.create_outgoing.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('deleteOutgoingHook', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().deleteOutgoingHook(
|
||||
TestHelper.generateId(),
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.delete_outgoing.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('listOutgoingHooks', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().listOutgoingHooks(
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.get_outgoing.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('regenOutgoingHookToken', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().regenOutgoingHookToken(
|
||||
TestHelper.generateId(),
|
||||
function() {
|
||||
done(new Error('hooks not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.webhook.regen_outgoing_token.disabled.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
53
webapp/tests/client_oauth.test.jsx
Обычный файл
53
webapp/tests/client_oauth.test.jsx
Обычный файл
@@ -0,0 +1,53 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.OAuth', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('registerOAuthApp', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
var app = {};
|
||||
app.name = 'test';
|
||||
app.homepage = 'homepage';
|
||||
app.description = 'desc';
|
||||
app.callback_urls = '';
|
||||
|
||||
TestHelper.basicClient().registerOAuthApp(
|
||||
app,
|
||||
function() {
|
||||
done(new Error('not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.oauth.register_oauth_app.turn_off.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('allowOAuth2', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
TestHelper.basicClient().allowOAuth2(
|
||||
'GET',
|
||||
'123456',
|
||||
'http://nowhere.com',
|
||||
'state',
|
||||
'scope',
|
||||
function() {
|
||||
done(new Error('not enabled'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.oauth.allow_oauth.turn_off.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
201
webapp/tests/client_post.test.jsx
Обычный файл
201
webapp/tests/client_post.test.jsx
Обычный файл
@@ -0,0 +1,201 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Posts', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('createPost', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var post = TestHelper.fakePost();
|
||||
post.channel_id = TestHelper.basicChannel().id;
|
||||
|
||||
TestHelper.basicClient().createPost(
|
||||
post,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPostById', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getPostById(
|
||||
TestHelper.basicPost().id,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPost', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getPost(
|
||||
TestHelper.basicChannel().id,
|
||||
TestHelper.basicPost().id,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updatePost', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var post = TestHelper.basicPost();
|
||||
post.message = 'new message';
|
||||
post.channel_id = TestHelper.basicChannel().id;
|
||||
|
||||
TestHelper.basicClient().updatePost(
|
||||
post,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('deletePost', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().deletePost(
|
||||
TestHelper.basicChannel().id,
|
||||
TestHelper.basicPost().id,
|
||||
function(data) {
|
||||
assert.equal(data.id, TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('searchPost', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().search(
|
||||
'unit test',
|
||||
false,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPostsPage', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getPostsPage(
|
||||
TestHelper.basicChannel().id,
|
||||
0,
|
||||
10,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPosts', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getPosts(
|
||||
TestHelper.basicChannel().id,
|
||||
0,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPostsBefore', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var post = TestHelper.fakePost();
|
||||
post.channel_id = TestHelper.basicChannel().id;
|
||||
|
||||
TestHelper.basicClient().createPost(
|
||||
post,
|
||||
function(rpost) {
|
||||
TestHelper.basicClient().getPostsBefore(
|
||||
TestHelper.basicChannel().id,
|
||||
rpost.id,
|
||||
0,
|
||||
10,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], TestHelper.basicPost().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPostsAfter', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var post = TestHelper.fakePost();
|
||||
post.channel_id = TestHelper.basicChannel().id;
|
||||
|
||||
TestHelper.basicClient().createPost(
|
||||
post,
|
||||
function(rpost) {
|
||||
TestHelper.basicClient().getPostsAfter(
|
||||
TestHelper.basicChannel().id,
|
||||
TestHelper.basicPost().id,
|
||||
0,
|
||||
10,
|
||||
function(data) {
|
||||
assert.equal(data.order[0], rpost.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
65
webapp/tests/client_preferences.test.jsx
Обычный файл
65
webapp/tests/client_preferences.test.jsx
Обычный файл
@@ -0,0 +1,65 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Preferences', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('getAllPreferences', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getAllPreferences(
|
||||
function(data) {
|
||||
assert.equal(data[0].category, 'tutorial_step');
|
||||
assert.equal(data[0].user_id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('savePreferences', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var perf = {};
|
||||
perf.user_id = TestHelper.basicUser().id;
|
||||
perf.category = 'test';
|
||||
perf.name = 'name';
|
||||
perf.value = 'value';
|
||||
|
||||
var perfs = [];
|
||||
perfs.push(perf);
|
||||
|
||||
TestHelper.basicClient().savePreferences(
|
||||
perfs,
|
||||
function(data) {
|
||||
assert.equal(data, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getPreferenceCategory', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getPreferenceCategory(
|
||||
'tutorial_step',
|
||||
function(data) {
|
||||
assert.equal(data[0].category, 'tutorial_step');
|
||||
assert.equal(data[0].user_id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
244
webapp/tests/client_team.test.jsx
Обычный файл
244
webapp/tests/client_team.test.jsx
Обычный файл
@@ -0,0 +1,244 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.Team', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('findTeamByName', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().findTeamByName(
|
||||
TestHelper.basicTeam().name,
|
||||
function(data) {
|
||||
assert.equal(data, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('signupTeam', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var email = TestHelper.fakeEmail();
|
||||
|
||||
client.signupTeam(
|
||||
email,
|
||||
function(data) {
|
||||
assert.equal(data.email, email);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('createTeamFromSignup', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var email = TestHelper.fakeEmail();
|
||||
|
||||
client.signupTeam(
|
||||
email,
|
||||
function(data) {
|
||||
var teamSignup = {};
|
||||
teamSignup.invites = [];
|
||||
teamSignup.data = decodeURIComponent(data.follow_link.split('&h=')[0].replace('/signup_team_complete/?d=', ''));
|
||||
teamSignup.hash = decodeURIComponent(data.follow_link.split('&h=')[1]);
|
||||
|
||||
teamSignup.user = TestHelper.fakeUser();
|
||||
teamSignup.team = TestHelper.fakeTeam();
|
||||
teamSignup.team.email = teamSignup.user.email;
|
||||
|
||||
client.createTeamFromSignup(
|
||||
teamSignup,
|
||||
function(data2) {
|
||||
assert.equal(data2.team.id.length > 0, true);
|
||||
assert.equal(data2.user.id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('createTeam', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var team = TestHelper.fakeTeam();
|
||||
client.createTeam(
|
||||
team,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.name, team.name);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('getAllTeams', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getAllTeams(
|
||||
function(data) {
|
||||
assert.equal(data[TestHelper.basicTeam().id].name, TestHelper.basicTeam().name);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getAllTeamListings', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getAllTeamListings(
|
||||
function(data) {
|
||||
assert.equal(data != null, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getMyTeam', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getMyTeam(
|
||||
function(data) {
|
||||
assert.equal(data.name, TestHelper.basicTeam().name);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('GetTeamMembers', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getTeamMembers(
|
||||
TestHelper.basicTeam().id,
|
||||
function(data) {
|
||||
assert.equal(data.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('inviteMembers', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var data = {};
|
||||
data.invites = [];
|
||||
var invite = {};
|
||||
invite.email = TestHelper.fakeEmail();
|
||||
invite.firstName = 'first';
|
||||
invite.lastName = 'last';
|
||||
data.invites.push(invite);
|
||||
|
||||
TestHelper.basicClient().inviteMembers(
|
||||
data,
|
||||
function(dataBack) {
|
||||
assert.equal(dataBack.invites.length, 1);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateTeam', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var team = TestHelper.basicTeam();
|
||||
team.display_name = 'test_updated';
|
||||
|
||||
TestHelper.basicClient().updateTeam(
|
||||
team,
|
||||
function(data) {
|
||||
assert.equal(data.display_name, 'test_updated');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('addUserToTeam', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().createUser(
|
||||
TestHelper.fakeUser(),
|
||||
function(user2) {
|
||||
TestHelper.basicClient().addUserToTeam(
|
||||
'',
|
||||
user2.id,
|
||||
function(data) {
|
||||
assert.equal(data.user_id, user2.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('removeUserFromTeam', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().removeUserFromTeam(
|
||||
'',
|
||||
TestHelper.basicUser().id,
|
||||
function(data) {
|
||||
assert.equal(data.user_id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getInviteInfo', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getInviteInfo(
|
||||
TestHelper.basicTeam().invite_id,
|
||||
function(data) {
|
||||
assert.equal(data.display_name.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
558
webapp/tests/client_user.test.jsx
Обычный файл
558
webapp/tests/client_user.test.jsx
Обычный файл
@@ -0,0 +1,558 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import assert from 'assert';
|
||||
import TestHelper from './test_helper.jsx';
|
||||
|
||||
describe('Client.User', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
it('getMe', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getMe(
|
||||
function(data) {
|
||||
assert.equal(data.id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getInitialLoad', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getInitialLoad(
|
||||
function(data) {
|
||||
assert.equal(data.user.id.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('createUser', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var user = TestHelper.fakeUser();
|
||||
client.createUser(
|
||||
user,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.email, user.email);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('loginByEmail', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var user = TestHelper.fakeUser();
|
||||
client.createUser(
|
||||
user,
|
||||
function() {
|
||||
client.login(
|
||||
user.email,
|
||||
user.password,
|
||||
null,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.email, user.email);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('loginById', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var user = TestHelper.fakeUser();
|
||||
client.createUser(
|
||||
user,
|
||||
function(newUser) {
|
||||
assert.equal(user.email, newUser.email);
|
||||
client.loginById(
|
||||
newUser.id,
|
||||
user.password,
|
||||
null,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.email, user.email);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('loginByUsername', function(done) {
|
||||
var client = TestHelper.createClient();
|
||||
var user = TestHelper.fakeUser();
|
||||
client.createUser(
|
||||
user,
|
||||
function() {
|
||||
client.login(
|
||||
user.username,
|
||||
user.password,
|
||||
null,
|
||||
function(data) {
|
||||
assert.equal(data.id.length > 0, true);
|
||||
assert.equal(data.email, user.email);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('updateUser', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
user.nickname = 'updated';
|
||||
|
||||
TestHelper.basicClient().updateUser(
|
||||
user, null,
|
||||
function(data) {
|
||||
assert.equal(data.nickname, 'updated');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updatePassword', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().updatePassword(
|
||||
user.id,
|
||||
user.password,
|
||||
'update_password',
|
||||
function(data) {
|
||||
assert.equal(data.user_id, user.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateUserNotifyProps', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
var notifyProps = {
|
||||
all: 'true',
|
||||
channel: 'true',
|
||||
desktop: 'all',
|
||||
desktop_sound: 'true',
|
||||
email: 'false',
|
||||
first_name: 'false',
|
||||
mention_keys: '',
|
||||
user_id: user.id
|
||||
};
|
||||
|
||||
TestHelper.basicClient().updateUserNotifyProps(
|
||||
notifyProps,
|
||||
function(data) {
|
||||
assert.equal(data.notify_props.email, 'false');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateRoles', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
var team = TestHelper.basicTeam();
|
||||
|
||||
TestHelper.basicClient().updateRoles(
|
||||
team.id,
|
||||
user.id,
|
||||
'',
|
||||
function(data) {
|
||||
assert.equal(data.user_id, user.id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
/* TODO: FIX THIS TEST
|
||||
it('updateActive', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().updateActive(
|
||||
user.id,
|
||||
false,
|
||||
function(data) {
|
||||
assert.equal(data.last_activity_at > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});*/
|
||||
|
||||
it('sendPasswordReset', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().sendPasswordReset(
|
||||
user.email,
|
||||
function(data) {
|
||||
assert.equal(data.email, user.email);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('resetPassword', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
|
||||
TestHelper.basicClient().resetPassword(
|
||||
'',
|
||||
'new_password',
|
||||
function() {
|
||||
throw Error('shouldnt work');
|
||||
},
|
||||
function(err) {
|
||||
// this should fail since you're not a system admin
|
||||
assert.equal(err.id, 'api.context.invalid_param.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('emailToOAuth', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().emailToOAuth(
|
||||
user.email,
|
||||
'new_password',
|
||||
'gitlab',
|
||||
function() {
|
||||
throw Error('shouldnt work');
|
||||
},
|
||||
function(err) {
|
||||
// this should fail since you're not a system admin
|
||||
assert.equal(err.id, 'api.user.check_user_password.invalid.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('oauthToEmail', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().oauthToEmail(
|
||||
user.email,
|
||||
'new_password',
|
||||
function(data) {
|
||||
assert.equal(data.follow_link.length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('emailToLdap', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().emailToLdap(
|
||||
user.email,
|
||||
user.password,
|
||||
'unknown_id',
|
||||
'unknown_pwd',
|
||||
function() {
|
||||
throw Error('shouldnt work');
|
||||
},
|
||||
function() {
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('ldapToEmail', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
var user = TestHelper.basicUser();
|
||||
|
||||
TestHelper.basicClient().ldapToEmail(
|
||||
user.email,
|
||||
'new_password',
|
||||
'new_password',
|
||||
function() {
|
||||
throw Error('shouldnt work');
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.user.ldap_to_email.not_ldap_account.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('logout', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().logout(
|
||||
function(data) {
|
||||
assert.equal(data.user_id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('checkMfa', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().checkMfa(
|
||||
TestHelper.generateId(),
|
||||
function(data) {
|
||||
assert.equal(data.mfa_required, 'false');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getSessions', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getSessions(
|
||||
TestHelper.basicUser().id,
|
||||
function(data) {
|
||||
assert.equal(data[0].user_id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('revokeSession', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getSessions(
|
||||
TestHelper.basicUser().id,
|
||||
function(sessions) {
|
||||
TestHelper.basicClient().revokeSession(
|
||||
sessions[0].id,
|
||||
function(data) {
|
||||
assert.equal(data.id, sessions[0].id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getAudits', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getAudits(
|
||||
TestHelper.basicUser().id,
|
||||
function(data) {
|
||||
assert.equal(data[0].user_id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getDirectProfiles', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getDirectProfiles(
|
||||
function(data) {
|
||||
assert.equal(Object.keys(data).length === 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.getDirectProfiles));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getProfiles', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getProfiles(
|
||||
function(data) {
|
||||
assert.equal(data[TestHelper.basicUser().id].id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getProfilesForTeam', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getProfilesForTeam(
|
||||
TestHelper.basicTeam().id,
|
||||
function(data) {
|
||||
assert.equal(data[TestHelper.basicUser().id].id, TestHelper.basicUser().id);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('getProfilesForDirectMessageList', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().getProfilesForDirectMessageList(
|
||||
function(data) {
|
||||
assert.equal(Object.keys(data).length > 0, true);
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
/* TODO: FIX THIS TEST
|
||||
it('getStatuses', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
var ids = [];
|
||||
ids.push(TestHelper.basicUser().id);
|
||||
|
||||
TestHelper.basicClient().getStatuses(
|
||||
ids,
|
||||
function(data) {
|
||||
assert.equal(data[TestHelper.basicUser().id], 'online');
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
it('verifyEmail', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().verifyEmail(
|
||||
'junk',
|
||||
'junk',
|
||||
function() {
|
||||
done(new Error('should be invalid'));
|
||||
},
|
||||
function(err) {
|
||||
assert.equal(err.id, 'api.context.invalid_param.app_error');
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('resendVerification', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().resendVerification(
|
||||
TestHelper.basicUser().email,
|
||||
function() {
|
||||
done();
|
||||
},
|
||||
function(err) {
|
||||
done(new Error(err.message));
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('updateMfa', function(done) {
|
||||
TestHelper.initBasic(() => {
|
||||
TestHelper.basicClient().enableLogErrorsToConsole(false); // Disabling since this unit test causes an error
|
||||
TestHelper.basicClient().updateMfa(
|
||||
'junk',
|
||||
true,
|
||||
function() {
|
||||
done(new Error('not enabled'));
|
||||
},
|
||||
function() {
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
174
webapp/tests/test_helper.jsx
Обычный файл
174
webapp/tests/test_helper.jsx
Обычный файл
@@ -0,0 +1,174 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'client/client.jsx';
|
||||
import jqd from 'jquery-deferred';
|
||||
|
||||
class TestHelperClass {
|
||||
basicClient = () => {
|
||||
return this.basicc;
|
||||
}
|
||||
|
||||
basicTeam = () => {
|
||||
return this.basict;
|
||||
}
|
||||
|
||||
basicUser = () => {
|
||||
return this.basicu;
|
||||
}
|
||||
|
||||
basicChannel = () => {
|
||||
return this.basicch;
|
||||
}
|
||||
|
||||
basicPost = () => {
|
||||
return this.basicp;
|
||||
}
|
||||
|
||||
generateId = () => {
|
||||
// implementation taken from http://stackoverflow.com/a/2117523
|
||||
var id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
||||
|
||||
id = id.replace(/[xy]/g, function replaceRandom(c) {
|
||||
var r = Math.floor(Math.random() * 16);
|
||||
|
||||
var v;
|
||||
if (c === 'x') {
|
||||
v = r;
|
||||
} else {
|
||||
v = (r & 0x3) | 0x8;
|
||||
}
|
||||
|
||||
return v.toString(16);
|
||||
});
|
||||
|
||||
return 'uid' + id;
|
||||
}
|
||||
|
||||
createClient() {
|
||||
var c = new Client();
|
||||
c.setUrl('http://localhost:8065');
|
||||
c.useHeaderToken();
|
||||
c.enableLogErrorsToConsole(true);
|
||||
return c;
|
||||
}
|
||||
|
||||
fakeEmail = () => {
|
||||
return 'success' + this.generateId() + '@simulator.amazonses.com';
|
||||
}
|
||||
|
||||
fakeUser = () => {
|
||||
var user = {};
|
||||
user.email = this.fakeEmail();
|
||||
user.allow_marketing = true;
|
||||
user.password = 'password1';
|
||||
user.username = this.generateId();
|
||||
return user;
|
||||
}
|
||||
|
||||
fakeTeam = () => {
|
||||
var team = {};
|
||||
team.name = this.generateId();
|
||||
team.display_name = `Unit Test ${team.name}`;
|
||||
team.type = 'O';
|
||||
team.email = this.fakeEmail();
|
||||
team.allowed_domains = '';
|
||||
return team;
|
||||
}
|
||||
|
||||
fakeChannel = () => {
|
||||
var channel = {};
|
||||
channel.name = this.generateId();
|
||||
channel.display_name = `Unit Test ${channel.name}`;
|
||||
channel.type = 'O'; // open channel
|
||||
return channel;
|
||||
}
|
||||
|
||||
fakePost = () => {
|
||||
var post = {};
|
||||
post.message = `Unit Test ${this.generateId()}`;
|
||||
return post;
|
||||
}
|
||||
|
||||
initBasic = (callback) => {
|
||||
this.basicc = this.createClient();
|
||||
|
||||
var d1 = jqd.Deferred();
|
||||
var email = this.fakeEmail();
|
||||
var outer = this; // eslint-disable-line consistent-this
|
||||
|
||||
this.basicClient().signupTeam(
|
||||
email,
|
||||
function(rsignUp) {
|
||||
var teamSignup = {};
|
||||
teamSignup.invites = [];
|
||||
teamSignup.data = decodeURIComponent(rsignUp.follow_link.split('&h=')[0].replace('/signup_team_complete/?d=', ''));
|
||||
teamSignup.hash = decodeURIComponent(rsignUp.follow_link.split('&h=')[1]);
|
||||
|
||||
teamSignup.user = outer.fakeUser();
|
||||
teamSignup.team = outer.fakeTeam();
|
||||
teamSignup.team.email = email;
|
||||
teamSignup.user.email = email;
|
||||
var password = teamSignup.user.password;
|
||||
|
||||
outer.basicClient().createTeamFromSignup(
|
||||
teamSignup,
|
||||
function(rteamSignup) {
|
||||
outer.basict = rteamSignup.team;
|
||||
outer.basicu = rteamSignup.user;
|
||||
outer.basicu.password = password;
|
||||
outer.basicClient().setTeamId(outer.basict.id);
|
||||
outer.basicClient().login(
|
||||
rteamSignup.user.email,
|
||||
password,
|
||||
null,
|
||||
function() {
|
||||
outer.basicClient().useHeaderToken();
|
||||
var channel = outer.fakeChannel();
|
||||
channel.team_id = outer.basicTeam().id;
|
||||
outer.basicClient().createChannel(
|
||||
channel,
|
||||
function(rchannel) {
|
||||
outer.basicch = rchannel;
|
||||
var post = outer.fakePost();
|
||||
post.channel_id = rchannel.id;
|
||||
|
||||
outer.basicClient().createPost(
|
||||
post,
|
||||
function(rpost) {
|
||||
outer.basicp = rpost;
|
||||
d1.resolve();
|
||||
},
|
||||
function(err) {
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
},
|
||||
function(err) {
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
|
||||
jqd.when(d1).done(() => {
|
||||
callback();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var TestHelper = new TestHelperClass();
|
||||
export default TestHelper;
|
||||
@@ -2,7 +2,7 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
import $ from 'jquery';
|
||||
import Client from './web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
import BrowserStore from 'stores/browser_store.jsx';
|
||||
|
||||
@@ -11,7 +11,7 @@ import UserStore from 'stores/user_store.jsx';
|
||||
import TeamStore from 'stores/team_store.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import * as GlobalActions from 'actions/global_actions.jsx';
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import React from 'react';
|
||||
import {FormattedMessage, FormattedHTMLMessage, FormattedDate} from 'react-intl';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from 'utils/web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
|
||||
export function isSystemMessage(post) {
|
||||
|
||||
@@ -11,7 +11,7 @@ import TeamStore from 'stores/team_store.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
var ActionTypes = Constants.ActionTypes;
|
||||
import * as AsyncClient from './async_client.jsx';
|
||||
import Client from './web_client.jsx';
|
||||
import Client from 'client/web_client.jsx';
|
||||
|
||||
import {browserHistory} from 'react-router/es6';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
@@ -43,24 +43,6 @@ var config = {
|
||||
cacheDirectory: DEV
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /node_modules\/mattermost\/client\.jsx?$/,
|
||||
loader: 'babel',
|
||||
query: {
|
||||
presets: ['react', 'es2015-webpack', 'stage-0'],
|
||||
plugins: ['transform-runtime'],
|
||||
cacheDirectory: DEV
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /node_modules\/mattermost\/websocket_client\.jsx?$/,
|
||||
loader: 'babel',
|
||||
query: {
|
||||
presets: ['react', 'es2015-webpack', 'stage-0'],
|
||||
plugins: ['transform-runtime'],
|
||||
cacheDirectory: DEV
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.json$/,
|
||||
loader: 'json'
|
||||
|
||||
Ссылка в новой задаче
Block a user