Exemplo n.º 1
0
    def test_should_update_data_package_if_preexists(self):
        with self.app.test_request_context():
            pub = Publisher.query.filter_by(name=self.publisher_one).one()
            pub.packages.append(
                MetaDataDB(name=self.package_two,
                           version='tag_one',
                           readme='old_readme'))
            db.session.add(pub)
            db.session.commit()
        latest_data = MetaDataDB.query.join(Publisher). \
            filter(Publisher.name == self.publisher_one,
                   MetaDataDB.name == self.package_two,
                   MetaDataDB.version == 'latest').one()
        tagged_data = MetaDataDB.query.join(Publisher). \
            filter(Publisher.name == self.publisher_one,
                   MetaDataDB.name == self.package_two,
                   MetaDataDB.version == 'tag_one').one()
        self.assertNotEqual(latest_data.readme, tagged_data.readme)

        MetaDataDB.create_or_update_version(self.publisher_one,
                                            self.package_two, 'tag_one')
        tagged_data = MetaDataDB.query.join(Publisher). \
            filter(Publisher.name == self.publisher_one,
                   MetaDataDB.name == self.package_two,
                   MetaDataDB.version == 'tag_one').one()
        self.assertEqual(latest_data.readme, tagged_data.readme)
Exemplo n.º 2
0
 def test_should_populate_new_versioned_data_package(self):
     MetaDataDB.create_or_update_version(self.publisher_one,
                                         self.package_two, 'tag_one')
     latest_data = MetaDataDB.query.join(Publisher). \
         filter(Publisher.name == self.publisher_one,
                MetaDataDB.name == self.package_two,
                MetaDataDB.version == 'latest').one()
     tagged_data = MetaDataDB.query.join(Publisher). \
         filter(Publisher.name == self.publisher_one,
                MetaDataDB.name == self.package_two,
                MetaDataDB.version == 'tag_one').one()
     self.assertEqual(latest_data.name, tagged_data.name)
     self.assertEqual('tag_one', tagged_data.version)
Exemplo n.º 3
0
def tag_data_package(publisher, package):
    """
    DPR metadata put operation.
    This API is responsible for tagging data package
    ---
    tags:
        - package
    parameters:
        - in: path
          name: publisher
          type: string
          required: true
          description: publisher name
        - in: path
          name: package
          type: string
          required: true
          description: package name
        - in: body
          name: version
          type: string
          required: true
          description: version value
    responses:
        400:
            description: JWT is invalid or req body is not valid
        401:
            description: Invalid Header for JWT
        403:
            description: User not allowed for operation
        404:
            description: User not found
        500:
            description: Internal Server Error
        200:
            description: Success Message
            schema:
                id: put_package_success
                properties:
                    status:
                        type: string
                        description: Status of the operation
                        default: OK
    """
    try:
        data = request.get_json()
        if 'version' not in data:
            return handle_error('ATTRIBUTE_MISSING', 'version not found', 400)

        bitstore = BitStore(publisher, package)
        status_db = MetaDataDB.create_or_update_version(publisher, package, data['version'])
        status_bitstore = bitstore.copy_to_new_version(data['version'])

        if status_db is False or status_bitstore is False:
            raise Exception("failed to tag data package")
        return jsonify({"status": "OK"}), 200
    except Exception as e:
        app.logger.error(e)
        return handle_error('GENERIC_ERROR', e.message, 500)