Esempio n. 1
0
 def test_error_response_code_404_with_non_existant_args(self):
     '''
     Ensure all non-existant args return 404
     '''
     for ep in self.routes_only_args:
         if "/verb" in ep:
             rt = re.sub(self.arg_match, self.non_existant_tag, ep)
             try:
                 r = requests.get(self.host + rt)
                 self.assertEqual(r.status_code, 404)
                 logger.info("Non-existant arg on route " + self.host + rt + " returned " + str(r.status_code))
             except AssertionError:
                 logger.error("Route " + self.host + rt + " returned " + str(r.status_code))
             except:
                 logger.error("Couldn't connect. Is flask running?")
         elif "/aff-option" in ep:
             rt = re.sub(self.arg_match, self.non_existant_tag, ep)
             try:
                 r = requests.get(self.host + rt)
                 self.assertEqual(r.status_code, 404)
                 logger.info("Non-existant arg on route " + self.host + rt + " returned " + str(r.status_code))
             except AssertionError:
                 logger.error("Route " + self.host + rt + " returned " + str(r.status_code))
             except:
                 logger.error("Couldn't connect. Is flask running?")
         elif "/affix" in ep:
             rt = re.sub(self.arg_match, self.non_existant_tag, ep)
             try:
                 r = requests.get(self.host + rt)
                 self.assertEqual(r.status_code, 404)
                 logger.info("Non-existant arg on route " + self.host + rt + " returned " + str(r.status_code))
             except AssertionError:
                 logger.error("Route " + self.host + rt + " returned " + str(r.status_code))
             except:
                 logger.error("Couldn't connect. Is flask running?")
         elif "/pronoun" in ep:
             rt = re.sub(self.arg_match, self.non_existant_tag, ep)
             try:
                 r = requests.get(self.host + rt)
                 self.assertEqual(r.status_code, 404)
                 logger.info("Non-existant arg on route " + self.host + rt + " returned " + str(r.status_code))
             except AssertionError:
                 logger.error("Route " + self.host + rt + " returned " + str(r.status_code))
             except:
                 logger.error("Couldn't connect. Is flask running?")
         elif "/conjugations":
             rt = re.sub(self.arg_match, self.non_existant_tag, ep)
             try:
                 r = requests.get(self.host + rt)
                 self.assertEqual(r.status_code, 404)
                 logger.info("Non-existant arg on route " + self.host + rt + " returned " + str(r.status_code))
             except AssertionError:
                 logger.error("Route " + self.host + rt + " returned " + str(r.status_code))
             except:
                 logger.error("Couldn't connect. Is flask running?")
         else:
             logger.warning("Route " + self.host + ep + " was registered, but not tested.")
Esempio n. 2
0
 def test_fst(self):
     '''
     Check if all tags are deemed valid by FST
     '''
     for tag in self.fst_tags:
         try:
             list(self.fp.down(tag))[0]
         except IndexError:
             logger.warning("The tag " + tag +
                            " caused an error with the FST.")
         except NullFomaTransducerException:
             return skip("FST not found on this machine")
Esempio n. 3
0
 def test_error_response_code_405_with_disallowed_methods(self):
     '''
     Ensure all disallowed methods return 405s
     '''
     for rt in self.routes_no_fst_no_args:
         try:
             r = requests.delete(self.host + rt)
             self.assertEqual(r.status_code, 405)
             logger.info("'DELETE' method on route " + self.host + rt + " returned " + str(r.status_code))
             r = requests.put(self.host + rt)
             self.assertEqual(r.status_code, 405)
             logger.info("'PUT' method on route " + self.host + rt + " returned " + str(r.status_code))
             r = requests.post(self.host + rt)
             self.assertEqual(r.status_code, 405)
             logger.info("'POST' method on route " + self.host + rt + " returned " + str(r.status_code))
         except AssertionError:
             logger.warning("Route " + self.host + rt + " returned " + str(r.status_code))
         except:
             logger.error("Couldn't connect. Is flask running?")
    def test_wrong_person_with_command(self):
        '''
        If anything other than 2nd person is used with command,
        response should be a 400 **this is unclear, and TBD. Currently returns nothing**
        '''
        params = {
            'verb': self.all_blue_verb_tags[0],
            'aff-option': self.command_tag,
            'patient': self.first_pers_tag
        }

        for host in self.servers:
            try:
                r = requests.get(host + self.route,
                                 params=params,
                                 headers=self.headers)
                self.assertEqual(r.status_code, 400)
                logger.info("Request to " + r.url + " returned " +
                            str(r.status_code))
            except Exception as e:
                logger.warning("Request to " + host + self.route +
                               " returned " + str(e))
