Esempio n. 1
0
    def test_parameter(self):
        """ Parameter -> Parameter
        """
        # body
        o = self.app.root.paths['/api/pet/{petId}'].patch
        p = [p for p in o.parameters if getattr(p, 'in') == 'body'][0]
        self.assertEqual(getattr(p, 'in'), 'body')
        self.assertEqual(p.required, True)
        self.assertEqual(getattr(p.schema, '$ref'), _pf('/definitions/pet!##!Pet'))

        # form
        o = self.app.root.paths['/api/pet/uploadImage'].post
        p = [p for p in o.parameters if getattr(p, 'in') == 'formData' and p.type == 'string'][0]
        self.assertEqual(p.name, 'additionalMetadata')
        self.assertEqual(p.required, False)

        # file
        o = self.app.root.paths['/api/pet/uploadImage'].post
        p = [p for p in o.parameters if getattr(p, 'in') == 'formData' and p.type == 'file'][0]
        self.assertEqual(p.name, 'file')
        self.assertEqual(p.required, False)

        # non-body can't have $ref
        try:
            App._create_(get_test_data_folder(
                version='1.2',
                which='upgrade_parameter'
            ))
        except errs.SchemaError as e:
            self.failUnlessEqual(e.args, ("Can't have $ref in non-body Parameters",))
        else:
            self.fail('SchemaError not raised')
Esempio n. 2
0
    def __init__(self,
                 creds=elicit_creds.ElicitCreds(),
                 api_url=PRODUCTION_URL,
                 send_opt=dict(verify=True)):
        print("Initialize Elicit client library for %s options:" % api_url)
        print(send_opt)

        if ((not send_opt['verify']) and api_url.startswith("https")):
            print('WARNING: not checking SSL')
            dont_check_ssl()

        self.api_url = api_url
        self.swagger_url = self.api_url + '/apidocs/v1/swagger.json'
        self.app = App._create_(self.swagger_url)
        self.auth = Security(self.app)
        self.creds = creds

        # init swagger client
        self.client = Client(
            self.auth, send_opt=send_opt
        )  # HACK to work around self-signed SSL certs used in development
        if (self.app.root.host != self.api_url):
            print(
                'WARNING: API URL from swagger doesn\'t match this configuration: [%s] vs [%s]'
                % (self.api_url, self.app.root.host))
Esempio n. 3
0
    def test_uploadImages(self):
        """ test for uploading multiple files """
        global received_files

        app = App._create_(
            get_test_data_folder(version='2.0',
                                 which=os.path.join('io', 'files')))
        resp = yield self.client.request(app.op['upload_images'](images=[
            dict(data=six.BytesIO(six.b('test image 1')), filename='_1.k'),
            dict(data=six.BytesIO(six.b('test image 2')), filename='_2.k'),
            dict(data=six.BytesIO(six.b('test image 3')), filename='_3.k'),
        ]),
                                         opt=dict(url_netloc='localhost:' +
                                                  str(self.get_http_port())))

        self.assertEqual(
            received_files[0], {
                'body': six.b('test image 1'),
                'content_type': 'application/unknown',
                'filename': u'_1.k'
            })
        self.assertEqual(
            received_files[1], {
                'body': six.b('test image 2'),
                'content_type': 'application/unknown',
                'filename': u'_2.k'
            })
        self.assertEqual(
            received_files[2], {
                'body': six.b('test image 3'),
                'content_type': 'application/unknown',
                'filename': u'_3.k'
            })
Esempio n. 4
0
 def init(self):
     self.server = self["server"]
     self.port = self["port"]
     self.api = self["api"]
     openapi_spec = 'http://{}:{}/{}/swagger.json'.format(
         self.server, str(self.port), self.api)
     self.app = App._create_(openapi_spec)
     self.client = Client()
     StratusClient.init(self)
Esempio n. 5
0
    def __init__(self, url, *auths):
        app = App._create_(url)
        auth = Security(app)
        for t, cred in auths:
            auth.update_with(t, cred)

        client = Client(auth)
        self.app, self.client = app, client

        self.client._Client__s.hooks['response'] = logHttp
