All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bakdata.schemaregistrymock.junit4.SchemaRegistryMockRule Maven / Gradle / Ivy

/*
 * MIT License
 *
 * Copyright (c) 2019 bakdata GmbH
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package com.bakdata.schemaregistrymock.junit4;

import com.bakdata.schemaregistrymock.SchemaRegistryMock;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

/**
 * 

The schema registry mock implements a few basic HTTP endpoints that are used by the Avro serdes.

* In particular, *
    *
  • you can register a schema
  • *
  • retrieve a schema by id.
  • *
  • list and get schema versions of a subject
  • *
* *

If you use the TestTopology of the fluent Kafka Streams test, you don't have to interact with this class at * all.

* *

Without the test framework, you can use the mock as follows:

*

 * public class SchemaRegistryMockTest {
 *     {@literal @Rule}
 *     public final SchemaRegistryMockRule schemaRegistry = new SchemaRegistryMockRule();
 *
 *     {@literal @Test}
 *     public void shouldRegisterKeySchema() throws IOException, RestClientException {
 *         final Schema keySchema = this.createSchema("key_schema");
 *         final int id = this.schemaRegistry.registerKeySchema("test-topic", keySchema);
 *
 *         final Schema retrievedSchema = this.schemaRegistry.getSchemaRegistryClient().getById(id);
 *         assertThat(retrievedSchema).isEqualTo(keySchema);
 *     }
 * }
* * To retrieve the url of the schema registry for a Kafka Streams config, please use {@link #getUrl()} */ public class SchemaRegistryMockRule extends SchemaRegistryMock implements TestRule { @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { SchemaRegistryMockRule.this.start(); try { base.evaluate(); } finally { SchemaRegistryMockRule.this.stop(); } } }; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy