001package de.cuioss.test.generator.domain;
002
003import static de.cuioss.test.generator.Generators.fixedValues;
004import static de.cuioss.test.generator.Generators.integers;
005
006import java.util.ArrayList;
007import java.util.List;
008
009import de.cuioss.test.generator.TypedGenerator;
010import de.cuioss.tools.string.Joiner;
011
012/**
013 * Generates formally correct Distinguished Names
014 *
015 * @author Oliver Wolff
016 *
017 */
018public class DistinguishedNamesGenerator implements TypedGenerator<String> {
019
020    private final TypedGenerator<String> prefixes = fixedValues("ou", "o", "dc");
021    private final TypedGenerator<String> values =
022        fixedValues("proxies", "ID", "dc", "accounts", "groups", "roles", "services");
023
024    @Override
025    public String next() {
026        List<String> elements = new ArrayList<>();
027        int count = integers(2, 12).next();
028        for (var i = 0; i < count; i++) {
029            elements.add(prefixes.next() + "=" + values.next());
030        }
031        return Joiner.on(',').join(elements);
032    }
033
034    @Override
035    public Class<String> getType() {
036        return String.class;
037    }
038}