Esempio n. 5
0
from tqdm import tqdm

from wordweaver.app import app
from wordweaver import VERSION
from wordweaver.buildtools.swagger_spec_gen import SwaggerSpecGenerator
from wordweaver import __file__ as ww_file
from wordweaver.fst.utils.foma_access_python import foma_access_python as foma_access
from wordweaver.config import ENV_CONFIG
from wordweaver.log import logger
from wordweaver.resources.utils import return_plain

DATA_DIR = os.environ.get('WW_DATA_DIR')

if not DATA_DIR:
    logger.warning(
        'WW_DATA_DIR environment variable is not set, using default sample data instead.'
    )
    DATA_DIR = os.path.join(os.path.dirname(ww_file), 'sample', 'data')

FOMABINS_DIR = os.path.join(DATA_DIR, 'fomabins')


def create_app():
    return app


@click.version_option(version=VERSION, prog_name="wordweaver")
@click.group(cls=FlaskGroup, create_app=create_app)
def cli():
    '''Management script for WordWeaver'''
Esempio n. 6
0
    def test_response_code_with_args(self):
        '''
        Ensure all args return 200
        '''
        for ep in self.routes_only_args:
            if "/verb" in ep:
                for x in self.all_verb_tags:
                    rt = re.sub(self.arg_match, x, ep)
                    try:
                        r = requests.get(self.host + rt)
                        self.assertEqual(r.status_code, 200)
                    except AssertionError:
                        logger.error("Route " + self.host + rt + " returned " +
                                     str(r.status_code) +
                                     ". Is the FST running?")
                    except:
                        logger.error("Couldn't connect. Is flask running?")
                logger.info("Successfully tested " +
                            str(len(self.all_verb_tags)) +
                            " verb resources at route " + self.host + ep +
                            " .")

            elif "/aff-option" in ep:
                for x in self.all_affopt_tags:
                    rt = re.sub(self.arg_match, x, ep)
                    try:
                        r = requests.get(self.host + rt)
                        self.assertEqual(r.status_code, 200)
                    except AssertionError:
                        logger.error("Route " + self.host + rt + " returned " +
                                     str(r.status_code) +
                                     ". Is the FST running?")
                    except:
                        logger.error("Couldn't connect. Is flask running?")

                logger.info("Successfully tested " +
                            str(len(self.all_affopt_tags)) +
                            " affix option resources at route " + self.host +
                            ep + ".")

            elif "/affix" in ep:
                for x in self.all_affix_tags:
                    rt = re.sub(self.arg_match, x, ep)
                    try:
                        r = requests.get(self.host + rt)
                        self.assertEqual(r.status_code, 200)
                    except AssertionError:
                        logger.error("Route " + self.host + rt + " returned " +
                                     str(r.status_code) +
                                     ". Is the FST running?")
                    except:
                        logger.error("Couldn't connect. Is flask running?")
                logger.info("Successfully tested " +
                            str(len(self.all_affix_tags)) +
                            " affix resources at route " + self.host + ep +
                            ".")

            elif "/pronoun" in ep:
                for x in self.all_pronoun_tags:
                    rt = re.sub(self.arg_match, x, ep)
                    try:
                        r = requests.get(self.host + rt)
                        self.assertEqual(r.status_code, 200)
                    except AssertionError:
                        logger.error("Route " + self.host + rt + " returned " +
                                     str(r.status_code) +
                                     ". Is the FST running?")
                    except:
                        logger.error("Couldn't connect. Is flask running?")
                logger.info("Successfully tested " +
                            str(len(self.all_pronoun_tags)) +
                            " pronoun resources at route " + self.host + ep +
                            ".")
            elif "/conjugations":
                logger.debug("Passing conjugations args for other test")
                pass
            else:
                logger.warning("Route " + ep +
                               " was registered, but not tested.")