コード例 #1
0
    def setUp(self):
        """
        Перед выполнением тестов создается два обычных пользователя и бот,
        создаются списки и покупки для пользователей
        """
        # создание тестового обычного пользователя с токеном и клиентом
        self.common_user = CustomUser.objects.create_user(
            telegram_id=123456, password='******')
        self.common_user_token = Token.generate_key(1)
        Token.objects.create(user=self.common_user, key=self.common_user_token)
        self.common_user_client = Client(HTTP_AUTHORIZATION='Token {}'.format(
            self.common_user_token),
                                         HTTP_ACCEPT_LANGUAGE='en-US')

        # создание тестового обыного пользователя
        self.another_common_user = CustomUser.objects.create_user(
            telegram_id=666666, password='******')
        self.not_authorized_client = Client(HTTP_ACCEPT_LANGUAGE='en-US')

        # создание бота с токеном и клиентом
        self.bot = CustomUser.objects.create_user(telegram_id=777777,
                                                  password='******',
                                                  is_bot=True)
        self.bot_token = Token.generate_key(1)
        Token.objects.create(user=self.bot, key=self.bot_token)
        self.bot_client = Client(HTTP_AUTHORIZATION='Token {}'.format(
            self.bot_token),
                                 HTTP_ACCEPT_LANGUAGE='en-US')

        # создание списков покупок
        self.common_user_products = PurchasesList.objects.create(
            author=self.common_user, title='products')
        self.common_user_birthday = PurchasesList.objects.create(
            author=self.common_user, title='birthday')
        self.common_user_car = PurchasesList.objects.create(
            author=self.common_user, title='car')
        self.another_user_list = PurchasesList.objects.create(
            author=self.another_common_user, title='some_list')

        # создание покупок
        self.cheese = Purchase.objects.create(
            purchase_list=self.common_user_products, title='chesee')
        self.milk = Purchase.objects.create(
            purchase_list=self.common_user_products, title='milk')
        self.bread = Purchase.objects.create(
            purchase_list=self.common_user_products, title='bread')
        self.cake = Purchase.objects.create(
            purchase_list=self.common_user_birthday, title='cake')
        self.another_purchase = Purchase.objects.create(
            purchase_list=self.another_user_list, title='another_purchase')
コード例 #2
0
def token_generate():
    queryset = MyUser.objects.all()
    Token.objects.filter(user__in=queryset).delete()
    new_tokens = [
        Token(user=u, key=Token.generate_key()) for u in queryset.iterator()
    ]
    Token.objects.bulk_create(new_tokens)
コード例 #3
0
    def post(self, request, format=None):
        serializer = LoginSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        token = Token.generate_key()
        return Response({
            'token': token,
        })
コード例 #4
0
def client(django_user_model):
    """ create user to token and DRF client """
    user = django_user_model.objects.create_user(
        username='******', password='******')
    token = Token.generate_key(user)
    client = APIClient()
    client.force_authenticate(user=user, token=token)
    return client
コード例 #5
0
    def post(self, request, format=None):
        serializer = RegisterSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        id = 4
        token = Token.generate_key()
        return Response({
            'id': id,
            'token': token,
        })
コード例 #6
0
 def post(self, request, format=None):
     data = JSONParser().parse(request)
     username = data['username']
     password = data['password']
     from django.contrib.auth import authenticate
     from rest_framework.authtoken.models import Token
     user = authenticate(username=username, password=password)
     if user is not None:
         return HttpResponse(Token.generate_key(user))
     else:
         return HttpResponse("Invalid!")
コード例 #7
0
ファイル: api.py プロジェクト: rezon99/spoolio-copy
def create_token(application, token='', valid_days=1000, scope='read write'):
    expires = timezone.now() + timedelta(days=valid_days)

    if not token or not isinstance(token, basestring):
        token = Token.generate_key(Token(application.user.username))

    return AccessToken.objects.create(user=application.user,
                                      token=token,
                                      application=application,
                                      expires=expires,
                                      scope=scope)
コード例 #8
0
 def post(self, request, *args, **kwargs):
     serializer = RequestForRegistrationSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     user_email = serializer.validated_data['email']
     confirm_code = Token.generate_key(self.request)
     UserConfirmCodeDb.objects.update_or_create(
         email=user_email,
         confirm_code=confirm_code,
     )
     send_mail(
         'Registration on Yamdb',
         f'Your access token: {confirm_code}.',
         None,
         [user_email]
     )
     return Response(f'Email was sent to {user_email}',
                     status=status.HTTP_200_OK)
コード例 #9
0
def get_token(strategy, user, response, *args, **kwargs):
    try:
        token = Token.objects.get(user=user)
    except Token.DoesNotExist:
        log.info("Create auth token for social user %s", user)
        token = Token(user=user)
        token.key = token.generate_key()
        token.save()
        up = UserProfile.objects.create(login=user.username)
        up.save()
        user.is_superuser = True
        user.save()
    log.info("authorize social user %s", user)
    login(strategy.request,
          user,
          backend='django.contrib.auth.backends.ModelBackend')
    return render(strategy.request, 'token.html', {
        'login': user.username,
        'token': token.key
    })
コード例 #10
0
 def test_generate_key_returns_string(self):
     """Ensure generate_key returns a string"""
     token = Token()
     key = token.generate_key()
     self.assertTrue(isinstance(key, six.string_types))
