diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java index 3df5b15d70c..54bdb85c835 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlaskConnexionCodegen.java @@ -29,9 +29,9 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf public static final String DEFAULT_CONTROLLER = "defaultController"; public static final String SUPPORT_PYTHON2= "supportPython2"; - protected String apiVersion = "1.0.0"; protected int serverPort = 8080; - protected String projectName = "swagger-server"; + protected String packageName; + protected String packageVersion; protected String controllerPackage; protected String defaultController; @@ -91,7 +91,6 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf * Additional Properties. These values can be passed to the templates and * are available in models, apis, and supporting files */ - additionalProperties.put("apiVersion", apiVersion); additionalProperties.put("serverPort", serverPort); /* @@ -99,28 +98,19 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf * entire object tree available. If the input file has a suffix of `.mustache * it will be processed by the template engine. Otherwise, it will be copied */ + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("setup.mustache", "", "setup.py")); + supportingFiles.add(new SupportingFile("tox.mustache", "", "tox.ini")); + supportingFiles.add(new SupportingFile("test-requirements.mustache", "", "test-requirements.txt")); + supportingFiles.add(new SupportingFile("requirements.mustache", "", "requirements.txt")); + supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); + supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); + supportingFiles.add(new SupportingFile("travis.mustache", "", ".travis.yml")); - supportingFiles.add(new SupportingFile("swagger.mustache", - "swagger", - "swagger.yaml") - ); - supportingFiles.add(new SupportingFile("app.mustache", - "", - "app.py") - ); - supportingFiles.add(new SupportingFile("util.mustache", - "", - "util.py") - ); - supportingFiles.add(new SupportingFile("README.mustache", - "", - "README.md") - ); - supportingFiles.add(new SupportingFile("__init__controller.mustache", - "", - "__init__.py") - ); - + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "python package name (convention: snake_case).") + .defaultValue("swagger_server")); + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "python package version.") + .defaultValue("1.0.0")); cliOptions.add(new CliOption(CONTROLLER_PACKAGE, "controller package"). defaultValue("controllers")); cliOptions.add(new CliOption(DEFAULT_CONTROLLER, "default controller"). @@ -134,48 +124,47 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf super.processOpts(); //apiTemplateFiles.clear(); + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { + setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); + } else { + setPackageName("swagger_server"); + additionalProperties.put(CodegenConstants.PACKAGE_NAME, this.packageName); + } + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_VERSION)) { + setPackageVersion((String) additionalProperties.get(CodegenConstants.PACKAGE_VERSION)); + } else { + setPackageVersion("1.0.0"); + additionalProperties.put(CodegenConstants.PACKAGE_VERSION, this.packageVersion); + } if (additionalProperties.containsKey(CONTROLLER_PACKAGE)) { this.controllerPackage = additionalProperties.get(CONTROLLER_PACKAGE).toString(); - } - else { + } else { this.controllerPackage = "controllers"; additionalProperties.put(CONTROLLER_PACKAGE, this.controllerPackage); } - if (additionalProperties.containsKey(DEFAULT_CONTROLLER)) { this.defaultController = additionalProperties.get(DEFAULT_CONTROLLER).toString(); - } - else { + } else { this.defaultController = "default_controller"; additionalProperties.put(DEFAULT_CONTROLLER, this.defaultController); } - if (Boolean.TRUE.equals(additionalProperties.get(SUPPORT_PYTHON2))) { additionalProperties.put(SUPPORT_PYTHON2, Boolean.TRUE); typeMapping.put("long", "long"); } + supportingFiles.add(new SupportingFile("__init__.mustache", packageName, "__init__.py")); + supportingFiles.add(new SupportingFile("__main__.mustache", packageName, "__main__.py")); + supportingFiles.add(new SupportingFile("encoder.mustache", packageName, "encoder.py")); + supportingFiles.add(new SupportingFile("util.mustache", packageName, "util.py")); + supportingFiles.add(new SupportingFile("__init__.mustache", packageName + File.separatorChar + controllerPackage, "__init__.py")); + supportingFiles.add(new SupportingFile("__init__model.mustache", packageName + File.separatorChar + modelPackage, "__init__.py")); + supportingFiles.add(new SupportingFile("base_model_.mustache", packageName + File.separatorChar + modelPackage, "base_model_.py")); + supportingFiles.add(new SupportingFile("__init__test.mustache", packageName + File.separatorChar + testPackage, "__init__.py")); + supportingFiles.add(new SupportingFile("swagger.mustache", packageName + File.separatorChar + "swagger", "swagger.yaml")); - if(!new java.io.File(controllerPackage + File.separator + defaultController + ".py").exists()) { - supportingFiles.add(new SupportingFile("__init__controller.mustache", - controllerPackage, - "__init__.py") - ); - } - - supportingFiles.add(new SupportingFile("__init__model.mustache", - modelPackage, - "__init__.py") - ); - - supportingFiles.add(new SupportingFile("base_model_.mustache", - modelPackage, - "base_model_.py") - ); - - supportingFiles.add(new SupportingFile("__init__test.mustache", - testPackage, - "__init__.py") - ); + modelPackage = packageName + "." + modelPackage; + controllerPackage = packageName + "." + controllerPackage; + testPackage = packageName + "." + testPackage; } private static String dropDots(String str) { @@ -628,6 +617,14 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf p.example = example; } + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public void setPackageVersion(String packageVersion) { + this.packageVersion = packageVersion; + } + @Override public String escapeQuotationMark(String input) { diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache index 2d64ddbccf6..f8471d67b95 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/README.mustache @@ -7,16 +7,16 @@ is an example of building a swagger-enabled Flask server. This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. -To run the server, please execute the following: +To run the server, please execute the following from the root directory: ``` {{#supportPython2}} -sudo pip install -U connexion flask_testing typing # install Connexion from PyPI -python app.py +pip install -r requirements.txt +python -m {{packageName}} {{/supportPython2}} {{^supportPython2}} -sudo pip3 install -U connexion flask_testing # install Connexion from PyPI -python3 app.py +pip3 install -r requirements.txt +python3 -m {{packageName}} {{/supportPython2}} ``` @@ -32,3 +32,8 @@ Your Swagger definition lives here: http://localhost:{{serverPort}}{{contextPath}}/swagger.json ``` +To launch the integration tests, use tox: +``` +sudo pip install tox +tox +``` diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/__init__controller.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/__init__.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/flaskConnexion/__init__controller.mustache rename to modules/swagger-codegen/src/main/resources/flaskConnexion/__init__.mustache diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/__init__test.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/__init__test.mustache index 352991098f1..77b10c3a012 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/__init__test.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/__init__test.mustache @@ -1,5 +1,5 @@ from flask_testing import TestCase -from app import JSONEncoder +from ..encoder import JSONEncoder import connexion import logging diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/__main__.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/__main__.mustache new file mode 100644 index 00000000000..efbea8409c5 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/__main__.mustache @@ -0,0 +1,16 @@ +{{#supportPython2}} +#!/usr/bin/env python +{{/supportPython2}} +{{^supportPython2}} +#!/usr/bin/env python3 +{{/supportPython2}} + +import connexion +from .encoder import JSONEncoder + + +if __name__ == '__main__': + app = connexion.App(__name__, specification_dir='./swagger/') + app.app.json_encoder = JSONEncoder + app.add_api('swagger.yaml', arguments={'title': '{{appDescription}}'}) + app.run(port={{serverPort}}) diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/base_model_.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/base_model_.mustache index ba7b5b23dc1..6e3464c7019 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/base_model_.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/base_model_.mustache @@ -3,7 +3,7 @@ from pprint import pformat from typing import TypeVar, Type {{/supportPython2}} from six import iteritems -from util import deserialize_model +from ..util import deserialize_model {{^supportPython2}} T = TypeVar('T') diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/controller.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/controller.mustache index f762017284d..8fc01dbd7ac 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/controller.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/controller.mustache @@ -4,7 +4,7 @@ import connexion from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime {{#operations}} {{#operation}} diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/app.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/encoder.mustache similarity index 55% rename from modules/swagger-codegen/src/main/resources/flaskConnexion/app.mustache rename to modules/swagger-codegen/src/main/resources/flaskConnexion/encoder.mustache index 8428dedddaa..2f2c5416708 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/app.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/encoder.mustache @@ -1,11 +1,3 @@ -{{#supportPython2}} -#!/usr/bin/env python -{{/supportPython2}} -{{^supportPython2}} -#!/usr/bin/env python3 -{{/supportPython2}} - -import connexion from connexion.decorators import produces from six import iteritems from {{modelPackage}}.base_model_ import Model @@ -24,11 +16,4 @@ class JSONEncoder(produces.JSONEncoder): attr = o.attribute_map[attr] dikt[attr] = value return dikt - return produces.JSONEncoder.default(self, o) - - -if __name__ == '__main__': - app = connexion.App(__name__, specification_dir='./swagger/') - app.app.json_encoder = JSONEncoder - app.add_api('swagger.yaml', arguments={'title': '{{appDescription}}'}) - app.run(port={{serverPort}}) + return produces.JSONEncoder.default(self, o) \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/git_push.sh.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/git_push.sh.mustache new file mode 100755 index 00000000000..e153ce23ecf --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/git_push.sh.mustache @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="{{{gitUserId}}}" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="{{{gitRepoId}}}" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="{{{releaseNote}}}" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/gitignore.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/gitignore.mustache new file mode 100644 index 00000000000..a655050c263 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/gitignore.mustache @@ -0,0 +1,64 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/model.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/model.mustache index 36b0af83c69..9a0b4f89247 100644 --- a/modules/swagger-codegen/src/main/resources/flaskConnexion/model.mustache +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/model.mustache @@ -6,7 +6,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model {{#models}} diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/requirements.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/requirements.mustache new file mode 100644 index 00000000000..b36f4a65b57 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/requirements.mustache @@ -0,0 +1,6 @@ +connexion == 1.0.129 +python_dateutil == 2.6.0 +{{#supportPython2}} +typing == 3.5.2.2 +{{/supportPython2}} +setuptools >= 21.0.0 diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/setup.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/setup.mustache new file mode 100644 index 00000000000..dd2dea6aeed --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/setup.mustache @@ -0,0 +1,33 @@ +# coding: utf-8 + +import sys +from setuptools import setup, find_packages + +NAME = "{{packageName}}" +VERSION = "{{packageVersion}}" +{{#apiInfo}}{{#apis}}{{^hasMore}} +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = ["connexion"] + +setup( + name=NAME, + version=VERSION, + description="{{appName}}", + author_email="{{infoEmail}}", + url="{{packageUrl}}", + keywords=["Swagger", "{{appName}}"], + install_requires=REQUIRES, + packages=find_packages(), + package_data={'': ['swagger/swagger.yaml']}, + include_package_data=True, + long_description="""\ + {{appDescription}} + """ +) +{{/hasMore}}{{/apis}}{{/apiInfo}} diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/test-requirements.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/test-requirements.mustache new file mode 100644 index 00000000000..7f8d96e6b40 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/test-requirements.mustache @@ -0,0 +1,6 @@ +flask_testing==0.6.1 +coverage>=4.0.3 +nose>=1.3.7 +pluggy>=0.3.1 +py>=1.4.31 +randomize>=0.13 diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/tox.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/tox.mustache new file mode 100644 index 00000000000..5ad8fe6c031 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/tox.mustache @@ -0,0 +1,10 @@ +[tox] +envlist = {{#supportPython2}}py27, {{/supportPython2}}py35 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + nosetests \ + [] \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/flaskConnexion/travis.mustache b/modules/swagger-codegen/src/main/resources/flaskConnexion/travis.mustache new file mode 100644 index 00000000000..167826e42b4 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/flaskConnexion/travis.mustache @@ -0,0 +1,16 @@ +# ref: https://docs.travis-ci.com/user/languages/python +language: python +python: +{{#supportPython2}} + - "2.7" +{{/supportPython2}} + - "3.2" + - "3.3" + - "3.4" + - "3.5" + #- "3.5-dev" # 3.5 development branch + #- "nightly" # points to the latest development branch e.g. 3.6-dev +# command to install dependencies +install: "pip install -r requirements.txt" +# command to run tests +script: nosetests diff --git a/samples/server/petstore/flaskConnexion-python2/.gitignore b/samples/server/petstore/flaskConnexion-python2/.gitignore new file mode 100644 index 00000000000..a655050c263 --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/.gitignore @@ -0,0 +1,64 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/samples/server/petstore/flaskConnexion-python2/.travis.yml b/samples/server/petstore/flaskConnexion-python2/.travis.yml new file mode 100644 index 00000000000..86211e2d4a2 --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/.travis.yml @@ -0,0 +1,14 @@ +# ref: https://docs.travis-ci.com/user/languages/python +language: python +python: + - "2.7" + - "3.2" + - "3.3" + - "3.4" + - "3.5" + #- "3.5-dev" # 3.5 development branch + #- "nightly" # points to the latest development branch e.g. 3.6-dev +# command to install dependencies +install: "pip install -r requirements.txt" +# command to run tests +script: nosetests diff --git a/samples/server/petstore/flaskConnexion-python2/README.md b/samples/server/petstore/flaskConnexion-python2/README.md index b744fc39f9a..5352812b279 100644 --- a/samples/server/petstore/flaskConnexion-python2/README.md +++ b/samples/server/petstore/flaskConnexion-python2/README.md @@ -7,11 +7,11 @@ is an example of building a swagger-enabled Flask server. This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. -To run the server, please execute the following: +To run the server, please execute the following from the root directory: ``` -sudo pip install -U connexion flask_testing typing # install Connexion from PyPI -python app.py +pip install -r requirements.txt +python -m swagger_server ``` and open your browser to here: @@ -26,3 +26,8 @@ Your Swagger definition lives here: http://localhost:8080/v2/swagger.json ``` +To launch the integration tests, use tox: +``` +sudo pip install tox +tox +``` diff --git a/samples/server/petstore/flaskConnexion-python2/app.py b/samples/server/petstore/flaskConnexion-python2/app.py deleted file mode 100644 index 413af17ec79..00000000000 --- a/samples/server/petstore/flaskConnexion-python2/app.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import connexion -from connexion.decorators import produces -from six import iteritems -from models.base_model_ import Model - - -class JSONEncoder(produces.JSONEncoder): - include_nulls = False - - def default(self, o): - if isinstance(o, Model): - dikt = {} - for attr, _ in iteritems(o.swagger_types): - value = getattr(o, attr) - if value is None and not self.include_nulls: - continue - attr = o.attribute_map[attr] - dikt[attr] = value - return dikt - return produces.JSONEncoder.default(self, o) - - -if __name__ == '__main__': - app = connexion.App(__name__, specification_dir='./swagger/') - app.app.json_encoder = JSONEncoder - app.add_api('swagger.yaml', arguments={'title': 'This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.'}) - app.run(port=8080) diff --git a/samples/server/petstore/flaskConnexion-python2/git_push.sh b/samples/server/petstore/flaskConnexion-python2/git_push.sh new file mode 100644 index 00000000000..ed374619b13 --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/server/petstore/flaskConnexion-python2/requirements.txt b/samples/server/petstore/flaskConnexion-python2/requirements.txt new file mode 100644 index 00000000000..38bbf3e74cb --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/requirements.txt @@ -0,0 +1,4 @@ +connexion == 1.0.129 +python_dateutil == 2.6.0 +typing == 3.5.2.2 +setuptools >= 21.0.0 diff --git a/samples/server/petstore/flaskConnexion-python2/setup.py b/samples/server/petstore/flaskConnexion-python2/setup.py new file mode 100644 index 00000000000..7a1ce575d35 --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/setup.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +import sys +from setuptools import setup, find_packages + +NAME = "swagger_server" +VERSION = "1.0.0" + +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = ["connexion"] + +setup( + name=NAME, + version=VERSION, + description="Swagger Petstore", + author_email="apiteam@swagger.io", + url="", + keywords=["Swagger", "Swagger Petstore"], + install_requires=REQUIRES, + packages=find_packages(), + package_data={'': ['swagger/swagger.yaml']}, + include_package_data=True, + long_description="""\ + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + """ +) + diff --git a/samples/server/petstore/flaskConnexion-python2/__init__.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/__init__.py similarity index 100% rename from samples/server/petstore/flaskConnexion-python2/__init__.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/__init__.py diff --git a/samples/server/petstore/flaskConnexion-python2/swagger_server/__main__.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/__main__.py new file mode 100644 index 00000000000..a85a5591ece --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/__main__.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +import connexion +from .encoder import JSONEncoder + + +if __name__ == '__main__': + app = connexion.App(__name__, specification_dir='./swagger/') + app.app.json_encoder = JSONEncoder + app.add_api('swagger.yaml', arguments={'title': 'This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.'}) + app.run(port=8080) diff --git a/samples/server/petstore/flaskConnexion-python2/controllers/__init__.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/__init__.py similarity index 100% rename from samples/server/petstore/flaskConnexion-python2/controllers/__init__.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/__init__.py diff --git a/samples/server/petstore/flaskConnexion-python2/controllers/pet_controller.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/pet_controller.py similarity index 93% rename from samples/server/petstore/flaskConnexion-python2/controllers/pet_controller.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/pet_controller.py index 0a1be8f8863..5a999aae88f 100644 --- a/samples/server/petstore/flaskConnexion-python2/controllers/pet_controller.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/pet_controller.py @@ -1,10 +1,10 @@ import connexion -from models.api_response import ApiResponse -from models.pet import Pet +from swagger_server.models.api_response import ApiResponse +from swagger_server.models.pet import Pet from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime def add_pet(body): diff --git a/samples/server/petstore/flaskConnexion/controllers/store_controller.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/store_controller.py similarity index 92% rename from samples/server/petstore/flaskConnexion/controllers/store_controller.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/store_controller.py index 5373cbf5f71..0cdcaf445dc 100644 --- a/samples/server/petstore/flaskConnexion/controllers/store_controller.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/store_controller.py @@ -1,9 +1,9 @@ import connexion -from models.order import Order +from swagger_server.models.order import Order from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime def delete_order(orderId): diff --git a/samples/server/petstore/flaskConnexion-python2/controllers/user_controller.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/user_controller.py similarity index 95% rename from samples/server/petstore/flaskConnexion-python2/controllers/user_controller.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/user_controller.py index 0e406488a7f..9a88626c5b8 100644 --- a/samples/server/petstore/flaskConnexion-python2/controllers/user_controller.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/controllers/user_controller.py @@ -1,9 +1,9 @@ import connexion -from models.user import User +from swagger_server.models.user import User from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime def create_user(body): diff --git a/samples/server/petstore/flaskConnexion-python2/swagger_server/encoder.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/encoder.py new file mode 100644 index 00000000000..90988e4d3ea --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/encoder.py @@ -0,0 +1,19 @@ +from connexion.decorators import produces +from six import iteritems +from swagger_server.models.base_model_ import Model + + +class JSONEncoder(produces.JSONEncoder): + include_nulls = False + + def default(self, o): + if isinstance(o, Model): + dikt = {} + for attr, _ in iteritems(o.swagger_types): + value = getattr(o, attr) + if value is None and not self.include_nulls: + continue + attr = o.attribute_map[attr] + dikt[attr] = value + return dikt + return produces.JSONEncoder.default(self, o) \ No newline at end of file diff --git a/samples/server/petstore/flaskConnexion-python2/models/__init__.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/__init__.py similarity index 100% rename from samples/server/petstore/flaskConnexion-python2/models/__init__.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/__init__.py diff --git a/samples/server/petstore/flaskConnexion-python2/models/api_response.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/api_response.py similarity index 98% rename from samples/server/petstore/flaskConnexion-python2/models/api_response.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/api_response.py index aeeee173602..0868d2a1049 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/api_response.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/api_response.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class ApiResponse(Model): diff --git a/samples/server/petstore/flaskConnexion-python2/models/base_model_.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/base_model_.py similarity index 98% rename from samples/server/petstore/flaskConnexion-python2/models/base_model_.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/base_model_.py index 61136d40eff..30a7a03577a 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/base_model_.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/base_model_.py @@ -1,6 +1,6 @@ from pprint import pformat from six import iteritems -from util import deserialize_model +from ..util import deserialize_model class Model(object): diff --git a/samples/server/petstore/flaskConnexion-python2/models/category.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/category.py similarity index 98% rename from samples/server/petstore/flaskConnexion-python2/models/category.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/category.py index 82fd59fe337..440b19f7a82 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/category.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/category.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Category(Model): diff --git a/samples/server/petstore/flaskConnexion-python2/models/order.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/order.py similarity index 99% rename from samples/server/petstore/flaskConnexion-python2/models/order.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/order.py index 20c6fbe4102..a3cb599defa 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/order.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/order.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Order(Model): diff --git a/samples/server/petstore/flaskConnexion-python2/models/pet.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/pet.py similarity index 97% rename from samples/server/petstore/flaskConnexion-python2/models/pet.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/pet.py index 5bd32865fbd..074f5d2366c 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/pet.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/pet.py @@ -1,12 +1,12 @@ # coding: utf-8 from __future__ import absolute_import -from models.category import Category -from models.tag import Tag +from swagger_server.models.category import Category +from swagger_server.models.tag import Tag from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Pet(Model): diff --git a/samples/server/petstore/flaskConnexion-python2/models/tag.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/tag.py similarity index 97% rename from samples/server/petstore/flaskConnexion-python2/models/tag.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/tag.py index e397ac90255..6ff4243a1a4 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/tag.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/tag.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Tag(Model): diff --git a/samples/server/petstore/flaskConnexion-python2/models/user.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/user.py similarity index 99% rename from samples/server/petstore/flaskConnexion-python2/models/user.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/models/user.py index 134dfd7a892..715832d2f01 100644 --- a/samples/server/petstore/flaskConnexion-python2/models/user.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/models/user.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class User(Model): diff --git a/samples/server/petstore/flaskConnexion-python2/swagger/swagger.yaml b/samples/server/petstore/flaskConnexion-python2/swagger_server/swagger/swagger.yaml similarity index 91% rename from samples/server/petstore/flaskConnexion-python2/swagger/swagger.yaml rename to samples/server/petstore/flaskConnexion-python2/swagger_server/swagger/swagger.yaml index 3d22ab2d847..9d948b2124f 100644 --- a/samples/server/petstore/flaskConnexion-python2/swagger/swagger.yaml +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/swagger/swagger.yaml @@ -58,7 +58,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" put: tags: - "pet" @@ -89,7 +89,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/findByStatus: get: tags: @@ -127,7 +127,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/findByTags: get: tags: @@ -161,7 +161,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/{petId}: get: tags: @@ -190,7 +190,7 @@ paths: description: "Pet not found" security: - api_key: [] - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" post: tags: - "pet" @@ -226,7 +226,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" delete: tags: - "pet" @@ -254,7 +254,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/{petId}/uploadImage: post: tags: @@ -292,7 +292,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /store/inventory: get: tags: @@ -313,7 +313,7 @@ paths: format: "int32" security: - api_key: [] - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" /store/order: post: tags: @@ -338,7 +338,7 @@ paths: $ref: "#/definitions/Order" 400: description: "Invalid Order" - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" /store/order/{orderId}: get: tags: @@ -368,7 +368,7 @@ paths: description: "Invalid ID supplied" 404: description: "Order not found" - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" delete: tags: - "store" @@ -391,7 +391,7 @@ paths: description: "Invalid ID supplied" 404: description: "Order not found" - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" /user: post: tags: @@ -412,7 +412,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/createWithArray: post: tags: @@ -435,7 +435,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/createWithList: post: tags: @@ -458,7 +458,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/login: get: tags: @@ -496,7 +496,7 @@ paths: description: "date in UTC when toekn expires" 400: description: "Invalid username/password supplied" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/logout: get: tags: @@ -511,7 +511,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/{username}: get: tags: @@ -537,7 +537,7 @@ paths: description: "Invalid username supplied" 404: description: "User not found" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" put: tags: - "user" @@ -564,7 +564,7 @@ paths: description: "Invalid user supplied" 404: description: "User not found" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" delete: tags: - "user" @@ -585,7 +585,7 @@ paths: description: "Invalid username supplied" 404: description: "User not found" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" securityDefinitions: petstore_auth: type: "oauth2" diff --git a/samples/server/petstore/flaskConnexion-python2/test/__init__.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/__init__.py similarity index 91% rename from samples/server/petstore/flaskConnexion-python2/test/__init__.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/test/__init__.py index 352991098f1..77b10c3a012 100644 --- a/samples/server/petstore/flaskConnexion-python2/test/__init__.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/__init__.py @@ -1,5 +1,5 @@ from flask_testing import TestCase -from app import JSONEncoder +from ..encoder import JSONEncoder import connexion import logging diff --git a/samples/server/petstore/flaskConnexion/test/test_pet_controller.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_pet_controller.py similarity index 97% rename from samples/server/petstore/flaskConnexion/test/test_pet_controller.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_pet_controller.py index 31e3b3fcb6b..b99269a991a 100644 --- a/samples/server/petstore/flaskConnexion/test/test_pet_controller.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_pet_controller.py @@ -2,8 +2,8 @@ from __future__ import absolute_import -from models.api_response import ApiResponse -from models.pet import Pet +from swagger_server.models.api_response import ApiResponse +from swagger_server.models.pet import Pet from . import BaseTestCase from six import BytesIO from flask import json diff --git a/samples/server/petstore/flaskConnexion/test/test_store_controller.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_store_controller.py similarity index 97% rename from samples/server/petstore/flaskConnexion/test/test_store_controller.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_store_controller.py index 33a007ae195..0a5360b4e25 100644 --- a/samples/server/petstore/flaskConnexion/test/test_store_controller.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_store_controller.py @@ -2,7 +2,7 @@ from __future__ import absolute_import -from models.order import Order +from swagger_server.models.order import Order from . import BaseTestCase from six import BytesIO from flask import json diff --git a/samples/server/petstore/flaskConnexion-python2/test/test_user_controller.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_user_controller.py similarity index 98% rename from samples/server/petstore/flaskConnexion-python2/test/test_user_controller.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_user_controller.py index 52dacf3df32..867de3c0150 100644 --- a/samples/server/petstore/flaskConnexion-python2/test/test_user_controller.py +++ b/samples/server/petstore/flaskConnexion-python2/swagger_server/test/test_user_controller.py @@ -2,7 +2,7 @@ from __future__ import absolute_import -from models.user import User +from swagger_server.models.user import User from . import BaseTestCase from six import BytesIO from flask import json diff --git a/samples/server/petstore/flaskConnexion-python2/util.py b/samples/server/petstore/flaskConnexion-python2/swagger_server/util.py similarity index 100% rename from samples/server/petstore/flaskConnexion-python2/util.py rename to samples/server/petstore/flaskConnexion-python2/swagger_server/util.py diff --git a/samples/server/petstore/flaskConnexion-python2/test-requirements.txt b/samples/server/petstore/flaskConnexion-python2/test-requirements.txt new file mode 100644 index 00000000000..7f8d96e6b40 --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/test-requirements.txt @@ -0,0 +1,6 @@ +flask_testing==0.6.1 +coverage>=4.0.3 +nose>=1.3.7 +pluggy>=0.3.1 +py>=1.4.31 +randomize>=0.13 diff --git a/samples/server/petstore/flaskConnexion-python2/tox.ini b/samples/server/petstore/flaskConnexion-python2/tox.ini new file mode 100644 index 00000000000..fe94589593a --- /dev/null +++ b/samples/server/petstore/flaskConnexion-python2/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py27, py35 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + nosetests \ + [] \ No newline at end of file diff --git a/samples/server/petstore/flaskConnexion/.gitignore b/samples/server/petstore/flaskConnexion/.gitignore new file mode 100644 index 00000000000..a655050c263 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/.gitignore @@ -0,0 +1,64 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/samples/server/petstore/flaskConnexion/.travis.yml b/samples/server/petstore/flaskConnexion/.travis.yml new file mode 100644 index 00000000000..dd6c4450aa9 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/.travis.yml @@ -0,0 +1,13 @@ +# ref: https://docs.travis-ci.com/user/languages/python +language: python +python: + - "3.2" + - "3.3" + - "3.4" + - "3.5" + #- "3.5-dev" # 3.5 development branch + #- "nightly" # points to the latest development branch e.g. 3.6-dev +# command to install dependencies +install: "pip install -r requirements.txt" +# command to run tests +script: nosetests diff --git a/samples/server/petstore/flaskConnexion/README.md b/samples/server/petstore/flaskConnexion/README.md index 0ba312c48ac..91b687abcf4 100644 --- a/samples/server/petstore/flaskConnexion/README.md +++ b/samples/server/petstore/flaskConnexion/README.md @@ -7,11 +7,11 @@ is an example of building a swagger-enabled Flask server. This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. -To run the server, please execute the following: +To run the server, please execute the following from the root directory: ``` -sudo pip3 install -U connexion flask_testing # install Connexion from PyPI -python3 app.py +pip3 install -r requirements.txt +python3 -m swagger_server ``` and open your browser to here: @@ -26,3 +26,8 @@ Your Swagger definition lives here: http://localhost:8080/v2/swagger.json ``` +To launch the integration tests, use tox: +``` +sudo pip install tox +tox +``` diff --git a/samples/server/petstore/flaskConnexion/app.py b/samples/server/petstore/flaskConnexion/app.py deleted file mode 100644 index c5342f15859..00000000000 --- a/samples/server/petstore/flaskConnexion/app.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python3 - -import connexion -from connexion.decorators import produces -from six import iteritems -from models.base_model_ import Model - - -class JSONEncoder(produces.JSONEncoder): - include_nulls = False - - def default(self, o): - if isinstance(o, Model): - dikt = {} - for attr, _ in iteritems(o.swagger_types): - value = getattr(o, attr) - if value is None and not self.include_nulls: - continue - attr = o.attribute_map[attr] - dikt[attr] = value - return dikt - return produces.JSONEncoder.default(self, o) - - -if __name__ == '__main__': - app = connexion.App(__name__, specification_dir='./swagger/') - app.app.json_encoder = JSONEncoder - app.add_api('swagger.yaml', arguments={'title': 'This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.'}) - app.run(port=8080) diff --git a/samples/server/petstore/flaskConnexion/git_push.sh b/samples/server/petstore/flaskConnexion/git_push.sh new file mode 100644 index 00000000000..ed374619b13 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/server/petstore/flaskConnexion/requirements.txt b/samples/server/petstore/flaskConnexion/requirements.txt new file mode 100644 index 00000000000..995dc64d655 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/requirements.txt @@ -0,0 +1,3 @@ +connexion == 1.0.129 +python_dateutil == 2.6.0 +setuptools >= 21.0.0 diff --git a/samples/server/petstore/flaskConnexion/setup.py b/samples/server/petstore/flaskConnexion/setup.py new file mode 100644 index 00000000000..7a1ce575d35 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/setup.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +import sys +from setuptools import setup, find_packages + +NAME = "swagger_server" +VERSION = "1.0.0" + +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = ["connexion"] + +setup( + name=NAME, + version=VERSION, + description="Swagger Petstore", + author_email="apiteam@swagger.io", + url="", + keywords=["Swagger", "Swagger Petstore"], + install_requires=REQUIRES, + packages=find_packages(), + package_data={'': ['swagger/swagger.yaml']}, + include_package_data=True, + long_description="""\ + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + """ +) + diff --git a/samples/server/petstore/flaskConnexion/__init__.py b/samples/server/petstore/flaskConnexion/swagger_server/__init__.py similarity index 100% rename from samples/server/petstore/flaskConnexion/__init__.py rename to samples/server/petstore/flaskConnexion/swagger_server/__init__.py diff --git a/samples/server/petstore/flaskConnexion/swagger_server/__main__.py b/samples/server/petstore/flaskConnexion/swagger_server/__main__.py new file mode 100644 index 00000000000..b0d689211d2 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/swagger_server/__main__.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import connexion +from .encoder import JSONEncoder + + +if __name__ == '__main__': + app = connexion.App(__name__, specification_dir='./swagger/') + app.app.json_encoder = JSONEncoder + app.add_api('swagger.yaml', arguments={'title': 'This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.'}) + app.run(port=8080) diff --git a/samples/server/petstore/flaskConnexion/controllers/__init__.py b/samples/server/petstore/flaskConnexion/swagger_server/controllers/__init__.py similarity index 100% rename from samples/server/petstore/flaskConnexion/controllers/__init__.py rename to samples/server/petstore/flaskConnexion/swagger_server/controllers/__init__.py diff --git a/samples/server/petstore/flaskConnexion/controllers/pet_controller.py b/samples/server/petstore/flaskConnexion/swagger_server/controllers/pet_controller.py similarity index 93% rename from samples/server/petstore/flaskConnexion/controllers/pet_controller.py rename to samples/server/petstore/flaskConnexion/swagger_server/controllers/pet_controller.py index 0a1be8f8863..5a999aae88f 100644 --- a/samples/server/petstore/flaskConnexion/controllers/pet_controller.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/controllers/pet_controller.py @@ -1,10 +1,10 @@ import connexion -from models.api_response import ApiResponse -from models.pet import Pet +from swagger_server.models.api_response import ApiResponse +from swagger_server.models.pet import Pet from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime def add_pet(body): diff --git a/samples/server/petstore/flaskConnexion-python2/controllers/store_controller.py b/samples/server/petstore/flaskConnexion/swagger_server/controllers/store_controller.py similarity index 92% rename from samples/server/petstore/flaskConnexion-python2/controllers/store_controller.py rename to samples/server/petstore/flaskConnexion/swagger_server/controllers/store_controller.py index 5373cbf5f71..0cdcaf445dc 100644 --- a/samples/server/petstore/flaskConnexion-python2/controllers/store_controller.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/controllers/store_controller.py @@ -1,9 +1,9 @@ import connexion -from models.order import Order +from swagger_server.models.order import Order from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime def delete_order(orderId): diff --git a/samples/server/petstore/flaskConnexion/controllers/user_controller.py b/samples/server/petstore/flaskConnexion/swagger_server/controllers/user_controller.py similarity index 95% rename from samples/server/petstore/flaskConnexion/controllers/user_controller.py rename to samples/server/petstore/flaskConnexion/swagger_server/controllers/user_controller.py index 0e406488a7f..9a88626c5b8 100644 --- a/samples/server/petstore/flaskConnexion/controllers/user_controller.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/controllers/user_controller.py @@ -1,9 +1,9 @@ import connexion -from models.user import User +from swagger_server.models.user import User from datetime import date, datetime from typing import List, Dict from six import iteritems -from util import deserialize_date, deserialize_datetime +from ..util import deserialize_date, deserialize_datetime def create_user(body): diff --git a/samples/server/petstore/flaskConnexion/swagger_server/encoder.py b/samples/server/petstore/flaskConnexion/swagger_server/encoder.py new file mode 100644 index 00000000000..90988e4d3ea --- /dev/null +++ b/samples/server/petstore/flaskConnexion/swagger_server/encoder.py @@ -0,0 +1,19 @@ +from connexion.decorators import produces +from six import iteritems +from swagger_server.models.base_model_ import Model + + +class JSONEncoder(produces.JSONEncoder): + include_nulls = False + + def default(self, o): + if isinstance(o, Model): + dikt = {} + for attr, _ in iteritems(o.swagger_types): + value = getattr(o, attr) + if value is None and not self.include_nulls: + continue + attr = o.attribute_map[attr] + dikt[attr] = value + return dikt + return produces.JSONEncoder.default(self, o) \ No newline at end of file diff --git a/samples/server/petstore/flaskConnexion/models/__init__.py b/samples/server/petstore/flaskConnexion/swagger_server/models/__init__.py similarity index 100% rename from samples/server/petstore/flaskConnexion/models/__init__.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/__init__.py diff --git a/samples/server/petstore/flaskConnexion/models/api_response.py b/samples/server/petstore/flaskConnexion/swagger_server/models/api_response.py similarity index 98% rename from samples/server/petstore/flaskConnexion/models/api_response.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/api_response.py index 607a47e4dd4..b49738579d6 100644 --- a/samples/server/petstore/flaskConnexion/models/api_response.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/api_response.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class ApiResponse(Model): diff --git a/samples/server/petstore/flaskConnexion/models/base_model_.py b/samples/server/petstore/flaskConnexion/swagger_server/models/base_model_.py similarity index 98% rename from samples/server/petstore/flaskConnexion/models/base_model_.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/base_model_.py index d10efa4f2c6..5202b30fb63 100644 --- a/samples/server/petstore/flaskConnexion/models/base_model_.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/base_model_.py @@ -1,7 +1,7 @@ from pprint import pformat from typing import TypeVar, Type from six import iteritems -from util import deserialize_model +from ..util import deserialize_model T = TypeVar('T') diff --git a/samples/server/petstore/flaskConnexion/models/category.py b/samples/server/petstore/flaskConnexion/swagger_server/models/category.py similarity index 98% rename from samples/server/petstore/flaskConnexion/models/category.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/category.py index e36ffb3bffa..ba381b5792f 100644 --- a/samples/server/petstore/flaskConnexion/models/category.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/category.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Category(Model): diff --git a/samples/server/petstore/flaskConnexion/models/order.py b/samples/server/petstore/flaskConnexion/swagger_server/models/order.py similarity index 99% rename from samples/server/petstore/flaskConnexion/models/order.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/order.py index 1b4ad9f849d..772769084d5 100644 --- a/samples/server/petstore/flaskConnexion/models/order.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/order.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Order(Model): diff --git a/samples/server/petstore/flaskConnexion/models/pet.py b/samples/server/petstore/flaskConnexion/swagger_server/models/pet.py similarity index 97% rename from samples/server/petstore/flaskConnexion/models/pet.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/pet.py index 11ad67f7649..6594f0f90d2 100644 --- a/samples/server/petstore/flaskConnexion/models/pet.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/pet.py @@ -1,12 +1,12 @@ # coding: utf-8 from __future__ import absolute_import -from models.category import Category -from models.tag import Tag +from swagger_server.models.category import Category +from swagger_server.models.tag import Tag from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Pet(Model): diff --git a/samples/server/petstore/flaskConnexion/models/tag.py b/samples/server/petstore/flaskConnexion/swagger_server/models/tag.py similarity index 97% rename from samples/server/petstore/flaskConnexion/models/tag.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/tag.py index 41f1b024fe8..635ab029eea 100644 --- a/samples/server/petstore/flaskConnexion/models/tag.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/tag.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class Tag(Model): diff --git a/samples/server/petstore/flaskConnexion/models/user.py b/samples/server/petstore/flaskConnexion/swagger_server/models/user.py similarity index 99% rename from samples/server/petstore/flaskConnexion/models/user.py rename to samples/server/petstore/flaskConnexion/swagger_server/models/user.py index 77fdaa7a252..08ebe6cf9db 100644 --- a/samples/server/petstore/flaskConnexion/models/user.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/models/user.py @@ -4,7 +4,7 @@ from __future__ import absolute_import from .base_model_ import Model from datetime import date, datetime from typing import List, Dict -from util import deserialize_model +from ..util import deserialize_model class User(Model): diff --git a/samples/server/petstore/flaskConnexion/swagger/swagger.yaml b/samples/server/petstore/flaskConnexion/swagger_server/swagger/swagger.yaml similarity index 91% rename from samples/server/petstore/flaskConnexion/swagger/swagger.yaml rename to samples/server/petstore/flaskConnexion/swagger_server/swagger/swagger.yaml index 3d22ab2d847..9d948b2124f 100644 --- a/samples/server/petstore/flaskConnexion/swagger/swagger.yaml +++ b/samples/server/petstore/flaskConnexion/swagger_server/swagger/swagger.yaml @@ -58,7 +58,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" put: tags: - "pet" @@ -89,7 +89,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/findByStatus: get: tags: @@ -127,7 +127,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/findByTags: get: tags: @@ -161,7 +161,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/{petId}: get: tags: @@ -190,7 +190,7 @@ paths: description: "Pet not found" security: - api_key: [] - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" post: tags: - "pet" @@ -226,7 +226,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" delete: tags: - "pet" @@ -254,7 +254,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /pet/{petId}/uploadImage: post: tags: @@ -292,7 +292,7 @@ paths: - petstore_auth: - "write:pets" - "read:pets" - x-swagger-router-controller: "controllers.pet_controller" + x-swagger-router-controller: "swagger_server.controllers.pet_controller" /store/inventory: get: tags: @@ -313,7 +313,7 @@ paths: format: "int32" security: - api_key: [] - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" /store/order: post: tags: @@ -338,7 +338,7 @@ paths: $ref: "#/definitions/Order" 400: description: "Invalid Order" - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" /store/order/{orderId}: get: tags: @@ -368,7 +368,7 @@ paths: description: "Invalid ID supplied" 404: description: "Order not found" - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" delete: tags: - "store" @@ -391,7 +391,7 @@ paths: description: "Invalid ID supplied" 404: description: "Order not found" - x-swagger-router-controller: "controllers.store_controller" + x-swagger-router-controller: "swagger_server.controllers.store_controller" /user: post: tags: @@ -412,7 +412,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/createWithArray: post: tags: @@ -435,7 +435,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/createWithList: post: tags: @@ -458,7 +458,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/login: get: tags: @@ -496,7 +496,7 @@ paths: description: "date in UTC when toekn expires" 400: description: "Invalid username/password supplied" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/logout: get: tags: @@ -511,7 +511,7 @@ paths: responses: default: description: "successful operation" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" /user/{username}: get: tags: @@ -537,7 +537,7 @@ paths: description: "Invalid username supplied" 404: description: "User not found" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" put: tags: - "user" @@ -564,7 +564,7 @@ paths: description: "Invalid user supplied" 404: description: "User not found" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" delete: tags: - "user" @@ -585,7 +585,7 @@ paths: description: "Invalid username supplied" 404: description: "User not found" - x-swagger-router-controller: "controllers.user_controller" + x-swagger-router-controller: "swagger_server.controllers.user_controller" securityDefinitions: petstore_auth: type: "oauth2" diff --git a/samples/server/petstore/flaskConnexion/test/__init__.py b/samples/server/petstore/flaskConnexion/swagger_server/test/__init__.py similarity index 91% rename from samples/server/petstore/flaskConnexion/test/__init__.py rename to samples/server/petstore/flaskConnexion/swagger_server/test/__init__.py index 352991098f1..77b10c3a012 100644 --- a/samples/server/petstore/flaskConnexion/test/__init__.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/test/__init__.py @@ -1,5 +1,5 @@ from flask_testing import TestCase -from app import JSONEncoder +from ..encoder import JSONEncoder import connexion import logging diff --git a/samples/server/petstore/flaskConnexion-python2/test/test_pet_controller.py b/samples/server/petstore/flaskConnexion/swagger_server/test/test_pet_controller.py similarity index 97% rename from samples/server/petstore/flaskConnexion-python2/test/test_pet_controller.py rename to samples/server/petstore/flaskConnexion/swagger_server/test/test_pet_controller.py index 31e3b3fcb6b..b99269a991a 100644 --- a/samples/server/petstore/flaskConnexion-python2/test/test_pet_controller.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/test/test_pet_controller.py @@ -2,8 +2,8 @@ from __future__ import absolute_import -from models.api_response import ApiResponse -from models.pet import Pet +from swagger_server.models.api_response import ApiResponse +from swagger_server.models.pet import Pet from . import BaseTestCase from six import BytesIO from flask import json diff --git a/samples/server/petstore/flaskConnexion-python2/test/test_store_controller.py b/samples/server/petstore/flaskConnexion/swagger_server/test/test_store_controller.py similarity index 97% rename from samples/server/petstore/flaskConnexion-python2/test/test_store_controller.py rename to samples/server/petstore/flaskConnexion/swagger_server/test/test_store_controller.py index 33a007ae195..0a5360b4e25 100644 --- a/samples/server/petstore/flaskConnexion-python2/test/test_store_controller.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/test/test_store_controller.py @@ -2,7 +2,7 @@ from __future__ import absolute_import -from models.order import Order +from swagger_server.models.order import Order from . import BaseTestCase from six import BytesIO from flask import json diff --git a/samples/server/petstore/flaskConnexion/test/test_user_controller.py b/samples/server/petstore/flaskConnexion/swagger_server/test/test_user_controller.py similarity index 98% rename from samples/server/petstore/flaskConnexion/test/test_user_controller.py rename to samples/server/petstore/flaskConnexion/swagger_server/test/test_user_controller.py index 52dacf3df32..867de3c0150 100644 --- a/samples/server/petstore/flaskConnexion/test/test_user_controller.py +++ b/samples/server/petstore/flaskConnexion/swagger_server/test/test_user_controller.py @@ -2,7 +2,7 @@ from __future__ import absolute_import -from models.user import User +from swagger_server.models.user import User from . import BaseTestCase from six import BytesIO from flask import json diff --git a/samples/server/petstore/flaskConnexion/util.py b/samples/server/petstore/flaskConnexion/swagger_server/util.py similarity index 100% rename from samples/server/petstore/flaskConnexion/util.py rename to samples/server/petstore/flaskConnexion/swagger_server/util.py diff --git a/samples/server/petstore/flaskConnexion/test-requirements.txt b/samples/server/petstore/flaskConnexion/test-requirements.txt new file mode 100644 index 00000000000..7f8d96e6b40 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/test-requirements.txt @@ -0,0 +1,6 @@ +flask_testing==0.6.1 +coverage>=4.0.3 +nose>=1.3.7 +pluggy>=0.3.1 +py>=1.4.31 +randomize>=0.13 diff --git a/samples/server/petstore/flaskConnexion/tox.ini b/samples/server/petstore/flaskConnexion/tox.ini new file mode 100644 index 00000000000..b696749b3a1 --- /dev/null +++ b/samples/server/petstore/flaskConnexion/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py35 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + nosetests \ + [] \ No newline at end of file