Exemplo n.º 1
0
def test_generate_developer_config_happy_day(tmp_path):
    key_file = tmp_path / 'dev.key.pem'
    certificate_file = tmp_path / 'dev.cert.der'
    generate_credentials(
        key_file=key_file,
        cert_file=certificate_file,
        cred_valid_time=8
    )
    config = tmp_path / 'my_cfg.yaml'
    class_id = uuid.uuid4()
    vendor_id = uuid.uuid4()
    generate_developer_config(
        key_file=key_file,
        cert_file=certificate_file,
        config=config,
        class_id=class_id,
        vendor_id=vendor_id
    )
    with config.open('rb') as fh:
        raw_cfg = yaml.safe_load(fh)

    assert 'key_file' in raw_cfg
    assert 'vendor-id' in raw_cfg
    assert len(raw_cfg['vendor-id']) == 32
    assert 'class-id' in raw_cfg
    assert len(raw_cfg['class-id']) == 32
Exemplo n.º 2
0
def test_cli_developer(happy_day_data, action):

    dev_cfg = happy_day_data['tmp_path'] / defaults.DEV_CFG
    generate_developer_config(
        key_file=happy_day_data['key_file'],
        certificate_file=happy_day_data['certificate_file'],
        config=dev_cfg,
        do_overwrite=True)

    output_manifest = happy_day_data['tmp_path'] / 'manifest.bin'
    cmd = ['--debug'] + action + [
        '--priority',
        '100500',
        '--output',
        output_manifest.as_posix(),
        '--cache-dir',
        happy_day_data['tmp_path'].as_posix(),
        '--payload-url',
        'https://arm.com/foo.bin?id=67567565576857',
        '--payload-path',
        happy_day_data['delta_file'].as_posix(),
        '--vendor-data',
        dev_cfg.as_posix(),
    ]

    if not any(['v1' in x for x in action]):
        cmd.extend(['--fw-version', '100.500.0'])

    with conftest.working_directory(happy_day_data['tmp_path']):
        assert 0 == dev_tool.entry_point(cmd)
Exemplo n.º 3
0
def data_generator(tmp_path_factory, size):
    tmp_path = tmp_path_factory.mktemp("data")
    key_file = tmp_path / 'dev.key.pem'
    certificate_file = tmp_path / 'dev.cert.der'
    dev_init.generate_credentials(key_file=key_file,
                                  certificate_file=certificate_file,
                                  do_overwrite=False,
                                  cred_valid_time=8)
    bsdiff_version = armbsdiff.get_version().encode('utf-8')
    fw_file = tmp_path / 'fw.bin'
    fw_data = bsdiff_version + os.urandom(size)
    fw_file.write_bytes(fw_data)
    new_fw_file = tmp_path / 'new_fw.bin'
    new_fw_data = fw_data + os.urandom(512)
    new_fw_file.write_bytes(new_fw_data)
    delta_file = tmp_path / 'delta.bin'
    delta_tool.generate_delta(orig_fw=fw_file,
                              new_fw=new_fw_file,
                              output_delta_file=delta_file,
                              block_size=512,
                              threshold=60)

    dev_cfg = tmp_path / 'dev.manifest_cfg.yaml'
    dev_init.generate_developer_config(key_file=key_file,
                                       certificate_file=certificate_file,
                                       config=dev_cfg,
                                       do_overwrite=True)

    api_config_path = tmp_path / 'service_cfg.json'
    dev_init.generate_service_config(api_key='sdsdadadadsdadasdadsadasdas',
                                     api_url=defaults.API_GW,
                                     api_config_path=api_config_path)

    return {
        'fw_file': fw_file,
        'new_fw_file': new_fw_file,
        'delta_file': delta_file,
        'key_file': key_file,
        'certificate_file': certificate_file,
        'tmp_path': tmp_path,
        'dev_cfg': dev_cfg,
        'api_config_path': api_config_path
    }
