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, }
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, }, }
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, }
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, }, }
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, } }
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)