Index: tests/crowdin_mock_api.py
===================================================================
--- a/tests/crowdin_mock_api.py
+++ b/tests/crowdin_mock_api.py
@@ -1,97 +1,33 @@
+import os
+
 from flask import Flask, send_from_directory, jsonify, request
 
-app = Flask(__name__)
-app.request_log = []
+app = Flask('mock_api')
 
 
 @app.before_request
 def log_request_info():
-    log = (request.url, str(request.get_data()))
-    app.request_log.append(log)
+    app.request_log.append((request.url, str(request.get_data())))
 
 
 @app.route('/api/project/test/info', methods=['GET'])
 def info():
-    return jsonify(
-        {
-            'languages': [
-                {
-                    'name': 'German',
-                    'code': 'de',
-                    'can_translate': 1,
-                    'can_approve': 1,
+    return jsonify(app.config['info'])
 
-                },
-                {
-                    'name': 'English',
-                    'code': 'en',
-                    'can_translate': 1,
-                    'can_approve': 1,
-
-                },
 
-            ],
-            'files': [
-                {
-                    'node_type': 'directory',
-                    'name': 'en',
-                    'files': [
-                        {
-                            'node_type': 'file',
-                            'name': 'translate.json',
-                            'created': '2016-09-26 08:30:07',
-                            'last_updated': '2016-09-26 08:30:08',
-                            'last_accessed': None,
-                            'last_revision': '1'
-                        },
-                    ]
-                },
-                {
-                    'node_type': 'directory',
-                    'name': 'de',
-                    'files': [
-                        {
-                            'node_type': 'file',
-                            'name': 'translate.json',
-                            'created': '2016-09-26 08:30:07',
-                            'last_updated': '2016-09-26 08:30:08',
-                            'last_accessed': None,
-                            'last_revision': '1'
-                        }
-                    ]
-                }
-            ]
-        }
-    )
+@app.route('/api/project/test/edit-project', methods=['POST'])
+def edit():
+    return jsonify()
 
 
 @app.route('/api/project/test/supported-languages', methods=['GET'])
 def supported_langs():
-    return jsonify(
-        [
-            {
-                'name': 'German',
-                'crowdin_code': 'de',
-                'editor_code': 'de',
-                'iso_639_1': 'de',
-                'iso_639_3': 'deu',
-                'locale': 'de-DE'
-            },
-            {
-                'name': 'English',
-                'crowdin_code': 'en',
-                'editor_code': 'en',
-                'iso_639_1': 'en',
-                'iso_639_3': 'eng',
-                'locale': 'en-US'
-            },
-        ]
-    )
+    return jsonify(app.config['languages'])
 
 
 @app.route('/api/project/test/add-file', methods=['POST'])
 def add_file():
     app.string = request.get_data()
     return jsonify()
 
 
@@ -113,8 +49,36 @@
 @app.route('/api/project/test/export', methods=['GET'])
 def export():
     return jsonify({'success': {'status': 'skipped'}})
 
 
 @app.route('/api/project/test/download/all.zip', methods=['GET'])
 def get_zip():
     return send_from_directory('', 'all.zip')
+
+
+def mockapi(config):
+    app.request_log = []
+    app.config['info'] = config.info
+    app.config['languages'] = config.languages
+    return app
+
+
+class CrowdinConfig:
+    def __init__(self, locales_root):
+        self.info = {'files': [], 'languages': []}
+        self.languages = []
+        self.load(locales_root)
+
+    def load(self, filepath):
+        for root, locales, files in os.walk(filepath):
+            for locale in locales:
+                localenode = {'name': locale, 'node_type': 'directory',
+                              'files': []}
+                self.info['languages'].append({'code': locale,
+                                               'can_approve': 1,
+                                               'can_translate': 1})
+                self.languages.append({'crowdin_code': locale})
+                for translations in os.listdir(os.path.join(root, locale)):
+                    filenode = {'name': translations, 'node_type': 'file'}
+                    localenode['files'].append(filenode)
+            self.info['files'].append(localenode)
