github.com/zntrio/harp/v2@v2.0.9/pkg/tasks/container/recover_test.go (about) 1 // Licensed to Elasticsearch B.V. under one or more contributor 2 // license agreements. See the NOTICE file distributed with 3 // this work for additional information regarding copyright 4 // ownership. Elasticsearch B.V. licenses this file to you under 5 // the Apache License, Version 2.0 (the "License"); you may 6 // not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, 12 // software distributed under the License is distributed on an 13 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 // KIND, either express or implied. See the License for the 15 // specific language governing permissions and limitations 16 // under the License. 17 18 package container 19 20 import ( 21 "context" 22 "errors" 23 "io" 24 "testing" 25 26 "github.com/zntrio/harp/v2/pkg/sdk/cmdutil" 27 "github.com/zntrio/harp/v2/pkg/sdk/value" 28 "github.com/zntrio/harp/v2/pkg/sdk/value/encryption" 29 30 // Imported for tests. 31 _ "github.com/zntrio/harp/v2/pkg/sdk/value/encryption/jwe" 32 "github.com/zntrio/harp/v2/pkg/sdk/value/identity" 33 "github.com/zntrio/harp/v2/pkg/sdk/value/mock" 34 "github.com/zntrio/harp/v2/pkg/tasks" 35 ) 36 37 func TestRecoverTask_Run(t *testing.T) { 38 type fields struct { 39 JSONReader tasks.ReaderProvider 40 OutputWriter tasks.WriterProvider 41 Transformer value.Transformer 42 JSONOutput bool 43 } 44 type args struct { 45 ctx context.Context 46 } 47 tests := []struct { 48 name string 49 fields fields 50 args args 51 wantErr bool 52 }{ 53 { 54 name: "nil", 55 wantErr: true, 56 }, 57 { 58 name: "nil jsonReader", 59 fields: fields{ 60 JSONReader: nil, 61 }, 62 wantErr: true, 63 }, 64 { 65 name: "nil outputWriter", 66 fields: fields{ 67 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 68 OutputWriter: nil, 69 }, 70 wantErr: true, 71 }, 72 { 73 name: "nil transformer", 74 fields: fields{ 75 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 76 OutputWriter: cmdutil.DiscardWriter(), 77 Transformer: nil, 78 }, 79 wantErr: true, 80 }, 81 { 82 name: "jsonReader error", 83 fields: fields{ 84 JSONReader: cmdutil.FileReader("non-existent.json"), 85 OutputWriter: cmdutil.DiscardWriter(), 86 Transformer: identity.Transformer(), 87 }, 88 wantErr: true, 89 }, 90 { 91 name: "jsonReader not an identity", 92 fields: fields{ 93 JSONReader: cmdutil.FileReader("../../../test/fixtures/bundles/complete.json"), 94 OutputWriter: cmdutil.DiscardWriter(), 95 Transformer: identity.Transformer(), 96 }, 97 wantErr: true, 98 }, 99 { 100 name: "transformer error", 101 fields: fields{ 102 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 103 OutputWriter: cmdutil.DiscardWriter(), 104 Transformer: mock.Transformer(errors.New("test")), 105 }, 106 wantErr: true, 107 }, 108 { 109 name: "outputWriter error", 110 fields: fields{ 111 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 112 OutputWriter: func(ctx context.Context) (io.Writer, error) { 113 return nil, errors.New("test") 114 }, 115 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 116 }, 117 wantErr: true, 118 }, 119 { 120 name: "outputWriter closed", 121 fields: fields{ 122 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 123 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 124 OutputWriter: func(ctx context.Context) (io.Writer, error) { 125 return cmdutil.NewClosedWriter(), nil 126 }, 127 }, 128 wantErr: true, 129 }, 130 { 131 name: "outputWriter closed - json", 132 fields: fields{ 133 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 134 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 135 OutputWriter: func(ctx context.Context) (io.Writer, error) { 136 return cmdutil.NewClosedWriter(), nil 137 }, 138 JSONOutput: true, 139 }, 140 wantErr: true, 141 }, 142 // --------------------------------------------------------------------- 143 { 144 name: "valid - v1", 145 fields: fields{ 146 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v1.json"), 147 OutputWriter: cmdutil.DiscardWriter(), 148 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 149 }, 150 wantErr: false, 151 }, 152 { 153 name: "valid - v1 - json output", 154 fields: fields{ 155 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v2.json"), 156 OutputWriter: cmdutil.DiscardWriter(), 157 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 158 JSONOutput: true, 159 }, 160 wantErr: false, 161 }, 162 { 163 name: "valid - v2", 164 fields: fields{ 165 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v2.json"), 166 OutputWriter: cmdutil.DiscardWriter(), 167 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 168 }, 169 wantErr: false, 170 }, 171 { 172 name: "valid - v2 - json output", 173 fields: fields{ 174 JSONReader: cmdutil.FileReader("../../../test/fixtures/identity/security.v2.json"), 175 OutputWriter: cmdutil.DiscardWriter(), 176 Transformer: encryption.Must(encryption.FromKey("jwe:pbes2-hs512-a256kw:test")), 177 JSONOutput: true, 178 }, 179 wantErr: false, 180 }, 181 } 182 for _, tt := range tests { 183 t.Run(tt.name, func(t *testing.T) { 184 tr := &RecoverTask{ 185 JSONReader: tt.fields.JSONReader, 186 OutputWriter: tt.fields.OutputWriter, 187 Transformer: tt.fields.Transformer, 188 JSONOutput: tt.fields.JSONOutput, 189 } 190 if err := tr.Run(tt.args.ctx); (err != nil) != tt.wantErr { 191 t.Errorf("RecoverTask.Run() error = %v, wantErr %v", err, tt.wantErr) 192 } 193 }) 194 } 195 }