コード例 #11
0
ファイル: tests.py プロジェクト: Pycart/PyCart-Backend
class AdminDashboardViewsTestCase(TestCase):
    def setUp(self):
        self.client = APIClient()
        self.option = mommy.make('main.Option')
        self.items = mommy.make('main.Item', make_m2m=True, _quantity=50)
        self.item = mommy.make('main.Item', make_m2m=True)

        self.item_json = ItemSerializer(self.item).data
        self.status = mommy.make('main.Status')

        self.admin_user = mommy.make('main.ShopUser')
        self.admin_user.is_staff = True
        self.admin_user.save()
        self.reg_user = mommy.make('main.ShopUser')

        # Generate token for token auth based on the user in the requests
        self.admin_token = Token()
        self.admin_token.key = self.admin_token.generate_key()
        self.admin_token.user_id = self.admin_user.id
        self.admin_token.save()
        self.reg_token = Token()
        self.reg_token.key = self.reg_token.generate_key()
        self.reg_token.user_id = self.reg_user.id
        self.reg_token.save()

    def test_admin_create_item_view(self):
        Item.objects.get(id=self.item.id).delete()

        self.client.force_authenticate(self.admin_user, self.admin_token)
        request = self.client.post(reverse('create_item'), data=self.item_json, format='json')
        item = Item.objects.get(pk=52)

        self.assertEqual(request.status_code, 201)
        self.assertEqual(item.name, self.item_json['name'])
        self.assertEqual(item.description, self.item_json['description'])
        self.assertEqual(item.weight, decimal.Decimal(self.item_json['weight']))
        self.assertEqual(item.price, decimal.Decimal(self.item_json['price']))
        self.assertEqual(item.options.count(), len(self.item_json['options']))

    def test_admin_create_view_as_reg_user(self):
        Item.objects.get(id=self.item.id).delete()

        self.client.force_authenticate(self.reg_user, self.reg_token)
        request = self.client.post(reverse('create_item'), data=self.item_json, format='json')

        self.assertEqual(request.status_code, 403)
        with self.assertRaises(ObjectDoesNotExist):
            Item.objects.get(pk=52)

    def test_admin_item_list(self):
        self.client.force_authenticate(self.admin_user, self.admin_token)
        request = self.client.get(reverse('create_item'))
        data = json.loads(request.content)

        self.assertEqual(request.status_code, 200)
        self.assertEqual('count' in data, True)
        self.assertEqual('next' in data, True)
        self.assertEqual(len(data['results']), 25)

        for result in data['results']:
            self.assertEqual('id' in result, True)
            self.assertEqual('name' in result, True)
            self.assertEqual('description' in result, True)
            self.assertEqual('weight' in result, True)
            self.assertEqual('price' in result, True)
            self.assertEqual('options' in result, True)
            self.assertEqual('tags' in result, True)

    def test_admin_item_list_as_reg_user(self):
        self.client.force_authenticate(self.reg_user, self.reg_token)
        request = self.client.get(reverse('create_item'))
        self.assertEqual(request.status_code, 403)

    def test_admin_option_list(self):
        self.client.force_authenticate(self.admin_user, self.admin_token)
        request = self.client.get(reverse('create_option'))
        data = json.loads(request.content)

        self.assertEqual(request.status_code, 200)
        self.assertEqual(data['count'], 256)
        self.assertEqual(data['results'][0]['name'], self.option.name)

    def test_admin_option_list_as_reg_user(self):
        self.client.force_authenticate(self.reg_user, self.reg_token)
        request = self.client.get(reverse('create_option'))
        self.assertEqual(request.status_code, 403)

    def test_admin_option_detail(self):
        self.client.force_authenticate(self.admin_user, self.admin_token)
        request = self.client.get(reverse('option_detail_update', args=(1,)))
        data = json.loads(request.content)

        self.assertEqual(request.status_code, 200)
        self.assertEqual(data['id'], self.option.id)
        self.assertEqual(data['name'], self.option.name)

    def test_admin_option_detail_as_reg_user(self):
        self.client.force_authenticate(self.reg_user, self.reg_token)
        request = self.client.get(reverse('option_detail_update', args=(1,)))
        self.assertEqual(request.status_code, 403)

    def test_admin_status_list(self):
        self.client.force_authenticate(self.admin_user, self.admin_token)
        request = self.client.get(reverse('create_status'))
        data = json.loads(request.content)

        self.assertEqual(request.status_code, 200)
        self.assertEqual(data['count'], 1)
        self.assertEqual(data['results'][0]['status'], self.status.status)
        self.assertEqual(data['results'][0]['description'], self.status.description)

    def test_admin_status_list_as_reg_user(self):
        self.client.force_authenticate(self.reg_user, self.reg_token)
        request = self.client.get(reverse('create_status'))
        self.assertEqual(request.status_code, 403)

    def test_admin_status_detail(self):
        self.client.force_authenticate(self.admin_user, self.admin_token)
        request = self.client.get(reverse('status_detail_update', args=(1,)))
        data = json.loads(request.content)

        self.assertEqual(request.status_code, 200)
        self.assertEqual(data['status'], self.status.status)
        self.assertEqual(data['id'], self.status.id)
        self.assertEqual(data['description'], self.status.description)

    def test_admin_status_detail_as_reg_user(self):
        self.client.force_authenticate(self.reg_user, self.reg_token)
        request = self.client.get(reverse('status_detail_update', args=(1,)))
        self.assertEqual(request.status_code, 403)
コード例 #12
0
ファイル: models.py プロジェクト: stuartquin/soitgoes
 def save(self, *args, **kwargs):
     if not self.key:
         self.key = Token.generate_key()
     return super().save(*args, **kwargs)