Beispiel #1
0
    def test_put(self):
        """ Test that you can put """
        us = User(email="test@localhost", password=crypt('tset'))
        db_sess = get_session()
        db_sess.add(us)
        db_sess.commit()
        entry = Entry(userid=us.userid,
                      title="test",
                      completed=True,
                      description="test desc")
        db_sess.add(entry)
        db_sess.commit()
        response = self.session.post(self._route("/auth/login"),
                                     json={
                                         'email': us.email,
                                         'password': "******"
                                     })
        self.assertEqual(response.status_code, 200, response.text)

        new_entry = Entry(userid=us.userid,
                          title="test_updated",
                          completed=False,
                          description="test desc updated")
        response = self.session.put(self._route("/todo/entry/{}".format(
            entry.entryid)),
                                    json={
                                        'title': new_entry.title,
                                        'completed': new_entry.completed,
                                        'description': new_entry.description
                                    })
        db_sess.refresh(entry)

        self.assertEqual(response.status_code, 200, response.text)
        self.assertEqual(entry.as_dict(), response.json(), response.text)
        db_sess.close()
Beispiel #2
0
 def setUp(self):
     """
     Define the test client and other test variables
     """
     user = User.objects.create(username="******")
     self.entry_content = "Dear Diary, I wrote tests today"
     self.entry = Entry(content=self.entry_content, owner=user)
