コード例 #1
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user = User(email='*****@*****.**',
                         first_name='joshua',
                         last_name='carey')
        self.user.insert()

        self.contact_payload = {
            'first_name': 'darrel',
            'last_name': 'wadsworth',
            'group': 'friend',
            'phone_number': '999-999-9999',
            'street_address': '45321 example way',
            'city': 'Denver',
            'state': 'Colorado',
            'zipcode': '80000'
        }

        self.contact = Contact(self.user, self.contact_payload)
        self.contact.insert()
コード例 #2
0
ファイル: test_delete_user.py プロジェクト: dcoleman21/Python
class DeleteUserTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(username='******', email='e1')
        self.user_1.insert()

    def tearDown(self):
        db.session.remove()
        db_drop_everything(db)
        self.app_context.pop()

    def test_happypath_delete_a_user(self):
        response = self.client.delete(f'/api/v1/users/{self.user_1.id}')
        self.assertEqual(204, response.status_code)
        self.assertEqual('', response.data.decode('utf-8'))

        # ensure it's really gone by getting a 404 if we try to fetch it again
        response = self.client.get(f'/api/v1/users/{self.user_1.id}')
        self.assertEqual(404, response.status_code)

    def test_sadpath_delete_bad_id_user(self):
        response = self.client.delete(f'/api/v1/users/9999999')
        self.assertEqual(404, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'error', int, 404)
        assert_payload_field_type_value(self, data, 'success', bool, False)
        assert_payload_field_type_value(self, data, 'message', str,
                                        'resource not found')
コード例 #3
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user = User(email='*****@*****.**',
                         first_name='joshua',
                         last_name='carey')
        self.user.insert()

        self.contact_payload = {
            'first_name': 'darrel',
            'last_name': 'wadsworth',
            'group': 'friend',
            'phone_number': '999-999-9999',
            'street_address': '45321 example way',
            'city': 'Denver',
            'state': 'Colorado',
            'zipcode': '80000'
        }

        # creates three contacts (all attributes differentiated by '_i') for user
        # TODO: good use case for factory bot

        for i in range(3):
            payload = deepcopy(self.contact_payload)
            for key, value in payload.items():
                payload[key] = value + f'_{i}'
            Contact(self.user, payload)
コード例 #4
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(name='Test User', email='email 2')
        self.user_1.insert()
        self.room_1 = Room(name='Kitchen',
                           image='exampleimage1.com',
                           user_id=self.user_1.id)
        self.room_1.insert()
        self.memory_1 = Memory(image='Picture string',
                               song='song url',
                               description='This is a great memory',
                               aromas='Roast in the oven',
                               x=123,
                               y=456,
                               room_id=self.room_1.id)
        self.memory_1.insert()

        self.payload = {
            'image': 'new_image',
            'description': 'new_description',
            'x': 200,
            'y': 500
        }
コード例 #5
0
    def test_happypath_get_a_room(self):
      user_1 = User(name='Test User', email='email 1')
      user_1.insert()
      room_1 = Room(name='Kitchen', image='exampleimage1.com', user_id=user_1.id)
      room_1.insert()
      room_2 = Room(name='Living Room', image='exampleimage2.com', user_id=user_1.id)
      room_2.insert()

      response = self.client.get(
      f'/api/v1/rooms/{room_2.id}'
      )
      self.assertEqual(200, response.status_code)

      data = json.loads(response.data.decode('utf-8'))
      assert_payload_field_type_value(self, data, 'success', bool, True)
      
      results = data['data']
     
      assert_payload_field_type_value(
            self, results, 'name', str, room_2.name
        )
      assert_payload_field_type_value(
          self, results, 'image', str, room_2.image
      )
      assert_payload_field_type_value(
          self, results, 'user_id', int, user_1.id
      )