Esempio n. 6
0
    def test_item(self):
        """ make sure to raise exception for invalid item
        """
        try:
            App._create_(get_test_data_folder(
                version='1.2',
                which=os.path.join('upgrade_items', 'with_ref')
            ))
        except errs.SchemaError as e:
            self.failUnlessEqual(e.args, ('Can\'t have $ref for Items',))
        else:
            self.fail('SchemaError not raised')

        try:
            App._create_(get_test_data_folder(
                version='1.2',
                which=os.path.join('upgrade_items', 'invalid_primitive')
            ))
        except errs.SchemaError as e:
            self.failUnlessEqual(e.args, ('Non primitive type is not allowed for Items',))
        else:
            self.fail('SchemaError not raised')
Esempio n. 7
0
    def test_parameter(self):
        """ Parameter -> Parameter
        """
        # body
        o = self.app.root.paths['/api/pet/{petId}'].patch
        p = [p for p in o.parameters if getattr(p, 'in') == 'body'][0]
        self.assertEqual(getattr(p, 'in'), 'body')
        self.assertEqual(p.required, True)
        self.assertEqual(getattr(p.schema, '$ref'),
                         _pf('/definitions/pet!##!Pet'))

        # form
        o = self.app.root.paths['/api/pet/uploadImage'].post
        p = [
            p for p in o.parameters
            if getattr(p, 'in') == 'formData' and p.type == 'string'
        ][0]
        self.assertEqual(p.name, 'additionalMetadata')
        self.assertEqual(p.required, False)

        # file
        o = self.app.root.paths['/api/pet/uploadImage'].post
        p = [
            p for p in o.parameters
            if getattr(p, 'in') == 'formData' and p.type == 'file'
        ][0]
        self.assertEqual(p.name, 'file')
        self.assertEqual(p.required, False)

        # non-body can't have $ref
        try:
            App._create_(
                get_test_data_folder(version='1.2', which='upgrade_parameter'))
        except errs.SchemaError as e:
            self.failUnlessEqual(e.args,
                                 ("Can't have $ref in non-body Parameters", ))
        else:
            self.fail('SchemaError not raised')
Esempio n. 8
0
    def test_item(self):
        """ make sure to raise exception for invalid item
        """
        try:
            App._create_(
                get_test_data_folder(version='1.2',
                                     which=os.path.join(
                                         'upgrade_items', 'with_ref')))
        except errs.SchemaError as e:
            self.failUnlessEqual(e.args, ('Can\'t have $ref for Items', ))
        else:
            self.fail('SchemaError not raised')

        try:
            App._create_(
                get_test_data_folder(version='1.2',
                                     which=os.path.join(
                                         'upgrade_items',
                                         'invalid_primitive')))
        except errs.SchemaError as e:
            self.failUnlessEqual(
                e.args, ('Non primitive type is not allowed for Items', ))
        else:
            self.fail('SchemaError not raised')
Esempio n. 9
0
    def get_swagger(self):
        """Gets an authenticated Swagger Client."""

        swagger_url = self.get_url(
            'swagger', replacement_fields={'base_url': self.base_url})

        # load Swagger resource file into App object
        app = App._create_(swagger_url)

        auth = Security(app)
        # TODO: this isn't working...
        # ValueError: Unknown security name: [api_key]
        auth.update_with('api_key', self.api_token)

        # init swagger client
        client = Client(auth)

        return app, client
 def connect(self, token: str) -> None:
     """
     Establish connection for OpenSTF server
     :param token: stf access token
     :return: None
     """
     url = self.swagger_uri
     self.logger.debug(f"Fetch API spec from: {url}")
     # load Swagger resource file into App object
     try:
         self._app = App._create_(url)  # pylint: disable-line
     except (FileNotFoundError, urllib.error.URLError) as error:
         self.logger.error(error)
         raise
     auth = Security(self._app)
     auth.update_with('accessTokenAuth', f"Bearer {token}")  # token
     # init swagger client
     self._client = Client(auth)
     self.logger.info('StfClient library initiated')
