Skip to content

Commit

Permalink
Added first test and gha
Browse files Browse the repository at this point in the history
  • Loading branch information
sgeulette committed Oct 10, 2024
1 parent 9c05405 commit 1e42ee1
Show file tree
Hide file tree
Showing 7 changed files with 140 additions and 8 deletions.
62 changes: 62 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Push tests
# run-name: ${{ github.actor }} push tests

on:
push:
pull_request:

jobs:
test:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- python: 2.7.18
plone: 4.3
# - python: 3.7.14
# plone: 5.2
# - python: 3.10.11
# plone: "6.0"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up pyenv and Python
uses: "gabrielfalcao/pyenv-action@v14"
with:
default: "${{ matrix.python }}"
- name: Setup Env
run: |
pip install --upgrade pip
pip install -r requirements-${{ matrix.plone }}.txt
- name: Cache eggs
uses: actions/cache@v3
env:
cache-name: cache-eggs
with:
path: ~/buildout-cache/eggs
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ matrix.python }}-${{ matrix.plone }}
# - name: Cache eggs restore
# id: cache-restore
# uses: actions/cache/restore@v3
# env:
# cache-name: cache-eggs
# with:
# path: ~/buildout-cache/eggs
# key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ matrix.python }}-${{ matrix.plone }}
- name: buildout
run: |
sed -ie "s#test.cfg#test-${{matrix.plone}}.cfg#" gha.cfg
buildout -c gha.cfg annotate
buildout -c gha.cfg
# - name: Cache eggs save
# uses: actions/cache/save@v3
# with:
# path: ~/buildout-cache/eggs
# key: ${{ steps.cache-restore.outputs.cache-primary-key }}
- name: test
run: |
bin/test -t !robot
4 changes: 4 additions & 0 deletions gha.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[buildout]
extends =
test.cfg
eggs-directory = ~/buildout-cache/eggs
8 changes: 0 additions & 8 deletions src/imio/fpaudit/browser/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,6 @@ def validate_settings(data): # noqa
)
)
ids.append(entry["log_id"])
if not entry["audit_log"].strip():
raise Invalid(
_(u"You must provide a value for audit file name"),
)
if not entry["log_format"].strip():
raise Invalid(
_(u"You must provide a value for audit log format"),
)


class FPAuditSettings(RegistryEditForm):
Expand Down
3 changes: 3 additions & 0 deletions src/imio/fpaudit/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
xmlns:plone="http://namespaces.plone.org/plone"
i18n_domain="imio.fpaudit">

<include package="collective.fingerpointing" />
<include package="collective.documentgenerator" />

<include package="plone.app.controlpanel" file="permissions.zcml" />
<include package=".browser" />

Expand Down
37 changes: 37 additions & 0 deletions src/imio/fpaudit/testing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
from plone.app.testing import applyProfile
from plone.app.testing import FunctionalTesting
from plone.app.testing import IntegrationTesting
from plone.app.testing import PLONE_FIXTURE
from plone.app.testing import PloneSandboxLayer
from plone.app.testing import setRoles
from plone.app.testing import TEST_USER_ID

import imio.fpaudit


class ImioFPAuditLayer(PloneSandboxLayer):

defaultBases = (PLONE_FIXTURE,)

def setUpZope(self, app, configurationContext):
# Load any other ZCML that is required for your tests.
# The z3c.autoinclude feature is disabled in the Plone fixture base layer.
self.loadZCML(package=imio.fpaudit)

def setUpPloneSite(self, portal):
applyProfile(portal, "imio.fpaudit:default")
setRoles(portal, TEST_USER_ID, ["Manager"])


IMIO_FPAUDIT_FIXTURE = ImioFPAuditLayer()


IMIO_FPAUDIT_INTEGRATION_TESTING = IntegrationTesting(
bases=(IMIO_FPAUDIT_FIXTURE,), name="ImioFPAuditLayer:IntegrationTesting"
)


IMIO_FPAUDIT_FUNCTIONAL_TESTING = FunctionalTesting(
bases=(IMIO_FPAUDIT_FIXTURE,), name="ImioFPAuditLayer:FunctionalTesting"
)
Empty file.
34 changes: 34 additions & 0 deletions src/imio/fpaudit/tests/test_browser_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from imio.fpaudit.browser.settings import IFPAuditSettings
from imio.fpaudit.testing import IMIO_FPAUDIT_INTEGRATION_TESTING
from z3c.form import validator
from zope.interface import Invalid

import unittest


class TestSettings(unittest.TestCase):

layer = IMIO_FPAUDIT_INTEGRATION_TESTING

def setUp(self):
self.portal = self.layer["portal"]

def test_validate_settings(self):
"""Check invariant"""
invariants = validator.InvariantsValidator(None, None, None, IFPAuditSettings, None)
# test id uniqueness
data = {
"log_entries": [
{"log_id": u"a", "audit_log": u"a.log", "log_format": u"%(asctime)s - %(message)s"},
{"log_id": u"b", "audit_log": u"b.log", "log_format": u"%(asctime)s - %(message)s"},
]
}
self.assertFalse(invariants.validate(data))
data = {
"log_entries": [
{"log_id": u"a", "audit_log": u"a.log", "log_format": u"%(asctime)s - %(message)s"},
{"log_id": u"a", "audit_log": u"b.log", "log_format": u"%(asctime)s - %(message)s"},
]
}
errors = invariants.validate(data)
self.assertTrue(isinstance(errors[0], Invalid))

0 comments on commit 1e42ee1

Please sign in to comment.