コード例 #6
0
class DeleteUserTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user = User(email='*****@*****.**',
                         first_name='joshua',
                         last_name='carey')
        self.user.insert()

    def tearDown(self):
        db.session.remove()
        db.drop_all()
        self.app_context.pop()

    def test_happypath_user_delete(self):
        user = self.user
        response = self.client.delete(f'/users/{self.user.id}')
        self.assertEqual(204, response.status_code)

        response = self.client.get(f'/users/{user.id}')
        self.assertEqual(404, response.status_code)

    def test_sadpath_user_delete_invalid_id(self):
        response = self.client.delete(f'/users/9999')
        self.assertEqual(404, response.status_code)
コード例 #7
0
    def test_user_model(self):
        user = User(name='ian', email='*****@*****.**')
        user.insert()

        self.assertIsInstance(user, User)
        self.assertIsNotNone(user.id)
        self.assertEqual('ian', user.name)
        self.assertEqual('*****@*****.**', user.email)
コード例 #8
0
 def test_user_model_blank_email(self):
     try:
         user = User(name='ian', email='')
         user.insert()
     except IntegrityError:
         self.assertTrue(True)
     else:
         # we should not end up in here
         self.assertTrue(False)  # pragma: no cover
コード例 #9
0
 def test_user_model_missing_name(self):
     try:
         user = User(name=None, email='*****@*****.**')
         user.insert()
     except IntegrityError:
         self.assertTrue(True)
     else:
         # we should not end up in here
         self.assertTrue(False)  # pragma: no cover
コード例 #10
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(username='******', email='e1')
        self.user_1.insert()
コード例 #11
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user = User(email='*****@*****.**',
                         first_name='joshua',
                         last_name='carey')
        self.user.insert()
コード例 #12
0
    def test_user_model_with_forced_id(self):
        user = User(username='******',
                    email='*****@*****.**',
                    user_id=1)
        user.insert()

        self.assertIsInstance(user, User)
        self.assertIsNotNone(user.id)
        self.assertEqual(1, user.id)
        self.assertEqual('ian', user.username)
        self.assertEqual('*****@*****.**', user.email)
コード例 #13
0
    def test_user_model(self):
        user = User(name='ian', email='*****@*****.**')
        user.insert()
        room = Room(name='Kitchen', image='exampleimage1.com', user_id=user.id)
        room.insert()

        self.assertIsInstance(room, Room)
        self.assertIsNotNone(room.id)
        self.assertEqual('Kitchen', room.name)
        self.assertEqual('exampleimage1.com', room.image)
        self.assertEqual(user.id, room.user_id)
コード例 #14
0
    def test_user_model_trims_space(self):
        user = User(
            email='   [email protected] ',
            first_name='  joshua  ',
            last_name='  carey  ',
        )
        user.insert()

        self.assertEqual('joshua', user.first_name)
        self.assertEqual('carey', user.last_name)
        self.assertEqual('*****@*****.**', user.email)
コード例 #15
0
    def test_user_model(self):
        user = User(
            email='*****@*****.**',
            first_name='joshua',
            last_name='carey',
        )
        user.insert()

        self.assertIsInstance(user, User)
        self.assertIsNotNone(user.id)
        self.assertEqual('joshua', user.first_name)
        self.assertEqual('carey', user.last_name)
        self.assertEqual('*****@*****.**', user.email)
コード例 #16
0
  def setUp(self):
    self.app = create_app('testing')
    self.app_context = self.app.app_context()
    self.app_context.push()
    db.create_all()
    self.client = self.app.test_client() 

    self.user_1 = User(email="jpwizard", first_name="james", last_name="potter")
    self.user_1.insert()

    self.payload = {
      'email': 'jpwizard'
    }
コード例 #17
0
 def test_user_model_missing_email(self):
     try:
         user = User(
             email=None,
             first_name='joshua',
             last_name='carey',
         )
         user.insert()
     except IntegrityError:
         self.assertTrue(True)
     else:
         # should not end here
         self.assertTrue(False)
コード例 #18
0
 def test_user_model_blank_last_name(self):
     try:
         user = User(
             email='*****@*****.**',
             first_name='joshua',
             last_name='',
         )
         user.insert()
     except IntegrityError:
         self.assertTrue(True)
     else:
         # should not end here
         self.assertTrue(False)