Exemplo n.º 4
0
def test_cli_developer(happy_day_data, action):

    dev_cfg = happy_day_data['tmp_path'] / defaults.DEV_CFG
    payload_path = happy_day_data['fw_file'].as_posix()
    if '--combined-image' in action:
        generate_package(happy_day_data)
        payload_path = happy_day_data['package_data']['out_file_name']
    elif '-r' in action:
        payload_path = happy_day_data['delta_file'].as_posix()
    class_id = uuid.uuid4()
    vendor_id = uuid.uuid4()
    generate_developer_config(key_file=happy_day_data['key_file'],
                              cert_file=happy_day_data['certificate_file'],
                              config=dev_cfg,
                              class_id=class_id,
                              vendor_id=vendor_id)

    output_manifest = happy_day_data['tmp_path'] / 'manifest.bin'
    cmd = ['--debug'] + action + [
        '--priority',
        '100500',
        '--output',
        output_manifest.as_posix(),
        '--cache-dir',
        happy_day_data['tmp_path'].as_posix(),
        '--payload-url',
        'https://pelion.com/foo.bin?id=67567565576857',
        '--payload-path',
        payload_path,
        '--vendor-data',
        dev_cfg.as_posix(),
    ]

    if '-fw-version' not in action and \
        '--fw-migrate-ver' not in action:
        if action[0] == 'create-v1':
            cmd.extend(['--fw-version', '100500'])
        else:
            cmd.extend(['--fw-version', '100.500.666'])

    with conftest.working_directory(happy_day_data['tmp_path']):
        assert 0 == dev_tool.entry_point(cmd)
Exemplo n.º 5
0
def data_generator(tmp_path_factory, size, encryption_key : bytes = None):
    tmp_path = tmp_path_factory.mktemp("data")
    key_file = tmp_path / 'dev.key.pem'
    certificate_file = tmp_path / 'dev.cert.der'
    dev_init.generate_credentials(
        key_file=key_file,
        cert_file=certificate_file,
        cred_valid_time=8
    )
    bsdiff_version = armbsdiff.get_version().encode('utf-8')
    fw_file = tmp_path / 'fw.bin'
    fw_data = bsdiff_version + os.urandom(size - len(bsdiff_version))
    fw_file.write_bytes(fw_data)
    new_fw_file = tmp_path / 'new_fw.bin'
    new_fw_data = fw_data + os.urandom(512)
    new_fw_file.write_bytes(new_fw_data)
    delta_file = tmp_path / 'delta.bin'
    delta_tool.generate_delta(
        orig_fw=fw_file,
        new_fw=new_fw_file,
        output_delta_file=delta_file,
        block_size=512,
        threshold=60
    )

    if encryption_key:
        encrypted_fw_file = tmp_path / 'encrypted_fw.bin'
        encrypt_file(fw_file, encrypted_fw_file, encryption_key)
    else:
        encrypted_fw_file = None

    class_id = uuid.uuid4()
    vendor_id = uuid.uuid4()

    dev_cfg = tmp_path / 'dev.cfg.yaml'
    dev_init.generate_developer_config(
        key_file=key_file,
        cert_file=certificate_file,
        config=dev_cfg,
        class_id=class_id,
        vendor_id=vendor_id
    )

    api_config_path = tmp_path / 'dev.cloud_cfg.yaml'
    dev_init.generate_service_config(
        access_key='sdsdadadadsdadasdadsadasdas',
        api_url=defaults.API_GW,
        api_config_path=api_config_path
    )

    package_data = package_data_generator(tmp_path_factory,1024*512)

    return {
        'fw_file': fw_file,
        'new_fw_file': new_fw_file,
        'encrypted_fw_file': encrypted_fw_file,
        'delta_file': delta_file,
        'key_file': key_file,
        'certificate_file': certificate_file,
        'tmp_path': tmp_path,
        'dev_cfg': dev_cfg,
        'api_config_path': api_config_path,
        'package_data': package_data,
        'encryption_key': encryption_key
    }