Esempio n. 11
0
    def test_uploadImages(self):
        """ test for uploading multiple files """
        global received_files

        app = App._create_(get_test_data_folder(version='2.0', which=os.path.join('io', 'files')))
        resp = yield self.client.request(
            app.op['upload_images'](images=[
                dict(data=six.BytesIO(six.b('test image 1')), filename='_1.k'),
                dict(data=six.BytesIO(six.b('test image 2')), filename='_2.k'),
                dict(data=six.BytesIO(six.b('test image 3')), filename='_3.k'),
            ]),
            opt=dict(
                url_netloc='localhost:'+str(self.get_http_port())
            )
        )

        self.assertEqual(received_files[0], {'body': six.b('test image 1'), 'content_type': 'application/unknown', 'filename': u'_1.k'})
        self.assertEqual(received_files[1], {'body': six.b('test image 2'), 'content_type': 'application/unknown', 'filename': u'_2.k'})
        self.assertEqual(received_files[2], {'body': six.b('test image 3'), 'content_type': 'application/unknown', 'filename': u'_3.k'})
Esempio n. 12
0
    def test_uploadImages(self):
        """ upload multiple files """
        httpretty.register_uri(httpretty.POST, 'http://test.com/upload', status=200)

        app = App._create_(get_test_data_folder(version='2.0', which=os.path.join('io', 'files')))
        resp = client.request(app.op['upload_images'](images=[
                dict(data=six.BytesIO(six.b('test image 1')), filename='_1.k'),
                dict(data=six.BytesIO(six.b('test image 2')), filename='_2.k'),
                dict(data=six.BytesIO(six.b('test image 3')), filename='_3.k')
            ])
        )
        self.assertEqual(resp.status, 200)
        body = httpretty.last_request().body.decode()
        self.assertTrue(body.find('_1.k') != -1)
        self.assertTrue(body.find('test image 1') != -1)
        self.assertTrue(body.find('_2.k') != -1)
        self.assertTrue(body.find('test image 2') != -1)
        self.assertTrue(body.find('_3.k') != -1)
        self.assertTrue(body.find('test image 3') != -1)
Esempio n. 13
0
    def test_auto_schemes(self):
        """ make sure we scheme of url to access
        swagger.json as default scheme
        """
        # load swagger.json
        data = None
        with open(os.path.join(get_test_data_folder(
                version='2.0',
                which=os.path.join('schema', 'model')
                ), 'swagger.json')) as f:
            data = f.read()

        httpretty.register_uri(
            httpretty.GET,
            'http://test.com/api-doc/swagger.json',
            body=data
        )

        app = App._create_('http://test.com/api-doc/swagger.json')
        self.assertEqual(app.schemes, ['http'])
Esempio n. 14
0
    def test_upload_multiple_files(self):
        """ upload multiple files """
        global received_files
        global received_file_names

        app = App._create_(
            get_test_data_folder(version='2.0',
                                 which=os.path.join('io', 'files')))

        self.client.request(app.op['upload_images'](images=[
            dict(data=six.BytesIO(six.b('test image 1')), filename='_1.k'),
            dict(data=six.BytesIO(six.b('test image 2')), filename='_2.k'),
            dict(data=six.BytesIO(six.b('test image 3')), filename='_3.k')
        ]))

        # filename
        self.assertEqual(received_files[0].filename, '_1.k')
        self.assertEqual(received_files[1].filename, '_2.k')
        self.assertEqual(received_files[2].filename, '_3.k')

        # parameter name
        self.assertEqual(received_files[0].name, 'images')
        self.assertEqual(received_files[1].name, 'images')
        self.assertEqual(received_files[2].name, 'images')
import sys
import json

from pyswagger import App

vertices = []
app = App._create_(sys.argv[1])
for id, op in app.op.items():
    vertices.append({
        'id': id,
        'type': "route",
        'props': [
            {"name": "path", "value": op.path},
            {"name": "verb", "value": op.method.upper()},
        ]
    })

