package dockerregistry import ( "reflect" "strings" "testing" "github.com/docker/distribution/configuration" ) func TestDefaultMiddleware(t *testing.T) { checks := []struct { title, input, expect string }{ { title: "miss all middlewares", input: ` version: 0.1 storage: inmemory: {} `, expect: ` version: 0.1 storage: inmemory: {} middleware: registry: - name: openshift repository: - name: openshift storage: - name: openshift `, }, { title: "miss some middlewares", input: ` version: 0.1 storage: inmemory: {} middleware: registry: - name: openshift `, expect: ` version: 0.1 storage: inmemory: {} middleware: registry: - name: openshift repository: - name: openshift storage: - name: openshift `, }, { title: "all middlewares are in place", input: ` version: 0.1 storage: inmemory: {} middleware: registry: - name: openshift repository: - name: openshift storage: - name: openshift `, expect: ` version: 0.1 storage: inmemory: {} middleware: registry: - name: openshift repository: - name: openshift storage: - name: openshift `, }, { title: "check v1.0.8 config", input: ` version: 0.1 log: level: debug http: addr: :5000 storage: cache: layerinfo: inmemory filesystem: rootdirectory: /registry auth: openshift: realm: openshift middleware: repository: - name: openshift `, expect: ` version: 0.1 log: level: debug http: addr: :5000 storage: cache: layerinfo: inmemory filesystem: rootdirectory: /registry auth: openshift: realm: openshift middleware: registry: - name: openshift repository: - name: openshift storage: - name: openshift `, }, { title: "check v1.2.1 config", input: ` version: 0.1 log: level: debug http: addr: :5000 storage: cache: layerinfo: inmemory filesystem: rootdirectory: /registry delete: enabled: true auth: openshift: realm: openshift middleware: repository: - name: openshift options: pullthrough: true `, expect: ` version: 0.1 log: level: debug http: addr: :5000 storage: cache: layerinfo: inmemory filesystem: rootdirectory: /registry delete: enabled: true auth: openshift: realm: openshift middleware: registry: - name: openshift repository: - name: openshift options: pullthrough: true storage: - name: openshift `, }, { title: "check v1.3.0-alpha.3 config", input: ` version: 0.1 log: level: debug http: addr: :5000 storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /registry delete: enabled: true auth: openshift: realm: openshift middleware: registry: - name: openshift repository: - name: openshift options: acceptschema2: false pullthrough: true enforcequota: false projectcachettl: 1m blobrepositorycachettl: 10m storage: - name: openshift `, expect: ` version: 0.1 log: level: debug http: addr: :5000 storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /registry delete: enabled: true auth: openshift: realm: openshift middleware: registry: - name: openshift repository: - name: openshift options: acceptschema2: false pullthrough: true enforcequota: false projectcachettl: 1m blobrepositorycachettl: 10m storage: - name: openshift `, }, } for _, check := range checks { currentConfig, err := configuration.Parse(strings.NewReader(check.input)) if err != nil { t.Fatal(err) } expectConfig, err := configuration.Parse(strings.NewReader(check.expect)) if err != nil { t.Fatal(err) } setDefaultMiddleware(currentConfig) if !reflect.DeepEqual(currentConfig, expectConfig) { t.Errorf("%s: expected\n\t%#v\ngot\n\t%#v", check.title, expectConfig, currentConfig) } } }