def add_entry():
    data = get_data(request)
    date = data.get("date")  # in millisecs
    distance = data.get("distance")
    time = data.get("time")

    if not date or not distance or not time:
        return get_error("date, distance, time must be provided"), 400

    try:
        date = int(date)
        date = datetime.utcfromtimestamp(date // 1000)
    except ValueError:  # year is out of range for example
        return get_error("date is maybe too big."), 400

    try:
        distance = float(distance)
        time = float(time)
    except ValueError:
        return get_error("distance and time must use international float format, for ex: 1.2, 1.34E4"), 400

    entry = Entry(user=g.user, date=date, distance=distance, time=time)
    entry.create()

    logger.info("Create new entry:%s", entry)

    return jsonify(get_entry_info(entry)), 201
Beispiel #4
0
def add_entry():
    data = get_data(request)
    date = data.get("date")  # in millisecs
    distance = data.get("distance")
    time = data.get("time")

    if not date or not distance or not time:
        return get_error("date, distance, time must be provided"), 400

    try:
        date = int(date)
        date = datetime.utcfromtimestamp(date // 1000)
    except ValueError:  # year is out of range for example
        return get_error("date is maybe too big."), 400

    try:
        distance = float(distance)
        time = float(time)
    except ValueError:
        return get_error(
            "distance and time must use international float format, for ex: 1.2, 1.34E4"
        ), 400

    entry = Entry(user=g.user, date=date, distance=distance, time=time)
    entry.create()

    logger.info("Create new entry:%s", entry)

    return jsonify(get_entry_info(entry)), 201
    def test_post_detail_non_relation(self):
        new_entry = Entry(body='test', title='test', user=User.objects.get(id=1))
        new_entry.save()

        headers = {'Content-Type': 'application/json',}
        request_url = self.live_server_url + '/api/v1/user/2/entries/%s/' % new_entry.id
        data = {'body': "hello, this is the body"}
        result = requests.put(request_url, data=simplejson.dumps(data), headers=headers)
        self.assertEqual(result.status_code, 400)
    def test_get_list_filter(self):
        user = User.objects.get(id=2)
        e = Entry(user=user, title='filter_me')
        e.save()

        result = requests.get(self.live_server_url + '/api/v1/user/2/entries/?title__startswith=filter')
        self.assertEqual(result.status_code, 200)
        self.assertEqual(len(simplejson.loads(result.text)['objects']), 1)

        result = requests.get(self.live_server_url + '/api/v1/user/2/entries/')
        self.assertEqual(result.status_code, 200)
        self.assertEqual(len(simplejson.loads(result.text)['objects']), 2)
Beispiel #7
0
class ModelTestCase(TestCase):
    """This class defines the test suite for the entry model."""
    def setUp(self):
        """Define the test client and other test variables."""
        self.entry_text = "Write code for BuJo API"
        self.user = User.objects.create_user(username='******', password='******')
        self.entry = Entry(text=self.entry_text, user=self.user)

    def test_model_can_create_an_entry(self):
        """Test the entry model can create an entry."""
        old_count = Entry.objects.count()
        self.entry.save()
        new_count = Entry.objects.count()
        self.assertNotEqual(old_count, new_count)
Beispiel #8
0
    def mutate(self, info, date, distance, time, **kwargs):
        id = kwargs.get('id')

        if id is not None:
            entry = Entry.objects.get(pk=id)
            entry.date = date
            entry.distance = distance
            entry.time = time
        else:
            username = kwargs.get('user')
            user = User.objects.get(username=username).id
            entry = Entry(user=User.objects.get(pk=user),
                          date=date,
                          distance=distance,
                          time=time)
        entry.save()
        ok = True
        return CreateEntry(entry=entry)
Beispiel #9
0
class ModelTestCase(TestCase):
    """
    This class defines the test suite for the Entry model
    """

    def setUp(self):
        """
        Define the test client and other test variables
        """
        user = User.objects.create(username="******")
        self.entry_content = "Dear Diary, I wrote tests today"
        self.entry = Entry(content=self.entry_content, owner=user)

    def test_model_can_create_an_entry(self):
        """
        Test that the Entry model can create a diary entry
        """
        old_count = Entry.objects.count()
        self.entry.save()
        new_count = Entry.objects.count()
        self.assertNotEqual(old_count, new_count)
Beispiel #10
0
    def test_list(self):
        """ Test that you can list """
        us = User(email="test@localhost", password=crypt('tset'))
        db_sess = get_session()
        db_sess.add(us)
        db_sess.commit()

        e_a = Entry(userid=us.userid,
                    title="test",
                    completed=True,
                    description="test desc")
        e_b = Entry(userid=us.userid,
                    title="test2",
                    completed=False,
                    description="test2 desc")

        db_sess.add(e_a)
        db_sess.add(e_b)
        db_sess.commit()

        response = self.session.post(self._route("/auth/login"),
                                     json={
                                         'email': us.email,
                                         'password': "******"
                                     })
        self.assertEqual(response.status_code, 200, response.text)

        response = self.session.get(self._route("/todo/entry"), )
        expected = [e_a.as_dict(), e_b.as_dict()]
        db_sess.close()
        self.assertEqual(response.json(), expected, response.text)
        self.assertEqual(response.status_code, 200, response.text)
Beispiel #11
0
    def post(self):
        """
        Creates a new entry

        :return: The created entry
        """
        args = entry_parser.parse_args()
        # Python black magic: unpacks the arguments by name.
        # Equivalent to Entry(customer='customer_name',...)
        entry = Entry(**args)
        db.session.add(entry)
        db.session.commit()
        return entry, 201
Beispiel #12
0
def post_handler():
    """ Post todo entries for logged in user """
    try:
        body = request.json
        title = body.pop('title')
        completed = body.pop('completed', None)
        description = body.pop('description')
        if body:
            abort(400)

        user = current_user
        entry = Entry(title=title,
                      completed=completed,
                      description=description,
                      userid=user.userid)
        session = get_session()
        session.add(entry)
        session.commit()
    except (KeyError):
        abort(400)
    response = make_response(json.dumps(entry.as_dict()), 201)
    session.close()
    return response
Beispiel #13
0
    def handle(self, *args, **options):
        data = requests.get(
            'https://www.arb-silva.de/fileadmin/silva_databases/release_128/Exports/SILVA_128_LSURef_tax_silva.fasta.gz'
        )
        fasta = gzip.decompress(data.content).decode()
        entries = fasta.split('>')[1:5001]

        _labels_ = set()

        for e in entries:
            fasta_parser = FastaParser(e)

            sequence = fasta_parser.sequence
            access_id = fasta_parser.access_id
            kingdom_label = fasta_parser.kingdom
            species_label = fasta_parser.species

            if not kingdom_label in _labels_:
                _labels_.add(kingdom_label)
                kingdom = Kingdom(label=kingdom_label)
                kingdom.save()
            else:
                kingdom = Kingdom.objects.get(label=kingdom_label)

            if not species_label in _labels_:
                _labels_.add(species_label)
                species = Species(label=species_label)
                species.save()
            else:
                species = Species.objects.get(label=species_label)

            e = Entry(access_id=access_id,
                      kingdom=kingdom,
                      species=species,
                      sequence=sequence)
            e.save()
Beispiel #14
0
    def post(self, request):
        entry = Entry()
        # form = UploadFileForm(request.POST, request.FILES)
        files = request.FILES.getlist('fileupload')  # 获得多个文件上传进来的文件列表。
        # if form.is_valid():  # 表单数据如果合法
        if request.data['description']:
            entry.description = request.data['description']
        if request.data['tags']:
            entry.tags = request.data['tags']
        if request.data['name']:
            entry.name = request.data['name']
        img_list = []
        if files:
            for f in files:
                img = Img(file=f)
                img.save()
                img_list.append(img.get_id())
        entry.imgs = img_list
        entry.save()

        # generating json response array
        result = [{
            "id": entry.id.__str__(),
            "name": entry.name,
            "imgs": entry.imgs,
            "description": entry.description,
            "tags": entry.tags,
            "modified": entry.modified,
        }]
        response_data = json.dumps(result, cls=DjangoJSONEncoder)

        # checking for json data type
        # big thanks to Guy Shapiro
        # if noajax:
        #     if request.META['HTTP_REFERER']:
        #         redirect(request.META['HTTP_REFERER'])

        if "application/json" in request.META['HTTP_ACCEPT_ENCODING']:
            content_type = 'application/json'
        else:
            content_type = 'text/plain'
        return HttpResponse(response_data, content_type=content_type)
Beispiel #15
0
    def test_get_json_access_url_params(self):
        user = User(self.username, '*****@*****.**', self.hashed_password)
        db.session.add(user)

        entry = Entry(self.test_key, self.test_value, 1)
        db.session.add(entry)
        db.session.commit()

        #wrong username
        response = self.app.get(
            '/get/some_value?username={}&api_key=wrong_pass'.format(
                self.username))
        self.assertEqual(
            json.loads(str(response.get_data(as_text=True))),
            {'value': 'Your username or api_token url params are invalid '})

        #wrong password
        response = self.app.get(
            '/get/some_value?username=wrong_user&api_key={}'.format(
                self.password))
        self.assertEqual(
            json.loads(response.get_data(as_text=True)),
            {'value': 'Your username or api_token url params are invalid '})

        #no value
        response = self.app.get(
            '/get/some_value?username={}&api_key={}'.format(
                self.username, self.password))
        self.assertEqual(json.loads(response.get_data(as_text=True)),
                         {'value': 'No value with this key in db'})

        #get key with success
        response = self.app.get('/get/{}?username={}&api_key={}'.format(
            self.test_key, self.username, self.password))
        self.assertEqual(json.loads(response.get_data(as_text=True)), {
            'key': self.test_key,
            'user_id': user.id,
            'value': self.test_value
        })
Beispiel #16
0
    def test_delete(self):
        """ Test that you can delete """
        us = User(email="test@localhost", password=crypt('tset'))
        db_sess = get_session()
        db_sess.add(us)
        db_sess.commit()
        entry = Entry(userid=us.userid,
                      title="test",
                      completed=True,
                      description="test desc")
        db_sess.add(entry)
        db_sess.commit()
        response = self.session.post(self._route("/auth/login"),
                                     json={
                                         'email': us.email,
                                         'password': "******"
                                     })
        self.assertEqual(response.status_code, 200, response.text)

        response = self.session.delete(
            self._route("/todo/entry/{}".format(entry.entryid)))
        self.assertEqual(response.status_code, 200, response.text)
        db_sess.close()
Beispiel #17
0
    def test_set_json_access_url_params(self):
        user = User(self.username, '*****@*****.**', self.hashed_password)
        db.session.add(user)

        entry = Entry(self.test_key, self.test_value, 1)
        db.session.add(entry)
        db.session.commit()

        #wrong username
        response = self.app.post(
            '/set/?username={}&api_key=wrong_pass'.format(self.username),
            data=json.dumps(dict(key=self.test_key, value=self.test_value)),
            content_type='application/json')
        self.assertEqual(
            json.loads(str(response.get_data(as_text=True))),
            {'value': 'Your username or api_token url params are invalid '})

        #wrong password
        response = self.app.post(
            '/set/?username=wrong_user&api_key={}'.format(self.password),
            data=json.dumps(dict(key=self.test_key, value=self.test_value)),
            content_type='application/json')
        self.assertEqual(
            json.loads(response.get_data(as_text=True)),
            {'value': 'Your username or api_token url params are invalid '})

        #set key with success
        response = self.app.post(
            '/set/?username={}&api_key={}'.format(self.username,
                                                  self.password),
            data=json.dumps(dict(key=self.test_key_2, value=self.test_value)),
            content_type='application/json')
        self.assertEqual(
            json.loads(response.get_data(as_text=True)), {
                'value':
                'The entry with key {} was succesfully created'.format(
                    self.test_key_2)
            })

        #reassign existing key
        response = self.app.post(
            '/set/?username={}&api_key={}'.format(self.username,
                                                  self.password),
            data=json.dumps(dict(key=self.test_key_2, value=self.test_value)),
            content_type='application/json')
        self.assertEqual(
            json.loads(response.get_data(as_text=True)), {
                'value':
                'The entry {} already existed and was succesfully reassigned'.
                format(self.test_key_2)
            })

        #success get key with user that created it
        response = self.app.get('/get/{}?username={}&api_key={}'.format(
            self.test_key_2, self.username, self.password))
        self.assertEqual(json.loads(response.get_data(as_text=True)), {
            'key': self.test_key_2,
            'user_id': user.id,
            'value': self.test_value
        })

        user2 = User('new_user', '*****@*****.**', self.hashed_password)
        db.session.add(user2)
        db.session.commit()

        #fail get key old key with new user
        response = self.app.get('/get/{}?username={}&api_key={}'.format(
            self.test_key_2, 'new_user', self.password))
        self.assertEqual(json.loads(response.get_data(as_text=True)),
                         {'value': 'No value with this key in db'})
Beispiel #18
0
 def setUp(self):
     """Define the test client and other test variables."""
     self.entry_text = "Write code for BuJo API"
     self.user = User.objects.create_user(username='******', password='******')
     self.entry = Entry(text=self.entry_text, user=self.user)