print(json.dumps({
    "id": "swagger_map",
    "vertices": vertices,
    "edges": []
}))
Esempio n. 16
0
def main():
    gp = goldPoint()

    # 初始化 swagger 客户端
    host = 'https://goldennumber.aiedu.msra.cn/'
    jsonpath = '/swagger/v1/swagger.json'
    app = App._create_(host + jsonpath)
    client = Client()

    parser = argparse.ArgumentParser()
    parser.add_argument('--room', type=int, help='Room ID', required=False)
    args = parser.parse_args()
    roomId = args.room

    if roomId is None:
        # 如果参数中没有给出room ID,则要求输入room ID
        roomId = input("Input room id: ")
        try:
            roomId = int(roomId)
        except:
            roomId = 0
            print('Parse room id failed, default join in to room 0')

    userInfoFile = "userinfo.txt"
    userId = "019"
    nickName = None
    try:
        # 使用已存在的玩家
        with open(userInfoFile) as f:
            nickName, userId, key = f.read().split(',')[:3]
        print('Use an exist player: ' + nickName + '  Id: ' + userId)
    except:
        # 创建一个新的玩家
        userResp = client.request(app.op['NewUser'](nickName='019'))
        assert userResp.status == 200
        user = userResp.data
        userId = user.userId
        nickName = user.nickName
        print('Create a new player: ' + nickName + '  Id: ' + userId)

        with open(userInfoFile, "w") as f:
            f.write("%s,%s" % (userId, nickName))

    print('Room id: ' + str(roomId))

    while True:
        stateResp = client.request(app.op['State'](uid=userId, roomid=roomId))
        if stateResp.status != 200:
            print('Network issue, query again after 1 second')
            time.sleep(1)
            continue
        state = stateResp.data

        if state.state == 2:
            print('The game has finished')
            break

        if state.state == 1:
            print('The game has not started, query again after 1 second')
            time.sleep(1)
            continue

        if state.hasSubmitted:
            print('Already submitted this round, wait for next round')
            if state.maxUserCount == 0:
                time.sleep(state.leftTime + 1)
            else:
                # 每秒检测一次:当设置了最大用户数量后,当所有用户都已提交信息后,一个回合就应该结束
                time.sleep(1)
            continue

        print('\r\nThis is round ' + str(state.finishedRoundCount + 1))

        todayGoldenListResp = client.request(
            app.op['TodayGoldenList'](roomid=roomId))
        if todayGoldenListResp.status != 200:
            print('Network issue, query again after 1 second')
            time.sleep(1)
            continue
        todayGoldenList = todayGoldenListResp.data
        if len(todayGoldenList.goldenNumberList) != 0:
            print('Last golden number is: ' +
                  str(todayGoldenList.goldenNumberList[-1]))

        lastRoundResp = client.request(app.op['History'](roomid=roomId,
                                                         count=1))
        if lastRoundResp.status != 200:
            print('Network issue, query again after 1 second')
            time.sleep(1)
            continue
        lastScore = 0
        if len(lastRoundResp.data.rounds) > 0:
            scoreArray = [
                user for user in lastRoundResp.data.rounds[0].userNumbers
                if user.userId == userId
            ]
            if len(scoreArray) == 1:
                lastScore = scoreArray[0].score
        print('Last round score: {}'.format(lastScore))

        number1, number2 = gp.predict(todayGoldenList.goldenNumberList)
        # number1, number2 = random.random(), random.random()
        print(number1, number2)

        if (state.numbers == 2):
            submitRsp = client.request(app.op['Submit'](
                uid=userId,
                rid=state.roundId,
                n1=str(number1),
                n2=str(number2),
                token=base64.b64encode(
                    hashlib.sha256(
                        (userId + state.roundId +
                         key).encode(encoding='utf-8')).hexdigest().encode(
                             encoding='utf-8'))))
            if submitRsp.status == 200:
                print('You submit numbers: ' + str(number1) + ', ' +
                      str(number2))
            else:
                print('Error: ' + submitRsp.data.message)
                time.sleep(1)

        else:
            submitRsp = client.request(app.op['Submit'](
                uid=userId,
                rid=state.roundId,
                n1=str(number1),
                token=base64.b64encode(
                    hashlib.sha256(
                        (userId + state.roundId +
                         key).encode(encoding='utf-8')).hexdigest().encode(
                             encoding='utf-8'))))
            if submitRsp.status == 200:
                print('You submit number: ' + str(number1))
            else:
                print('Error: ' + submitRsp.data.message)
                time.sleep(1)
