# Test_Reprepro_Uploaders

Provides unit tests and examples for the Reprepro_Uploaders lens.

Summary

Test_Reprepro_Uploaders | Provides unit tests and examples for the Reprepro_Uploaders lens.
Augeas Tests |
Reprepro_Uploaders.entry | A star condition gets mapped as direct value of the “allow” node.
Reprepro_Uploaders.entry | For simple keys, the “by” node gets the value “key” and the key ID gets mapped in a “key” subnode.
Reprepro_Uploaders.entry | Conditions are mapped inside a tree containing at least an “and” node and an “or” subnode.
Reprepro_Uploaders.entry | Check the field distribution
Reprepro_Uploaders.entry | Some checks use the “contain” keyword to loosen the condition.
Reprepro_Uploaders.entry | Some checks support multiple values, separated by ‘|’.
Reprepro_Uploaders.entry | Negated conditions are mapped with a “not” subnode.
Augeas Variables |
conf | A full configuration
Augeas Tests |
Reprepro_Uploaders.lns | Testing the full conf against Reprepro_Uploaders.lns
Reprepro_Uploaders.lns | Support group conditions, GH #283
Reprepro_Uploaders.lns | Declare group condition, GH #283
Reprepro_Uploaders.lns | Group inheritance, GH #283
Reprepro_Uploaders.lns | Empty group, GH #283
Reprepro_Uploaders.lns | Unused group, GH #283

### Augeas Tests

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow * by anybody\n" = { "allow" = "*" { "by" = "anybody" } }

A star condition gets mapped as direct value of the “allow” node.

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow * by key ABCD1234\n" = { "allow" = "*" { "by" = "key" { "key" = "ABCD1234" } } }

For simple keys, the “by” node gets the value “key” and the key ID gets mapped in a “key” subnode.

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow source 'bash' by anybody\n" = { "allow" { "and" { "or" = "source" { "or" = "bash" } } } { "by" = "anybody" } }

Conditions are mapped inside a tree containing at least an “and” node and an “or” subnode.

The value of each “or” subnode is the type of check (e.g. “source”), and this node contains “or” subnodes with the value(s) allowed for the check (e.g. “bash”).

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow distribution 'sid' by anybody\n" = { "allow" { "and" { "or" = "distribution" { "or" = "sid" } } } { "by" = "anybody" } }

Check the field distribution

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow source 'bash' and binaries contain 'bash-doc' by anybody\n" = { "allow" { "and" { "or" = "source" { "or" = "bash" } } } { "and" { "or" = "binaries" { "contain" } { "or" = "bash-doc" } } } { "by" = "anybody" } }

Some checks use the “contain” keyword to loosen the condition. In that case, a “contain” subnode is added. Be sure to check for it to know how the condition has to be checked.

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow sections 'main'|'restricted' and source 'bash' or binaries contain 'bash-doc' by anybody\n" = { "allow" { "and" { "or" = "sections" { "or" = "main" } { "or" = "restricted" } } } { "and" { "or" = "source" { "or" = "bash" } } { "or" = "binaries" { "contain" } { "or" = "bash-doc" } } } { "by" = "anybody" } }

Some checks support multiple values, separated by ‘|’. In this case, each value gets added to an “or” subnode.

### Reprepro_Uploaders.entry

> test Reprepro_Uploaders.entry get "allow not source 'bash' by anybody\n" = { "allow" { "and" { "or" = "source" { "not" } { "or" = "bash" } } } { "by" = "anybody" } }

Negated conditions are mapped with a “not” subnode.

### Augeas Variables

### conf

> let conf = "# ftpmaster allow * by key 74BF771E allow sections 'desktop/*' by anybody allow sections 'gforge/*' and binaries contain 'bzr' or not source '*melanie*'|'katya' by any key "

A full configuration

### Augeas Tests

### Reprepro_Uploaders.lns

> test Reprepro_Uploaders.lns get conf = { "#comment" = "ftpmaster" } { "allow" = "*" { "by" = "key" { "key" = "74BF771E" } } } { } { "allow" { "and" { "or" = "sections" { "or" = "desktop/*" } } } { "by" = "anybody" } } { "allow" { "and" { "or" = "sections" { "or" = "gforge/*" } } } { "and" { "or" = "binaries" { "contain" } { "or" = "bzr" } } { "or" = "source" { "not" } { "or" = "*melanie*" } { "or" = "katya" } } } { "by" = "key" { "key" = "any" } } }

Testing the full conf against Reprepro_Uploaders.lns

### Reprepro_Uploaders.lns

> test Reprepro_Uploaders.lns get "allow sections 'desktop/*' by group groupname\n" = { "allow" { "and" { "or" = "sections" { "or" = "desktop/*" } } } { "by" = "group" { "group" = "groupname" } } }

Support group conditions, GH #283

### Reprepro_Uploaders.lns

> test Reprepro_Uploaders.lns get "group groupname add key-id\n" = { "group" = "groupname" { "add" = "key-id" } }

Declare group condition, GH #283

### Reprepro_Uploaders.lns

> test Reprepro_Uploaders.lns get "group groupname contains group2\n" = { "group" = "groupname" { "contains" = "group2" } }

Group inheritance, GH #283

### Reprepro_Uploaders.lns

> test Reprepro_Uploaders.lns get "group groupname empty\n" = { "group" = "groupname" { "empty" } }

Empty group, GH #283

### Reprepro_Uploaders.lns

> test Reprepro_Uploaders.lns get "group groupname unused\n" = { "group" = "groupname" { "unused" } }

Unused group, GH #283

Parses reprepro’s uploaders files

> test Reprepro_Uploaders.entry get "allow * by anybody\n" = { "allow" = "*" { "by" = "anybody" } }

A star condition gets mapped as direct value of the “allow” node.

> let conf = "# ftpmaster allow * by key 74BF771E allow sections 'desktop/*' by anybody allow sections 'gforge/*' and binaries contain 'bzr' or not source '*melanie*'|'katya' by any key "

A full configuration

> test Reprepro_Uploaders.lns get conf = { "#comment" = "ftpmaster" } { "allow" = "*" { "by" = "key" { "key" = "74BF771E" } } } { } { "allow" { "and" { "or" = "sections" { "or" = "desktop/*" } } } { "by" = "anybody" } } { "allow" { "and" { "or" = "sections" { "or" = "gforge/*" } } } { "and" { "or" = "binaries" { "contain" } { "or" = "bzr" } } { "or" = "source" { "not" } { "or" = "*melanie*" } { "or" = "katya" } } } { "by" = "key" { "key" = "any" } } }

Testing the full conf against Reprepro_Uploaders.lns
Close