Пример #1
0
 def create_selenium_auth_record(self, name, script, regex):
     """ Create selenium auth record """
     response = self._request(
         "/qps/rest/3.0/create/was/webappauthrecord",
         json={
             "ServiceRequest": {
                 "data": {
                     "WebAppAuthRecord": {
                         "name": name,
                         "formRecord": {
                             "type": "SELENIUM",
                             "seleniumScript": {
                                 "name": "seleniumScriptOK",
                                 "data": script,
                                 "regex": regex
                             }
                         }
                     }
                 }
             }
         },
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     return obj.ServiceResponse.data[0].WebAppAuthRecord.id
Пример #2
0
 def create_report(self, name, webapp_id, report_template):
     """ Create report """
     response = self._request(
         "/qps/rest/3.0/create/was/report",
         json={
             "ServiceRequest": {
                 "data": {
                     "Report": {
                         "name": name,
                         "description": "Report generated by API with Dusty",
                         "format": "XML",
                         "type": "WAS_SCAN_REPORT",
                         "config": {
                             "webAppReport": {
                                 "target": {
                                     "webapps": {
                                         "WebApp": [{
                                             "id": webapp_id
                                         }]
                                     }
                                 }
                             }
                         },
                         "template": {"id": int(report_template)}
                     }
                 }
             }
         },
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     return obj.ServiceResponse.data[0].Report.id
Пример #3
0
 def start_scan(self, name, webapp_id, option_profile, scanner_appliance,
                auth_record):
     """ Start scan """
     response = self._request(
         "/qps/rest/3.0/launch/was/wasscan/",
         json={
             "ServiceRequest": {
                 "data": {
                     "WasScan": {
                         "name": name,
                         "type": "VULNERABILITY",
                         "target": {
                             "webApp": {"id": webapp_id},
                             "webAppAuthRecord": auth_record,
                             "scannerAppliance": scanner_appliance
                         },
                         "profile": {"id": int(option_profile)},
                         "sendMail": False
                     }
                 }
             }
         },
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     return obj.ServiceResponse.data[0].WasScan.id
Пример #4
0
 def add_auth_record_to_webapp(self, webapp_id, webapp_name,
                               auth_record_id):
     """ Add auth record to WebApp """
     response = self._request(
         f"/qps/rest/3.0/update/was/webapp/{webapp_id}",
         json={
             "ServiceRequest": {
                 "data": {
                     "WebApp": {
                         "name": webapp_name,
                         "authRecords": {
                             "add": {
                                 "WebAppAuthRecord": [{
                                     "id": auth_record_id
                                 }]
                             }
                         }
                     }
                 }
             }
         },
         validator=lambda r: r.ok and dot(r.json()
                                          ).ServiceResponse.responseCode)
     obj = dot(response.json())
     return obj.ServiceResponse.responseCode == "SUCCESS"
Пример #5
0
 def count_scans_in_webapp(self, webapp_id):
     """ Count submitted/running scans in WebApp """
     response = self._request(
         "/qps/rest/3.0/count/was/wasscan",
         json={
             "ServiceRequest": {
                 "filters": {
                     "Criteria": [{
                         "field": "webApp.id",
                         "operator": "EQUALS",
                         "value": webapp_id
                     }, {
                         "field": "status",
                         "operator": "IN",
                         "value": "SUBMITTED,RUNNING"
                     }]
                 }
             }
         },
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     try:
         return obj.ServiceResponse.count
     except:  # pylint: disable=W0702
         return 0  # On error - allow to try to delete stale project
Пример #6
0
 def get_version(self):
     """ Get WAS version """
     response = self._request(
         "/qps/rest/portal/version",
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     return obj.ServiceResponse.data[0]["Portal-Version"]["WAS-VERSION"]
Пример #7
0
 def get_report_status(self, report_id):
     """ Get scan status """
     response = self._request(
         f"/qps/rest/3.0/status/was/report/{report_id}",
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     return obj.ServiceResponse.data[0].Report.status
Пример #8
0
 def delete_asset(self, asset_type, asset_id):
     """ Delete asset """
     response = self._request(
         f"/qps/rest/3.0/delete/was/{asset_type}/{asset_id}",
         json={},
         validator=lambda r: r.ok and dot(r.json()
                                          ).ServiceResponse.responseCode)
     obj = dot(response.json())
     return obj.ServiceResponse.responseCode == "SUCCESS"
Пример #9
0
 def create_webapp(self,
                   name,
                   application_url,
                   option_profile,
                   excludes=None):
     """ Create WebApp record """
     if excludes is None:
         payload = {
             "ServiceRequest": {
                 "data": {
                     "WebApp": {
                         "name": name,
                         "url": application_url,
                         "defaultProfile": {
                             "id": int(option_profile)
                         }
                     }
                 }
             }
         }
     else:
         payload = {
             "ServiceRequest": {
                 "data": {
                     "WebApp": {
                         "name": name,
                         "url": application_url,
                         "defaultProfile": {
                             "id": int(option_profile)
                         },
                         "urlBlacklist": {
                             "set": {
                                 "UrlEntry": [{
                                     "value": item,
                                     "regex": "true"
                                 } for item in excludes]
                             }
                         },
                         "postDataBlacklist": {
                             "set": {
                                 "UrlEntry": [{
                                     "value": item,
                                     "regex": "true"
                                 } for item in excludes]
                             }
                         }
                     }
                 }
             }
         }
     response = self._request(
         "/qps/rest/3.0/create/was/webapp", json=payload,
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     return obj.ServiceResponse.data[0].WebApp.id
Пример #10
0
 def get_scan_results_status(self, scan_id):
     """ Get scan status """
     response = self._request(
         f"/qps/rest/3.0/status/was/wasscan/{scan_id}",
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     try:
         return obj.ServiceResponse.data[0].WasScan.summary.resultsStatus
     except:  # pylint: disable=W0702
         return "UNKNOWN"
Пример #11
0
def pytest_load_initial_conftests(early_config, parser, args):
    # TODO: どうにかしたい
    dir = ''
    for arg in args:
        m = re.match(r'--terraform-dir=(.*)', arg)
        if m:
            dir = m.groups()[0]

    # --terraform-dir で指定されたディレクトリから *.tf を取得
    tf_files = glob.glob('{terraform_dir}/*.tf'.format(terraform_dir=dir))

    # --terraform-dir で指定されたディレクトリから resource "hogehoge" "fugafuga" {} の定義を取り出す
    resources = defaultdict(lambda: [])
    for tf_file in tf_files:
        # hcl で記述されている .tf を開く
        with open(tf_file, 'r') as f:
            obj = dot(hcl.load(f))

        # resource セクションのみ処理
        if 'resource' in list(obj.keys()):
            terraform_resource = obj.resource
            for resource_key, resource in terraform_resource.items():
                for name, param in resource.items():
                    resources[resource_key].append(name)

    for resource, names in resources.items():
        print(resource, names)
        for name in names:
            inject_terraform_fixture(resource, name)

        inject_terraform_class(resource, names)
Пример #12
0
def get_graphql_params(request, data):
    query = request.GET.get('query') or data.get('query')

    if query is None:
        raise Error('Must provide query string.')

    variables = request.GET.get('variables') or data.get('variables')

    if variables is not None and isinstance(variables, six.text_type):
        try:
            variables = json.loads(variables)
        except ValueError:
            raise Error('Variables are invalid JSON.')

    operation_name = (request.GET.get('operationName')
                      or data.get('operationName'))

    variables = dot(variables)
    for key, value in request.POST.items():  # support for apollo-upload-client
        if key.startswith('variables.'):
            # variables.my.img => { my: { img: 'variables.my.img' }}
            # variables.my.0.img => { my: [{ img: 'variables.my.0.img' }]}
            rest = key[10:]
            variables[rest] = key

    return query, variables.to_python() if variables else None, operation_name
 def test_provider_fetch_data_monsters(self):
     """
         Test to load Monsters from MobileRagnarokProvider REST API
     :return:
     """
     result = PROVIDER.fetch_data(PROVIDER.get_categories().get('monsters'))
     items = dot(result.json()).result.items
     logger.info(items)
     self.assertTrue(items)
Пример #14
0
 def search_for_webapp(self, webapp_name):
     """ Search for existing WebApp and get ID """
     response = self._request(
         "/qps/rest/3.0/search/was/webapp",
         json={
             "ServiceRequest": {
                 "filters": {
                     "Criteria": [{
                         "field": "name",
                         "operator": "EQUALS",
                         "value": webapp_name
                     }]
                 }
             }
         },
         validator=lambda r: r.ok and \
             dot(r.json()).ServiceResponse.responseCode == "SUCCESS"
     )
     obj = dot(response.json())
     if obj.ServiceResponse.count == 0:
         return None
     return obj.ServiceResponse.data[0].WebApp.id
Пример #15
0
dotted_dict = DottedDict({'hello': {'world': {'python': '3'}}})
print(dotted_dict['hello'])
print(dotted_dict['hello.world'])
print(dotted_dict['hello.world.python'])

print(dotted_dict.hello)
print(dotted_dict.hello.world)
print(dotted_dict.hello.world.python)

dotted_dict2 = DottedCollection.factory(
    {'hello': [{
        'world': {
            'python': ['3', '7', '3']
        }
    }]})
print(dotted_dict2['hello'][0]['world']['python'][0])
print(dotted_dict2.hello[0].world.python[0])
print(dotted_dict2.hello[0].world['python'][0])
print(dotted_dict2.hello[0].world['python.0'])
print(dotted_dict2.hello['0.world'].python[0])
print(dotted_dict2['hello.0.world.python.0'])

dotted_dict2['c++.path'] = {'hello': 'world'}
dotted_dict2['java.path'] = ['hello']
print(dotted_dict2)

dot_obj = dot({'hello': 'world'})
print(dot_obj)
dotted_json = dot_json('{"hello": "world"}')
print(dotted_json)