Esempio n. 17
0
    def test_http_getter(self):
        """ make sure HTTPGetter works """

        folder = get_test_data_folder(version='1.2', which='wordnik')
        resource_list = user = pet = store = None

        with open(os.path.join(folder, 'resource_list.json')) as f:
            resource_list = f.read()

        with open(os.path.join(folder, 'user.json')) as f:
            user = f.read()

        with open(os.path.join(folder, 'pet.json')) as f:
            pet = f.read()

        with open(os.path.join(folder, 'store.json')) as f:
            store = f.read()

        httpretty.register_uri(
            httpretty.GET, 'http://petstore.swagger.wordnik.com/api/api-docs',
            status=200,
            body=resource_list
            )

        httpretty.register_uri(
            httpretty.GET, 'http://petstore.swagger.wordnik.com/api/api-docs/user',
            status=200,
            body=user
            )

        httpretty.register_uri(
            httpretty.GET, 'http://petstore.swagger.wordnik.com/api/api-docs/pet',
            status=200,
            body=pet
            )

        httpretty.register_uri(
            httpretty.GET, 'http://petstore.swagger.wordnik.com/api/api-docs/store',
            status=200,
            body=store
            )

        local_app = App._create_('http://petstore.swagger.wordnik.com/api/api-docs')

        self.assertEqual(sorted(local_app.raw._field_names_), sorted(['info', 'authorizations', 'apiVersion', 'swaggerVersion', 'apis']))

        op = local_app.raw.apis['pet'].apis['updatePet']
        self.assertEqual(sorted(op._field_names_), sorted([
            'authorizations',
            'consumes',
            'defaultValue',
            'deprecated',
            'enum',
            'format',
            'items',
            'maximum',
            'method',
            'minimum',
            'nickname',
            'parameters',
            'produces',
            '$ref',
            'responseMessages',
            'type',
            'uniqueItems',
            'summary',
            'notes'
        ]))
Esempio n. 18
0
from __future__ import absolute_import
from tornado import web, testing
from tornado.ioloop import IOLoop
from pyswagger import App
from pyswagger.contrib.client.tornado import TornadoClient
from ...utils import create_pet_db, get_test_data_folder, pet_Mary
import json
import six
import os


sapp = App._create_(get_test_data_folder(version='1.2', which='wordnik'))
received_file = None
received_meta = None
received_headers = None

""" refer to pyswagger.tests.data.v1_2.wordnik for details """

class RESTHandler(web.RequestHandler):
    """ base implementation of RequestHandler,
    accept a db as init paramaeter.
    """
    def initialize(self, db):
        self.db = db

    def prepare(self):
        """
        According to FAQ of tornado, they won't handle json media-type.
        """
        super(RESTHandler, self).prepare()
Esempio n. 19
0
 def setUpClass(kls):
     kls.app = App._create_(
         get_test_data_folder(version='2.0', which='patch'))
