Пример #1
0
    def test_it_works_with_signature(self, rf):
        recipe = RecipeFactory(approver=UserFactory(), signed=True)
        context = {"request": rf.get("/")}
        combined_serializer = SignedRecipeSerializer(instance=recipe, context=context)
        recipe_serializer = MinimalRecipeSerializer(instance=recipe, context=context)

        # Testing for shape of data, not contents
        assert combined_serializer.data == {
            "signature": {
                "signature": Whatever(),
                "timestamp": Whatever(),
                "x5u": Whatever(),
                "public_key": Whatever(),
            },
            "recipe": recipe_serializer.data,
        }
Пример #2
0
    def test_it_works_with_no_signature(self, rf):
        recipe = RecipeFactory(signed=False)
        action = recipe.action
        serializer = SignedRecipeSerializer(instance=recipe,
                                            context={"request": rf.get("/")})

        assert serializer.data == {
            "signature": None,
            "recipe": {
                "name": recipe.name,
                "id": recipe.id,
                "filter_expression": recipe.filter_expression,
                "revision_id": str(recipe.revision_id),
                "action": action.name,
                "arguments": recipe.arguments,
            },
        }
Пример #3
0
    def test_it_works_with_signature(self, rf):
        recipe = RecipeFactory(signed=True)
        context = {'request': rf.get('/')}
        combined_serializer = SignedRecipeSerializer(instance=recipe,
                                                     context=context)
        recipe_serializer = MinimalRecipeSerializer(instance=recipe,
                                                    context=context)

        # Testing for shape of data, not contents
        assert combined_serializer.data == {
            'signature': {
                'signature': Whatever(),
                'timestamp': Whatever(),
                'x5u': Whatever(),
                'public_key': Whatever(),
            },
            'recipe': recipe_serializer.data,
        }
Пример #4
0
    def test_it_works_with_no_signature(self, rf):
        recipe = RecipeFactory(approver=UserFactory(), signed=False)
        action = recipe.approved_revision.action
        serializer = SignedRecipeSerializer(instance=recipe, context={"request": rf.get("/")})

        assert serializer.data == {
            "signature": None,
            "recipe": {
                "name": recipe.approved_revision.name,
                "id": recipe.id,
                "filter_expression": recipe.approved_revision.filter_expression,
                "revision_id": str(recipe.approved_revision.id),
                "action": action.name,
                "arguments": recipe.approved_revision.arguments,
                "capabilities": sorted(recipe.approved_revision.capabilities),
                "uses_only_baseline_capabilities": False,
            },
        }
Пример #5
0
    def test_it_works_with_no_signature(self, rf):
        recipe = RecipeFactory(signed=False)
        action = recipe.action
        serializer = SignedRecipeSerializer(instance=recipe,
                                            context={'request': rf.get('/')})

        assert serializer.data == {
            'signature': None,
            'recipe': {
                'name': recipe.name,
                'id': recipe.id,
                'enabled': recipe.enabled,
                'filter_expression': recipe.filter_expression,
                'revision_id': recipe.revision_id,
                'action': action.name,
                'arguments': recipe.arguments,
                'last_updated': Whatever(),
                'is_approved': False,
            }
        }
Пример #6
0
 def signed(self, request, pk=None):
     recipes = self.filter_queryset(
         self.get_queryset()).exclude(signature=None)
     serializer = SignedRecipeSerializer(recipes, many=True)
     return Response(serializer.data)