コード例 #19
0
  def test_happypath_get_empty_rooms(self):
    user_1 = User(name='Test User', email='email 1')
    user_1.insert()

    response = self.client.get(
      f'/api/v1/users/{user_1.id}/rooms'
    )
    self.assertEqual(200, response.status_code)

    data = json.loads(response.data.decode('utf-8)'))
    assert_payload_field_type_value(self, data, 'success', bool, True)
    assert_payload_field_type(self, data, 'data', list)
    self.assertEqual(0, len(data['data']))
コード例 #20
0
class CreatememoryTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(name='Test User 2', email='email 3')
        self.user_1.insert()
        self.room_1 = Room(name='Kitchen',
                           image='exampleimage1.com',
                           user_id=self.user_1.id)
        self.room_1.insert()
        self.payload = {
            'image': 'new_image',
            'song': 'new_song',
            'description': 'This is a new description',
            'aromas': 'new_aroma',
            'x': 500,
            'y': 600
        }

    def tearDown(self):
        db.session.remove()
        db_drop_everything(db)
        self.app_context.pop()

    def test_happypath_create_memory(self):
        payload = deepcopy(self.payload)

        response = self.client.post(f'/api/v1/rooms/{self.room_1.id}/memories',
                                    json=payload,
                                    content_type='application/json')
        self.assertEqual(201, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type(self, data, 'id', int)
        memory_id = data['id']
        assert_payload_field_type_value(self, data, 'image', str,
                                        payload['image'].strip())
        assert_payload_field_type_value(self, data, 'song', str,
                                        payload['song'].strip())
        assert_payload_field_type_value(self, data, 'description', str,
                                        payload['description'].strip())
        assert_payload_field_type_value(self, data, 'aromas', str,
                                        payload['aromas'].strip())
        assert_payload_field_type_value(self, data, 'x', int, payload['x'])
        assert_payload_field_type_value(self, data, 'y', int, payload['y'])
コード例 #21
0
    def test_sad_path_user_has_zero_contacts(self):
        user = User(email='*****@*****.**',
                    first_name='example',
                    last_name='fake')
        user.insert()

        response = self.client.get(f'/users/{user.id}/contacts')

        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'contacts', list)
        self.assertEqual(0, len(data['contacts']))
コード例 #22
0
class GetUserTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(username='******', email='e1')
        self.user_1.insert()

    def tearDown(self):
        db.session.remove()
        db_drop_everything(db)
        self.app_context.pop()

    def test_happypath_get_a_user(self):
        response = self.client.get(f'/api/v1/users/{self.user_1.id}')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)

        assert_payload_field_type_value(self, data, 'username', str,
                                        self.user_1.username)
        assert_payload_field_type_value(self, data, 'email', str,
                                        self.user_1.email)

        user_id = data['id']
        assert_payload_field_type(self, data, 'links', dict)
        links = data['links']
        assert_payload_field_type_value(self, links, 'get', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'patch', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'delete', str,
                                        f'/api/v1/users/{user_id}')
        assert_payload_field_type_value(self, links, 'index', str,
                                        '/api/v1/users')

    def test_endpoint_sadpath_bad_id_user(self):
        response = self.client.get(f'/api/v1/users/9999')
        self.assertEqual(404, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'error', int, 404)
        assert_payload_field_type_value(self, data, 'success', bool, False)
        assert_payload_field_type_value(self, data, 'message', str,
                                        'resource not found')
コード例 #23
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(username='******', email='e1')
        self.user_1.insert()

        # adding extra padding in here to ensure we strip() it off later
        self.payload = {
            'username': '******',
            'email': ' new_email ',
        }
コード例 #24
0
    def test_happypath_get_empty_rooms(self):
        user_1 = User(name='Test User', email='email 1')
        user_1.insert()
        room_1 = Room(name='Kitchen',
                      image='exampleimage1.com',
                      user_id=user_1.id)
        room_1.insert()

        response = self.client.get(f'/api/v1/rooms/{room_1.id}/memories')
        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8)'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type(self, data, 'data', list)
        self.assertEqual(0, len(data['data']))