Esempio n. 20
0
def main(roomId):
    host = 'https://goldennumber.aiedu.msra.cn/'
    jsonpath = '/swagger/v1/swagger.json'

    app = App._create_(host + jsonpath)
    client = Client()

    if not roomId:
        # Input the roomid if there is no roomid in args
        roomId = input("Input room id: ")
        try:
            roomId = int(roomId)
        except:
            roomId = 0
            print('Parse room id failed, default join in to room 0')

    userInfoFile = "userinfo.txt"
    userId = None
    nickName = None
    try:
        # Use an exist player
        with open(userInfoFile) as f:
            userId, nickName = f.read().split(',')[:2]
        print('Use an exist player: ' + nickName + '  Id: ' + userId)
    except:
        # Create a new player
        userResp = client.request(app.op['NewUser'](
            nickName='AI Player ' + str(random.randint(0, 9999))))
        assert userResp.status == 200
        user = userResp.data
        userId = user.userId
        nickName = user.nickName
        print('Create a new player: ' + nickName + '  Id: ' + userId)

        with open(userInfoFile, "w") as f:
            f.write("%s,%s" % (userId, nickName))

    print('Room id: ' + str(roomId))

    while True:
        stateResp = client.request(app.op['State'](uid=userId, roomid=roomId))
        assert stateResp.status == 200
        state = stateResp.data

        if state.state == 2:
            print('The game has finished')
            break

        if state.state == 1:
            print('The game has not started, query again after 1 second')
            time.sleep(1)
            continue

        if state.hasSubmitted:
            print('Already submitted this round, wait for next round')
            if state.maxUserCount == 0:
                time.sleep(state.leftTime + 1)
            else:
                # One round can be finished when all players submitted their numbers if the room have set the max count of users, need to check the state every second.
                time.sleep(1)
            continue

        print('\r\nThis is round ' + str(state.finishedRoundCount + 1))

        todayGoldenListResp = client.request(
            app.op['TodayGoldenList'](roomid=roomId))
        assert todayGoldenListResp.status == 200
        todayGoldenList = todayGoldenListResp.data
        if len(todayGoldenList.goldenNumberList) != 0:
            print('Last golden number is: ' +
                  str(todayGoldenList.goldenNumberList[-1]))

        number1, number2 = GeneratePredictionNumbers(
            todayGoldenList.goldenNumberList, state.numbers)

        if (state.numbers == 2):
            submitRsp = client.request(app.op['Submit'](uid=userId,
                                                        rid=state.roundId,
                                                        n1=str(number1),
                                                        n2=str(number2)))
            if submitRsp.status == 200:
                print('You submit numbers: ' + str(number1) + ', ' +
                      str(number2))
            else:
                print('Error: ' + submitRsp.data.message)

        else:
            submitRsp = client.request(app.op['Submit'](uid=userId,
                                                        rid=state.roundId,
                                                        n1=str(number1)))
            if submitRsp.status == 200:
                print('You submit number: ' + str(number1))
            else:
                print('Error: ' + submitRsp.data.message)
Esempio n. 21
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(version='2.0', which=os.path.join('schema', 'model')))
Esempio n. 22
0
from pyswagger import App
from pyswagger.contrib.client.requests import Client
from pyswagger.primitives import Model
from ..utils import get_test_data_folder
import unittest
import httpretty
import json
import pytest
import sys


app = App._create_(get_test_data_folder(version='1.2', which='model_subtypes')) 
client = Client()

u_mission = dict(id=1, username='******', password='******')
uwi_mary = dict(id=2, username='******', password='******', email='*****@*****.**', phone='123')
uwi_kevin = dict(id=3, username='******')


class ModelInteritanceTestCase(unittest.TestCase):
    """ test cases for model inheritance """

    @httpretty.activate
    def test_inheritantce_full(self):
        """ init a Model with every property along
        the inheritance path.
        """
        httpretty.register_uri(
            httpretty.GET, 'http://petstore.swagger.wordnik.com/api/user/mary',
            status=200,
            content_type='application/json',
Esempio n. 23
0
from pyswagger import App, Security
from pyswagger.contrib.client.requests import Client
from pyswagger.utils import jp_compose

# load Swagger resource file into App object
app = App._create_('https://canvas.instructure.com/doc/api/courses.json')

auth = Security(app)
# auth.update_with('api_key', '9371~SNSl0krgbvfe8JYXS5NSKh7FJLcqO8yNmwZOb9ku79YGDmIXLNCjzjiOBGvfFya9') # api key
# auth.update_with('petstore_auth', '12334546556521123fsfss') # oauth2

# init swagger client
client = Client(auth)

Esempio n. 24
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(version='2.0', which=os.path.join('schema', 'additionalProperties')))
Esempio n. 25
0
    def test_http_getter(self):
        """ make sure HTTPGetter works """

        folder = get_test_data_folder(version='1.2', which='wordnik')
        resource_list = user = pet = store = None

        with open(os.path.join(folder, 'resource_list.json')) as f:
            resource_list = f.read()

        with open(os.path.join(folder, 'user.json')) as f:
            user = f.read()

        with open(os.path.join(folder, 'pet.json')) as f:
            pet = f.read()

        with open(os.path.join(folder, 'store.json')) as f:
            store = f.read()

        httpretty.register_uri(
            httpretty.GET,
            'http://petstore.swagger.wordnik.com/api/api-docs',
            status=200,
            body=resource_list)

        httpretty.register_uri(
            httpretty.GET,
            'http://petstore.swagger.wordnik.com/api/api-docs/user',
            status=200,
            body=user)

        httpretty.register_uri(
            httpretty.GET,
            'http://petstore.swagger.wordnik.com/api/api-docs/pet',
            status=200,
            body=pet)

        httpretty.register_uri(
            httpretty.GET,
            'http://petstore.swagger.wordnik.com/api/api-docs/store',
            status=200,
            body=store)

        local_app = App._create_(
            'http://petstore.swagger.wordnik.com/api/api-docs')

        self.assertEqual(
            sorted(local_app.raw._field_names_),
            sorted([
                'info', 'authorizations', 'apiVersion', 'swaggerVersion',
                'apis'
            ]))

        op = local_app.raw.apis['pet'].apis['updatePet']
        self.assertEqual(
            sorted(op._field_names_),
            sorted([
                'authorizations', 'consumes', 'defaultValue', 'deprecated',
                'enum', 'format', 'items', 'maximum', 'method', 'minimum',
                'nickname', 'parameters', 'produces', '$ref',
                'responseMessages', 'type', 'uniqueItems', 'summary', 'notes'
            ]))
 def connect_to_stf(self, host, token):
     self.app = App._create_('http://%s/api/v1/swagger.json' % host)
     auth = Security(self.app)
     auth.update_with('accessTokenAuth', 'Bearer ' + token)
     self.client = Client(auth)
