#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.


import logging
import sys
if (sys.version_info > (3,)):
  from urllib.parse import quote
else:
  from urllib import quote
import jsonpickle
from cairis.core.Attacker import Attacker
from cairis.tools.JsonConverter import json_deserialize
from cairis.core.AttackerEnvironmentProperties import AttackerEnvironmentProperties
from cairis.test.CairisDaemonTestCase import CairisDaemonTestCase
import os
from cairis.mio.ModelImport import importModelFile

__author__ = 'Robin Quetin, Shamal Faily'


class AttackerAPITests(CairisDaemonTestCase):

  @classmethod
  def setUpClass(cls):
    importModelFile(os.environ['CAIRIS_SRC'] + '/../examples/exemplars/NeuroGrid/NeuroGrid.xml',1,'test')

  
  def setUp(self):
    # region Class fields
    self.logger = logging.getLogger(__name__)
    self.existing_attacker_name = 'Mallory'
    self.existing_environment_name_1 = 'Stroke'
    self.existing_environment_name_2 = 'Psychosis'
    self.existing_motive_names = ['Hactivism', 'Money']
    self.existing_role_names = ['Hacker', 'Developer']
    self.existing_capabilities = [
      {
        'name':'Resources/Equipment',
        'value': 'Low'
      },
      {
        'name': 'Knowledge/Methods',
        'value': 'High'
      }
    ]
    attacker_class = Attacker.__module__+'.'+Attacker.__name__
    # endregion

  def test_get_all(self):
    method = 'test_get_all'
    rv = self.app.get('/api/attackers?session_id=test')
    if (sys.version_info > (3,)):