text: # -*- coding: utf-8 -*-
  # MinIO Python Library for Amazon S3 Compatible Cloud Storage,
  # (C) 2015, 2016 MinIO, Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  from unittest import TestCase
  
  from minio import xml
  from minio.commonconfig import ENABLED, Filter
  from minio.lifecycleconfig import Expiration, LifecycleConfig, Rule, Transition
  
  
  class LifecycleConfigTest(TestCase):
      def test_config(self):
          config = LifecycleConfig(
              [
                  Rule(
                      ENABLED,
                      rule_filter=Filter(prefix="documents/"),
                      rule_id="rule1",
                      transition=Transition(days=30, storage_class="GLACIER"),
                  ),
                  Rule(
                      ENABLED,
                      rule_filter=Filter(prefix="logs/"),
                      rule_id="rule2",
                      expiration=Expiration(days=365),
                  ),
              ],
          )
          xml.marshal(config)
  
          config = LifecycleConfig(
              [
                  Rule(
                      ENABLED,
                      rule_filter=Filter(prefix=""),
                      rule_id="rule",
                      expiration=Expiration(days=365),
                  ),
              ],
          )
          xml.marshal(config)
  
          config = xml.unmarshal(
              LifecycleConfig,
              """<LifeCycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Rule>
      <ID>DeleteAfterBecomingNonCurrent</ID>
      <Filter>
         <Prefix>logs/</Prefix>
      </Filter>
      <Status>Enabled</Status>
      <NoncurrentVersionExpiration>
        <NoncurrentDays>100</NoncurrentDays>
      </NoncurrentVersionExpiration>
    </Rule>
    <Rule>
      <ID>TransitionAfterBecomingNonCurrent</ID>
      <Filter>
         <Prefix>documents/</Prefix>
      </Filter>
      <Status>Enabled</Status>
      <NoncurrentVersionTransition>
        <NoncurrentDays>30</NoncurrentDays>
        <StorageClass>GLACIER</StorageClass>
      </NoncurrentVersionTransition>
    </Rule>
  </LifeCycleConfiguration>""",
          )
          xml.marshal(config)
  
          config = xml.unmarshal(
              LifecycleConfig,
              """<LifeCycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Rule>
      <ID>DeleteAfterBecomingNonCurrent</ID>
      <Filter>
         <Prefix></Prefix>
      </Filter>
      <Status>Enabled</Status>
      <NoncurrentVersionExpiration>
        <NoncurrentDays>100</NoncurrentDays>
      </NoncurrentVersionExpiration>
    </Rule>
  </LifeCycleConfiguration>""",
          )
          xml.marshal(config)
  