Esempio n. 27
0
#!/usr/bin/env python3

from pyswagger import App, Security
from pyswagger.contrib.client.requests import Client as SwagClient

from shared.config import config

import startup

oauth_credentials = startup.run_flow()

# Autheticates against the Bikebuds API using google-based oauth identity.
# I can't figure out how to do this with firebase identity
swag_app = App._create_(config.api_url + '/bikebudsv1openapi.json')
swag_auth = Security(swag_app)
swag_auth.update_with('api_key', config.python_client_testing_api_key)

api_client = SwagClient(swag_auth)
api_client._Client__s.headers[
    'Authorization'] = 'Bearer ' + oauth_credentials.id_token
# This is a hack for my server, auth_util.verify_claims by default tries to
# validate via firebase.
api_client._Client__s.headers['UseAltAuth'] = '1'

req, resp = swag_app.op['getProfile'](body=None)
req.produce('application/json')
api_client.request((req, resp))
print(resp.status)
print(resp.data)
Esempio n. 28
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(
         version='2.0',
         which=os.path.join('resolve', 'deref')
     ))
Esempio n. 29
0
 def setUpClass(kls):
     kls.app = App._create_(folder)
Esempio n. 30
0
def generate_client(URL, KEY=None):
    app = App._create_(URL)
    auth = Security(app)
    auth.update_with('apiKeyHeader', KEY)  # api key
    client = Client(auth)
    return app, client
Esempio n. 31
0
 def setUpClass(kls):
     kls.app = App._create_(folder)
Esempio n. 32
0
from pyswagger import App
from pyswagger.contrib.client.requests import Client
from pyswagger.primitives import Model
from ..utils import get_test_data_folder
import unittest
import httpretty
import json
import pytest
import sys

app = App._create_(get_test_data_folder(version='1.2', which='model_subtypes'))
client = Client()

u_mission = dict(id=1, username='******', password='******')
uwi_mary = dict(id=2,
                username='******',
                password='******',
                email='*****@*****.**',
                phone='123')
uwi_kevin = dict(id=3, username='******')


class ModelInteritanceTestCase(unittest.TestCase):
    """ test cases for model inheritance """
    @httpretty.activate
    def test_inheritantce_full(self):
        """ init a Model with every property along
        the inheritance path.
        """
        httpretty.register_uri(
            httpretty.GET,
Esempio n. 33
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(version='1.2', which='model_subtypes'))
Esempio n. 34
0
from __future__ import absolute_import
from pyswagger import App
from pyswagger.contrib.client.flask import FlaskTestClient
from ...utils import create_pet_db, get_test_data_folder, pet_Mary
from flask import Flask, json, request
import unittest
import six
import os

sapp = App._create_(get_test_data_folder(version='1.2', which='wordnik'))
pet_db = create_pet_db()
received_file = None
received_meta = None

#
# a minimum flask application for pet-store example
#
fapp = Flask(__name__)


