Skip to content
/ apiunit Public

A unit test framework for testing API design guidelines in code-first spring projects.

License

Notifications You must be signed in to change notification settings

viadee/apiunit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ApiUnit

ApiUnit is a free and simple library for checking REST API guidelines of your Java code. It is based on ArchUnit and uses whose deliverd Java code structure. ApiUnit's focus is to automatically check compliance with guidelines in projects that are developed with Spring. The analysis takes into account common Spring annotations.

An Example

Add the Maven Central dependency to your project

Maven
<dependency>
    <groupId>de.viadee</groupId>
    <artifactId>apiunit</artifactId>
    <version>0.1.0</version>
</dependency>

Create a test

Check a couple of Guidelines/Rules

import de.viadee.apiunit.ApiUnitTest;
import de.viadee.apiunit.ApiUnitTestResultObject;
import de.viadee.apiunit.rules.EnumerationValuesMustBeCapitalizedNamesWithUnderscores;
import de.viadee.apiunit.rules.HttpGetMethodsMustNotHaveRequestBody;
import de.viadee.apiunit.rules.HttpPatchMethodsMustHaveRequestBody;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class MyApiGuidelineTest {

    @Test
    public void checkApiTests() {
        ApiUnitTest myTest = new ApiUnitTest("de.viadee.project");
        myTest.addRule(new EnumerationValuesMustBeCapitalizedNamesWithUnderscores());
        myTest.addRule(new HttpGetMethodsMustNotHaveRequestBody());
        myTest.addRule(new HttpPatchMethodsMustHaveRequestBody());
        myTest.addRule(...);
        ApiUnitTestResultObject testResult = myTest.check();
        System.out.println(testResult);
        assertEquals(0, testResult.getViolationCounter());
    }
}

Currently, the following rules are available for consideration:

  • HttpPutMethodsMustHaveRequestBody
  • HttpPostMethodsMustHaveRequestBody
  • HttpPatchMethodsMustHaveRequestBody
  • HttpGetMethodsMustNotHaveRequestBody
  • HttpDeleteMethodsMustNotHaveRequestBody
  • EnumerationValuesMustBeCapitalizedNamesWithUnderscores
  • EnumerationTypesMustBeUpperCamelCase
  • CollectionIdsMustMatchExpression
  • CollectionIdsMustBeValidCIdentifier

These rules are based on Google´s API design guide.

Check a single of Guideline/Rule

import de.viadee.apiunit.ApiUnitTestResultObject;
import de.viadee.apiunit.rules.CollectionIdsMustBeValidCIdentifier;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class MyApiGuidelineTest {

    @Test
    public void collectionIds_Must_Be_Valid_C_Identifier() {
        ApiUnitTestResultObject testResult = new CollectionIdsMustBeValidCIdentifier().check("de.viadee.project");
        assertEquals(0, testResult.getViolationCounter());
    }
}

License

ApiUnit is published under the Apache License 2.0, see http://www.apache.org/licenses/LICENSE-2.0 for details.

It redistributes some third party libraries:

About

A unit test framework for testing API design guidelines in code-first spring projects.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages