github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/session/test/generate.go (about) 1 package sessiontest 2 3 import ( 4 acltest "github.com/TrueCloudLab/frostfs-api-go/v2/acl/test" 5 "github.com/TrueCloudLab/frostfs-api-go/v2/internal/random" 6 refstest "github.com/TrueCloudLab/frostfs-api-go/v2/refs/test" 7 "github.com/TrueCloudLab/frostfs-api-go/v2/session" 8 statustest "github.com/TrueCloudLab/frostfs-api-go/v2/status/test" 9 ) 10 11 func GenerateCreateRequestBody(empty bool) *session.CreateRequestBody { 12 m := new(session.CreateRequestBody) 13 14 if !empty { 15 m.SetExpiration(555) 16 m.SetOwnerID(refstest.GenerateOwnerID(false)) 17 } 18 19 return m 20 } 21 22 func GenerateCreateRequest(empty bool) *session.CreateRequest { 23 m := new(session.CreateRequest) 24 25 if !empty { 26 m.SetBody(GenerateCreateRequestBody(false)) 27 } 28 29 m.SetMetaHeader(GenerateRequestMetaHeader(empty)) 30 m.SetVerificationHeader(GenerateRequestVerificationHeader(empty)) 31 32 return m 33 } 34 35 func GenerateCreateResponseBody(empty bool) *session.CreateResponseBody { 36 m := new(session.CreateResponseBody) 37 38 if !empty { 39 m.SetID([]byte{1, 2, 3}) 40 m.SetSessionKey([]byte{4, 5, 6}) 41 } 42 43 return m 44 } 45 46 func GenerateCreateResponse(empty bool) *session.CreateResponse { 47 m := new(session.CreateResponse) 48 49 if !empty { 50 m.SetBody(GenerateCreateResponseBody(false)) 51 } 52 53 m.SetMetaHeader(GenerateResponseMetaHeader(empty)) 54 m.SetVerificationHeader(GenerateResponseVerificationHeader(empty)) 55 56 return m 57 } 58 59 func GenerateResponseVerificationHeader(empty bool) *session.ResponseVerificationHeader { 60 return generateResponseVerificationHeader(empty, true) 61 } 62 63 func generateResponseVerificationHeader(empty, withOrigin bool) *session.ResponseVerificationHeader { 64 m := new(session.ResponseVerificationHeader) 65 66 if !empty { 67 m.SetBodySignature(refstest.GenerateSignature(false)) 68 } 69 70 m.SetMetaSignature(refstest.GenerateSignature(empty)) 71 m.SetOriginSignature(refstest.GenerateSignature(empty)) 72 73 if withOrigin { 74 m.SetOrigin(generateResponseVerificationHeader(empty, false)) 75 } 76 77 return m 78 } 79 80 func GenerateResponseMetaHeader(empty bool) *session.ResponseMetaHeader { 81 return generateResponseMetaHeader(empty, true) 82 } 83 84 func generateResponseMetaHeader(empty, withOrigin bool) *session.ResponseMetaHeader { 85 m := new(session.ResponseMetaHeader) 86 87 if !empty { 88 m.SetEpoch(13) 89 m.SetTTL(100) 90 } 91 92 m.SetXHeaders(GenerateXHeaders(empty)) 93 m.SetVersion(refstest.GenerateVersion(empty)) 94 m.SetStatus(statustest.Status(empty)) 95 96 if withOrigin { 97 m.SetOrigin(generateResponseMetaHeader(empty, false)) 98 } 99 100 return m 101 } 102 103 func GenerateRequestVerificationHeader(empty bool) *session.RequestVerificationHeader { 104 return generateRequestVerificationHeader(empty, true) 105 } 106 107 func generateRequestVerificationHeader(empty, withOrigin bool) *session.RequestVerificationHeader { 108 m := new(session.RequestVerificationHeader) 109 110 if !empty { 111 m.SetBodySignature(refstest.GenerateSignature(false)) 112 } 113 114 m.SetMetaSignature(refstest.GenerateSignature(empty)) 115 m.SetOriginSignature(refstest.GenerateSignature(empty)) 116 117 if withOrigin { 118 m.SetOrigin(generateRequestVerificationHeader(empty, false)) 119 } 120 121 return m 122 } 123 124 func GenerateRequestMetaHeader(empty bool) *session.RequestMetaHeader { 125 return generateRequestMetaHeader(empty, true) 126 } 127 128 func generateRequestMetaHeader(empty, withOrigin bool) *session.RequestMetaHeader { 129 m := new(session.RequestMetaHeader) 130 131 if !empty { 132 m.SetEpoch(13) 133 m.SetTTL(100) 134 m.SetNetworkMagic(1337) 135 } 136 137 m.SetXHeaders(GenerateXHeaders(empty)) 138 m.SetVersion(refstest.GenerateVersion(empty)) 139 m.SetSessionToken(GenerateSessionToken(empty)) 140 m.SetBearerToken(acltest.GenerateBearerToken(empty)) 141 142 if withOrigin { 143 m.SetOrigin(generateRequestMetaHeader(empty, false)) 144 } 145 146 return m 147 } 148 149 func GenerateSessionToken(empty bool) *session.Token { 150 m := new(session.Token) 151 152 if !empty { 153 m.SetBody(GenerateSessionTokenBody(false)) 154 } 155 156 m.SetSignature(refstest.GenerateSignature(empty)) 157 158 return m 159 } 160 161 func GenerateSessionTokenBody(empty bool) *session.TokenBody { 162 m := new(session.TokenBody) 163 164 if !empty { 165 m.SetID([]byte{1}) 166 m.SetSessionKey([]byte{2}) 167 m.SetOwnerID(refstest.GenerateOwnerID(false)) 168 m.SetLifetime(GenerateTokenLifetime(false)) 169 170 switch random.Uint32(2) { 171 case 0: 172 m.SetContext(GenerateObjectSessionContext(false)) 173 case 1: 174 m.SetContext(GenerateContainerSessionContext(false)) 175 } 176 } 177 178 return m 179 } 180 181 func GenerateTokenLifetime(empty bool) *session.TokenLifetime { 182 m := new(session.TokenLifetime) 183 184 if !empty { 185 m.SetExp(1) 186 m.SetIat(2) 187 m.SetExp(3) 188 } 189 190 return m 191 } 192 193 func GenerateObjectSessionContext(empty bool) *session.ObjectSessionContext { 194 m := new(session.ObjectSessionContext) 195 196 if !empty { 197 m.SetVerb(session.ObjectVerbHead) 198 m.SetTarget(refstest.GenerateContainerID(false), refstest.GenerateObjectIDs(false)...) 199 } 200 201 return m 202 } 203 204 func GenerateContainerSessionContext(empty bool) *session.ContainerSessionContext { 205 m := new(session.ContainerSessionContext) 206 207 if !empty { 208 m.SetVerb(session.ContainerVerbDelete) 209 m.SetWildcard(true) 210 m.SetContainerID(refstest.GenerateContainerID(false)) 211 } 212 213 return m 214 } 215 216 func GenerateXHeader(empty bool) *session.XHeader { 217 m := new(session.XHeader) 218 219 if !empty { 220 m.SetKey("key") 221 m.SetValue("val") 222 } 223 224 return m 225 } 226 227 func GenerateXHeaders(empty bool) []session.XHeader { 228 var xs []session.XHeader 229 230 if !empty { 231 xs = append(xs, 232 *GenerateXHeader(false), 233 *GenerateXHeader(false), 234 ) 235 } 236 237 return xs 238 }