@fapp.route('/api/pet', methods=['POST', 'PUT'])
def pet():
    if request.method == 'POST':
        if pet_db.read_(request.json['id']) != None:
            return "", 409
        else:
            pet_db.create_(**request.json)
            return "", 200
    elif request.method == 'PUT':
        if not isinstance(request.json['id'], int):
            return "", 400
Esempio n. 35
0
 def setUpClass(kls):
     kls.app = App._create_(
         get_test_data_folder(version='1.2', which='model_subtypes'))
Esempio n. 36
0
from pyswagger import App, Security
from ..utils import get_test_data_folder
import unittest

app = App._create_(get_test_data_folder(version='1.2', which='simple_auth'))


class BasicAuthAndApiKeyTestCase(unittest.TestCase):
    """ test cases for authorzation related """
    def setUp(self):
        self.s = Security(app)
        self.s.update_with('simple_key', '123456')
        self.s.update_with('simple_basic', ('mission', '123123'))
        self.s.update_with('simple_basic2', ('qoo', '456456'))
        self.s.update_with('simple_key2', '789789')

    def test_deleteUser(self):
        """ basic auth """
        req, _ = app.op['deleteUser'](username='******')
        self.s(req).prepare()

        self.assertTrue('Authorization' in req.header)
        self.assertEqual(req.header['Authorization'],
                         'Basic bWlzc2lvbjoxMjMxMjM=')

    def test_getUserByName(self):
        """ api key, passed by query """
        req, _ = app.op['getUserByName'](username='******')
        self.s(req).prepare()

        qk = [x for x in req.query if x[0] == 'simpleQK']
Esempio n. 37
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(
         version='2.0',
         which='patch'
     ))
Esempio n. 38
0
from pyswagger import App, Security
from ..utils import get_test_data_folder
import unittest


app = App._create_(get_test_data_folder(version='1.2', which='simple_auth')) 


class BasicAuthAndApiKeyTestCase(unittest.TestCase):
    """ test cases for authorzation related """

    def setUp(self):
        self.s = Security(app)
        self.s.update_with('simple_key', '123456')
        self.s.update_with('simple_basic', ('mission', '123123'))
        self.s.update_with('simple_basic2', ('qoo', '456456'))
        self.s.update_with('simple_key2', '789789')

    def test_deleteUser(self):
        """ basic auth """
        req, _ = app.op['deleteUser'](username='******')
        self.s(req).prepare()

        self.assertTrue('Authorization' in req.header)
        self.assertEqual(req.header['Authorization'], 'Basic bWlzc2lvbjoxMjMxMjM=')

    def test_getUserByName(self):
        """ api key, passed by query """
        req, _ = app.op['getUserByName'](username='******')
        self.s(req).prepare()
Esempio n. 39
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(version='2.0', which=os.path.join('schema', 'additionalProperties')))
Esempio n. 40
0
 def initOpenAPI(self):
     with open('stratzAPI.yaml') as f:
         spec = yaml.safe_load(f.read())
     app = App._create_('spec')
     auth = Security
Esempio n. 41
0
 def setUpClass(kls):
     kls.app = App._create_(get_test_data_folder(version='2.0', which=os.path.join('schema', 'model')))
Esempio n. 42
0
    if lastState != None and lastAction != None:
        RL.learn(lastState, lastAction, lastScore, state)

    action = RL.choose_action(state)
    number1, number2 = actions[action](goldenNumberList)

    lastState = state
    lastAction = action

    return number1, number2


# Init swagger client
host = 'https://goldennumber.aiedu.msra.cn/'
jsonpath = '/swagger/v1/swagger.json'
app = App._create_(host + jsonpath)
client = Client()


def main(roomId):
    if roomId is None:
        # Input the roomid if there is no roomid in args
        roomId = input("Input room id: ")
        try:
            roomId = int(roomId)
        except:
            roomId = 0
            print('Parse room id failed, default join in to room 0')

    userInfoFile = "userinfo.txt"
    userId = None
Esempio n. 43
0
 def setUpClass(kls):
     kls.app = App._create_(
         get_test_data_folder(version='2.0',
                              which=os.path.join('resolve', 'deref')))