diff --git a/console/src/app/modules/filter-events/filter-events.component.html b/console/src/app/modules/filter-events/filter-events.component.html
index 7f73b8eb1..07deb4d0b 100644
--- a/console/src/app/modules/filter-events/filter-events.component.html
+++ b/console/src/app/modules/filter-events/filter-events.component.html
@@ -5,6 +5,7 @@
(click)="showFilter = !showFilter"
class="cnsl-action-button"
#triggereventfilter="cdkOverlayOrigin"
+ data-e2e="open-filter-button"
>
{{ 'ACTIONS.FILTER' | translate }}
@@ -29,7 +30,7 @@
{{ 'IAM.EVENTS.TYPE' | translate }} |
-
+ |
{{ event.type.localized.localizedMessage }}
diff --git a/e2e/cypress/e2e/events/events.cy.ts b/e2e/cypress/e2e/events/events.cy.ts
new file mode 100644
index 000000000..65362b612
--- /dev/null
+++ b/e2e/cypress/e2e/events/events.cy.ts
@@ -0,0 +1,18 @@
+describe('events', () => {
+ beforeEach(() => {
+ cy.context().as('ctx');
+ });
+
+ it('events can be filtered', () => {
+ const eventTypeEnglish = 'Instance added';
+ cy.visit('/events');
+ cy.get('[data-e2e="event-type-cell"]').should('have.length', 20);
+ cy.get('[data-e2e="open-filter-button"]').click();
+ cy.get('[data-e2e="event-type-filter-checkbox"]').click();
+ cy.get('#mat-select-value-1').click();
+ cy.contains('mat-option', eventTypeEnglish).click();
+ cy.get('body').click();
+ cy.get('[data-e2e="filter-finish-button"]').click();
+ cy.contains('[data-e2e="event-type-cell"]', eventTypeEnglish).should('have.length.at.least', 1);
+ });
+});
diff --git a/internal/query/event.go b/internal/query/event.go
index 6d238ebab..b54322882 100644
--- a/internal/query/event.go
+++ b/internal/query/event.go
@@ -34,18 +34,25 @@ func (q *Queries) SearchEvents(ctx context.Context, query *eventstore.SearchQuer
return nil, err
}
+ if auditLogRetention != 0 {
+ events = filterAuditLogRetention(ctx, events, auditLogRetention)
+ }
+
+ return q.convertEvents(ctx, events), nil
+}
+
+func filterAuditLogRetention(ctx context.Context, events []eventstore.Event, auditLogRetention time.Duration) []eventstore.Event {
callTime := call.FromContext(ctx)
if callTime.IsZero() {
callTime = time.Now()
}
- for i, event := range events {
- if event.CreationDate().Before(callTime.Add(-auditLogRetention)) {
- events = events[:i]
- break
+ filteredEvents := make([]eventstore.Event, 0, len(events))
+ for _, event := range events {
+ if event.CreationDate().After(callTime.Add(-auditLogRetention)) {
+ filteredEvents = append(filteredEvents, event)
}
}
-
- return q.convertEvents(ctx, events, auditLogRetention), nil
+ return filteredEvents
}
func (q *Queries) SearchEventTypes(ctx context.Context) []string {
@@ -56,7 +63,7 @@ func (q *Queries) SearchAggregateTypes(ctx context.Context) []string {
return q.eventstore.AggregateTypes()
}
-func (q *Queries) convertEvents(ctx context.Context, events []eventstore.Event, auditLogRetention time.Duration) []*Event {
+func (q *Queries) convertEvents(ctx context.Context, events []eventstore.Event) []*Event {
result := make([]*Event, len(events))
users := make(map[string]*EventEditor)
for i, event := range events {
|