SimpleExample - Source

Source code for SimpleExample

Verzeichnis-Struktur

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SimpleExample
├── src
│   ├── main
│   │   └── java
│   │       └── ch
│   │           └── itninja
│   │               └── labs
│   │                   ├── secrets
│   │                   │   └── Basic.java
│   │                   └── Main.java
│   └── test
│       └── java
│           └── ch
│               └── itninja
│                   └── labs
│                       ├── secrets
│                       │   └── BasicTest.java
│                       └── util
│                           └── ItNinjaOutput.java
├── .env
├── .gitignore
├── pom.xml
└── README.md

Dateien in SimpleExample

.env
1
2
3
4
# This file contains the required environment variables! To use it, rename it to '.env'.
# Always make sure that the '.env' file containing sensitive information is never committed to a Git repository!

SAMPLE_API_KEY=mein_geheimnis
.gitignore
1
.env
pom.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ch.itninja</groupId>
  <artifactId>itninja-labs-01-security</artifactId>
  <version>1.0.0</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  </properties>

  <dependencies>
    <!-- dotenv -->
    <dependency>
      <groupId>io.github.cdimascio</groupId>
      <artifactId>dotenv-java</artifactId>
      <version>3.0.0</version>
    </dependency>
    <!-- JUnit 5 -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.10.2</version>
      <scope>test</scope>
    </dependency>
    <!-- jBCrypt -->
    <dependency>
      <groupId>org.mindrot</groupId>
      <artifactId>jbcrypt</artifactId>
      <version>0.4</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
        <configuration>
          <release>17</release>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!-- Testausführung -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.2.5</version>
      </plugin>
    </plugins>
  </build>
</project>
README.md

Not able to display content!

src\main\java\ch\itninja\labs

Main.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
package ch.itninja.labs;

import ch.itninja.labs.secrets.Basic;

/**
 * Entry point for the It-Ninja basic secret example.
 */
public class Main {
    public static void main(String[] args) {
        String secret = Basic.getSecret();
        System.out.println("Das Geheimnis ist: '" + secret + "'");
    }
}

secrets

Basic.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package ch.itninja.labs.secrets;

import io.github.cdimascio.dotenv.Dotenv;
import java.util.MissingResourceException;

public class Basic {

    private static final String API_KEY_NAME = "SAMPLE_API_KEY";

    private Basic() {
        // Prevent instantiation
    }

    public static String getSecret (){
        Dotenv dotenv = Dotenv.configure()
                .ignoreIfMissing()
                .load();

        String apiKey = dotenv.get(API_KEY_NAME);
        if (apiKey == null) {
            throw new MissingResourceException(
                    "API key not set. Please check your .env file or environment variables.",
                    API_KEY_NAME,
                    null
            );
        }
        return apiKey;
    }
}

src\test\java\ch\itninja\labs\secrets

BasicTest.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package ch.itninja.labs.secrets;

import ch.itninja.labs.util.ItNinjaOutput;
import org.junit.jupiter.api.Test;
import org.mindrot.jbcrypt.BCrypt;

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

class BasicTest {

    @Test
    void givenBasicExample_whenCalled_thenReturnSecret() {
        // GIVEN
        String output = "Das Geheimnis ist: ";
        String hash = "$2a$10$HidiMxXZdm1KEIT1nqGoHeiQoiruQd0VrL8I6yz6L.DucmcKjXp2.";

        // WHEN
        String secret = Basic.getSecret();

        // THEN
        assertTrue(BCrypt.checkpw(secret, hash));

        ItNinjaOutput.PrintItNinjaOutput("Basic", "", output + "'" + secret + "'");
    }
}

src\test\java\ch\itninja\labs\util

ItNinjaOutput.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
package ch.itninja.labs.util;

public class ItNinjaOutput {
    public static void PrintItNinjaOutput(String lab, String input, String output) {
        System.out.println("<itninja input lab=\""+lab+"\">");
        System.out.println(input);
        System.out.println("</itninja>");
        System.out.println("<itninja output lab=\""+lab+"\">");
        System.out.println(output);
        System.out.println("</itninja>");
    }
}

Zuletzt geändert July 17, 2025: Fix prettier (781a4eb64)