Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ protected ImmutableSet<EntityDescriptor> resolve(Collection<GRN> entities) {
dependencyGraph.predecessors(dependency).stream().anyMatch(
predecessor -> !ModelTypes.STREAM_V1.equals(predecessor.type()))
)
// Ignore lookup tables, adapters, and caches as dependencies. Lookup tables don't have a corresponding
// GRN type registered and cannot be resolved for permission checks.
.filter(dependency -> !ModelTypes.LOOKUP_TABLE_V1.equals(dependency.type()) &&
!ModelTypes.LOOKUP_ADAPTER_V1.equals(dependency.type()) &&
!ModelTypes.LOOKUP_CACHE_V1.equals(dependency.type()))
// TODO: Work around from using the content pack dependency resolver:
// We've added stream_title content pack entities in https://github.com/Graylog2/graylog2-server/pull/17089,
// but in this context we want to return the actual dependent Stream to add additional permissions to.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import org.graylog.testing.GRNExtension;
import org.graylog.testing.mongodb.MongoDBExtension;
import org.graylog.testing.mongodb.MongoDBFixtures;
import org.graylog.testing.mongodb.MongoDBTestService;
import org.graylog.testing.mongodb.MongoJackExtension;
import org.graylog2.bindings.providers.MongoJackObjectMapperProvider;
import org.graylog2.contentpacks.ContentPackEntityResolver;
Expand Down Expand Up @@ -76,7 +75,7 @@ void setUp(@Mock ContentPackEntityResolver contentPackEntityResolver,
}

@Test
@DisplayName("Try a regular depency resolve")
@DisplayName("Try a regular dependency resolve")
void resolve() {
final String TEST_TITLE = "Test Stream Title";
final EntityExcerpt streamExcerpt = EntityExcerpt.builder()
Expand Down Expand Up @@ -183,6 +182,31 @@ void resolveEventProcedureDependency() {
assertThat(missingDependencies).hasSize(1);
}

@Test
@DisplayName("Lookup table dependencies are ignored during resolve")
void resolveWithLookupTableDependency() {
final EntityDescriptor eventDefDescriptor = EntityDescriptor.builder()
.type(ModelTypes.EVENT_DEFINITION_V1).id(ModelId.of("54e3deadbeefdeadbeefafff")).build();
final EntityDescriptor lookupTableDescriptor = EntityDescriptor.builder()
.type(ModelTypes.LOOKUP_TABLE_V1).id(ModelId.of("54e3deadbeefdeadbeefaffe")).build();
final EntityDescriptor streamDescriptor = EntityDescriptor.builder()
.type(ModelTypes.STREAM_V1).id(ModelId.of("54e3deadbeefdeadbeefaffd")).build();

final var dependencyGraph = GraphBuilder.directed().<EntityDescriptor>build();
dependencyGraph.addNode(eventDefDescriptor);
dependencyGraph.putEdge(eventDefDescriptor, lookupTableDescriptor);
dependencyGraph.putEdge(eventDefDescriptor, streamDescriptor);
when(contentPackEntityResolver.resolveEntityDependencyGraph(any())).thenReturn(dependencyGraph);
when(contentPackEntityResolver.listAllEntityExcerpts()).thenReturn(ImmutableSet.of());

final GRN eventDefGrn = grnRegistry.newGRN("event_definition", "54e3deadbeefdeadbeefafff");
final ImmutableSet<org.graylog.security.entities.EntityDescriptor> dependencies = entityDependencyResolver.resolve(eventDefGrn);

// The lookup_table dependency should be skipped, only the stream should remain
assertThat(dependencies).hasSize(1);
assertThat(dependencies.asList().get(0).id().toString()).isEqualTo("grn::::stream:54e3deadbeefdeadbeefaffd");
}

@Test
@DisplayName("Try to resolve with an output dependency")
void resolveWithOutputDependency() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ class EditQueryParameterModal extends React.Component<Props, State> {
}

openModal = () => {
this.setState({ showModal: true });
const { queryParameter } = this.props;

this.setState({ showModal: true, queryParameter });
};

_cleanState = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,12 +153,16 @@ const useExecutePreview = (config: EventDefinition['config']) => {
[executeJobResult, searchTypeId, startJob],
);

const hasEmbryonicParams = config?.query_parameters?.some(
(param: LookupTableParameterJsonEmbryonic) => param.embryonic,
);

useEffect(() => {
if (isPermittedToSeePreview(currentUser, config)) {
if (isPermittedToSeePreview(currentUser, config) && !hasEmbryonicParams) {
const search = constructSearch(config, searchTypeId, queryId);
executeSearch(search);
}
}, [config, currentUser, executeSearch, queryId, searchTypeId]);
}, [config, currentUser, executeSearch, hasEmbryonicParams, queryId, searchTypeId]);

return {
errors: results?.result?.errors,
Expand Down
Loading