コード例 #25
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(email="jpwizard",
                           first_name="james",
                           last_name="potter")
        self.user_1.insert()

        self.user_2 = User(email="*****@*****.**",
                           first_name="hiawatha",
                           last_name="francisco")
        self.user_2.insert()
コード例 #26
0
class ShowUserTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(email="jpwizard",
                           first_name="james",
                           last_name="potter")
        self.user_1.insert()

        self.user_2 = User(email="*****@*****.**",
                           first_name="hiawatha",
                           last_name="francisco")
        self.user_2.insert()

    def tearDown(self):
        db.session.remove()
        db.drop_all()
        self.app_context.pop()

    def test_happypath_show_user(self):
        response = self.client.get(f'/users/{self.user_1.id}')

        self.assertEqual(200, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'success', bool, True)
        assert_payload_field_type_value(self, data, 'first_name', str,
                                        self.user_1.first_name)
        assert_payload_field_type_value(self, data, 'last_name', str,
                                        self.user_1.last_name)
        assert_payload_field_type_value(self, data, 'email', str,
                                        self.user_1.email)

    def test_invalid_user_id(self):
        response = self.client.get('/users/9999')

        error_message = 'The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.'

        data = json.loads(response.data.decode('utf-8'))

        self.assertEqual(404, response.status_code)
        assert_payload_field_type_value(self, data, 'message', str,
                                        error_message)
コード例 #27
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user = User(email='*****@*****.**',
                         first_name='joshua',
                         last_name='carey')
        self.user.insert()

        self.payload = {
            'first_name': 'jonathan',
            'last_name': 'bridges',
            'email': '*****@*****.**'
        }
コード例 #28
0
class DeletememoryTest(unittest.TestCase):
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self.client = self.app.test_client()

        self.user_1 = User(name='Test User', email='email 2')
        self.user_1.insert()
        self.room_1 = Room(name='Kitchen',
                           image='exampleimage1.com',
                           user_id=self.user_1.id)
        self.room_1.insert()
        self.memory_1 = Memory(image='Picture string',
                               song='song url',
                               description='This is a great memory',
                               aromas='Roast in the oven',
                               x=123,
                               y=456,
                               room_id=self.room_1.id)
        self.memory_1.insert()

    def tearDown(self):
        db.session.remove()
        db_drop_everything(db)
        self.app_context.pop()

    def test_happypath_delete_a_memory(self):
        response = self.client.delete(f'/api/v1/memories/{self.memory_1.id}')
        self.assertEqual(204, response.status_code)
        self.assertEqual('', response.data.decode('utf-8'))

        # ensure it's really gone by getting a 404 if we try to fetch it again
        response = self.client.get(f'/api/v1/memories/{self.memory_1.id}')
        self.assertEqual(404, response.status_code)

    def test_sadpath_delete_bad_id_memory(self):
        response = self.client.delete(f'/api/v1/memories/9999999')
        self.assertEqual(404, response.status_code)

        data = json.loads(response.data.decode('utf-8'))
        assert_payload_field_type_value(self, data, 'error', int, 404)
        assert_payload_field_type_value(self, data, 'success', bool, False)
        assert_payload_field_type_value(self, data, 'message', str,
                                        'resource not found')
コード例 #29
0
    def test_sadpath_email_not_unique(self):
        payload = deepcopy(self.payload)
        user = User(email=payload['email'],
                    first_name=payload['first_name'],
                    last_name=payload['last_name'])
        user.insert()

        response = self.client.post('/users',
                                    json=payload,
                                    content_type='application/json')
        self.assertEqual(400, response.status_code)

        data = json.loads(response.data.decode('utf-8'))

        assert_payload_field_type_value(self, data, 'success', bool, False)
        assert_payload_field_type_value(self, data, 'error', int, 400)
        assert_payload_field_type_value(self, data, 'errors', list,
                                        ["email is already taken"])
コード例 #30
0
    def test_user_model_unique_email(self):
        user = User(name='ian', email='*****@*****.**')
        user.insert()

        try:
            user = User(name='ian2', email='*****@*****.**')
            user.insert()
        except IntegrityError:
            self.assertTrue(True)
        else:
            # we should not end up in here
            self.assertTrue(False)  # pragma: no cover