Exemplo n.º 1
0
    def test_app_configuration_with_valid_call(self):
        """If the call is authenticated then the call will get passed"""
        key_text = load_key('priv')
        self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
        self.app.config['MAUTH_KEY_DATA'] = key_text
        self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
        self.app.config['MAUTH_VERSION'] = "v2"
        self.app.config['MAUTH_MODE'] = "local"

        @self.app.route("/", methods=['GET'])
        @requires_authentication
        def test_url_closed():
            return "Ping"

        client = self.app.test_client()

        with mock.patch("flask_mauth.auth.LocalAuthenticator") as local_auth:
            m_auth = local_auth.return_value
            m_auth.is_authentic.return_value = True, 200, ""
            authenticator = MAuthAuthenticator()
            authenticator.init_app(self.app)
            # protected URL
            rv = client.get("/")
            self.assertEqual(200, rv.status_code)
            self.assertEqual(b'Ping', rv.data)
Exemplo n.º 2
0
 def test_app_configuration_wrong_mode(self):
     """With incorrect mode, initialisation of app is wrong"""
     key_text = load_key('priv')
     self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
     self.app.config['MAUTH_KEY_DATA'] = key_text
     self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
     self.app.config['MAUTH_MODE'] = "banana"
     with self.assertRaises(TypeError) as exc:
         authenticator = MAuthAuthenticator(self.app)
     self.assertEqual(str(exc.exception),
                      "MAuthAuthenticator MAUTH_MODE must be one of local or remote")
Exemplo n.º 3
0
 def test_app_configuration_missing_base_url(self):
     """With BASE_URL missing, initialisation of app is wrong"""
     key_text = load_key('priv')
     self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
     self.app.config['MAUTH_KEY_DATA'] = key_text
     self.app.config['MAUTH_VERSION'] = "v2"
     self.app.config['MAUTH_MODE'] = "local"
     with self.assertRaises(TypeError) as exc:
         authenticator = MAuthAuthenticator(self.app)
     self.assertEqual(str(exc.exception),
                      "MAuthAuthenticator requires a MAUTH_BASE_URL and MAUTH_VERSION")
Exemplo n.º 4
0
 def test_app_configuration_missing_key(self):
     """With Key Text missing, initialisation of app is wrong"""
     key_text = load_key('priv')
     self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
     self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
     self.app.config['MAUTH_VERSION'] = "v2"
     self.app.config['MAUTH_MODE'] = "local"
     with self.assertRaises(TypeError) as exc:
         authenticator = MAuthAuthenticator(self.app)
     self.assertEqual(str(exc.exception),
                      "MAuthAuthenticator requires both a MAUTH_APP_UUID and MAUTH_KEY_DATA to be set")
Exemplo n.º 5
0
 def test_app_configuration_remote(self):
     """With remote mode, initialisation of app is ok"""
     key_text = load_key('priv')
     self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
     self.app.config['MAUTH_KEY_DATA'] = key_text
     self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
     self.app.config['MAUTH_MODE'] = "remote"
     try:
         authenticator = MAuthAuthenticator(self.app)
     except TypeError as exc:
         self.fail("Shouldn't raise an exception")
     self.assertEqual('remote', authenticator.mauth_mode)
Exemplo n.º 6
0
 def test_app_configuration(self):
     """With everything present, initialisation of app is ok"""
     key_text = load_key('priv')
     self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
     self.app.config['MAUTH_KEY_DATA'] = key_text
     self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
     self.app.config['MAUTH_VERSION'] = "v2"
     self.app.config['MAUTH_MODE'] = "local"
     try:
         authenticator = MAuthAuthenticator(self.app)
     except TypeError as exc:
         self.fail("Shouldn't raise an exception")
Exemplo n.º 7
0
    def test_app_configuration_and_call_open_url(self):
        """An open route will pass"""
        key_text = load_key('priv')
        self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
        self.app.config['MAUTH_KEY_DATA'] = key_text
        self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
        self.app.config['MAUTH_VERSION'] = "v2"
        self.app.config['MAUTH_MODE'] = "local"
        authenticator = MAuthAuthenticator()
        authenticator.init_app(self.app)

        @self.app.route("/lemon", methods=['GET'])
        def test_url_open():
            return "Ping"

        client = self.app.test_client()

        # open URL
        rv = client.get("/lemon")
        self.assertEqual(200, rv.status_code)
        self.assertEqual(b'Ping', rv.data)
Exemplo n.º 8
0
    def test_app_configuration_and_call_protected_url(self):
        """A protected route will raise if the call is inauthentic"""
        key_text = load_key('priv')
        self.app.config['MAUTH_APP_UUID'] = '671785CD-15CE-458A-9779-8132C8F60F04'
        self.app.config['MAUTH_KEY_DATA'] = key_text
        self.app.config['MAUTH_BASE_URL'] = "https://mauth-sandbox.imedidata.net"
        self.app.config['MAUTH_VERSION'] = "v2"
        self.app.config['MAUTH_MODE'] = "local"
        authenticator = MAuthAuthenticator()
        authenticator.init_app(self.app)

        @self.app.route("/", methods=['GET'])
        @requires_authentication
        def test_url_closed():
            return "Ping"

        client = self.app.test_client()

        # protected URL
        rv = client.get("/")
        self.assertEqual(401, rv.status_code)
        self.assertEqual(dict(errors=dict(mauth=["Authentication Failed. No mAuth signature present; "
                                                 "X-MWS-Authentication header is blank."])),
                         json.loads(rv.data.decode('utf-8')))